热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

无法将文件下载到AWSLambda

我有一个下载文件的 AWS Lambda 函数。我已经读到我可以写入的唯一目录是/tmp目录,但是我仍然收到此错误。[ERROR] OSError: [Errno 30] Read-only file

我有一个下载文件的 AWS Lambda 函数。我已经读到我可以写入的唯一目录是/tmp目录,但是我仍然收到此错误。

[ERROR] OSError: [Errno 30] Read-only file system: '/home/sbx_user1051'
Traceback (most recent call last):
  File "/var/lang/lib/python3.8/imp.py", line 234, in load_module
    return load_source(name, filename, file)
  File "/var/lang/lib/python3.8/imp.py", line 171, in load_source
    module = _load(spec)
  File "", line 702, in _load
  File "", line 671, in _load_unlocked
  File "", line 783, in exec_module
  File "", line 219, in _call_with_frames_removed
  File "/var/task/lambda_function.py", line 9, in
    from kaggle.api.kaggle_api_extended import KaggleApi
  File "/var/task/kaggle/__init__.py", line 19, in
    from kaggle.api.kaggle_api_extended import KaggleApi
  File "/var/task/kaggle/api/__init__.py", line 22, in
    from kaggle.api.kaggle_api_extended import KaggleApi
  File "/var/task/kaggle/api/kaggle_api_extended.py", line 84, in
    class KaggleApi(KaggleApi):
  File "/var/task/kaggle/api/kaggle_api_extended.py", line 102, in KaggleApi
    os.makedirs(config_dir)
  File "/var/lang/lib/python3.8/os.py", line 213, in makedirs
    makedirs(head, exist_ok=exist_ok)
  File "/var/lang/lib/python3.8/os.py", line 223, in makedirs
    mkdir(name, mode)

这是产生错误的代码:

from kaggle.api.kaggle_api_extended import KaggleApi
def lambda_handler(event, context):
api = KaggleApi()
api.authenticate()
api.dataset_download_file(
"gpreda/covid-world-vaccination-progress",
"country_vaccinations.csv",
"/tmp",
)
return {"statusCode": 400, "body": bucket}

回答


正如@joran 所指出的,导入试图创建一些配置目录

config_dir = os.environ.get('KAGGLE_CONFIG_DIR') or os.path.join(
expanduser('~'), '.kaggle')
if not os.path.exists(config_dir):
os.makedirs(config_dir)

您可以使用 AWS Lambda 环境变量设置环境变量,或者在这种情况下,您可以直接指向它,/tmp/ 因为这是唯一可供您编写任何内容的目录。

对应的代码

从文档来看,您似乎只需要配置凭证,您可以将其放入AWS Parameter Store并在您的 lambda 中获取它们。

Kaggale API 凭证

export KAGGLE_USERNAME=datadinosaur
export KAGGLE_KEY=xxxxxxxxxxxxxx

获取并导出凭据后,您可以为 API 添加导入语句。

或者,如果您足够冒险,可以稍微修改代码并尝试创建一个Configuration类对象,最终在初始化中使用它

self.username = ""
# Password for HTTP basic authentication
self.password = ""

配置类



  • its probably important to note this step must happen prior to the import





推荐阅读
  • 本文探讨了Node.js Cluster模块在多核CPU环境下的应用及其性能测试。通过安装`async`包并利用Node.js自带的`http`和`cluster`模块,创建了一个名为`cluster.js`的文件,该文件根据系统CPU核心数动态生成多个工作进程,以实现负载均衡和提高应用性能。实验结果表明,使用Cluster模块能够显著提升高并发场景下的响应速度和处理能力。 ... [详细]
  • 在 CentOS 7 上部署和配置 RabbitMQ 消息队列系统时,首先需要安装 Erlang,因为 RabbitMQ 是基于 Erlang 语言开发的。具体步骤包括:安装必要的依赖项,下载 Erlang 源码包(可能需要一些时间,请耐心等待),解压源码包,解决可能出现的错误,验证安装是否成功,并将 Erlang 添加到环境变量中。接下来,下载 RabbitMQ 的 tar.xz 压缩包,并进行解压和安装。确保每一步都按顺序执行,以保证系统的稳定性和可靠性。 ... [详细]
  • 在处理大文件上传时,服务端为何无法直接接收?这主要与 PHP 配置文件 `php.ini` 中的几个关键参数有关,如 `upload_max_filesize` 和 `post_max_size`。这些参数分别限制了单个文件的最大上传大小和整个 POST 请求的数据量。为了实现大文件的高效上传,可以通过文件分割与分片上传的方法来解决。本文将详细介绍这一实现方法,并提供相应的代码示例,帮助开发者更好地理解和应用这一技术。 ... [详细]
  • 深入解析 React-Redux 源代码中的 connectAdvanced.js 文件
    总结: React-redux最外层都会用Provider包裹,如下在执行connect(mapStateToProps,mapDispatchToPr ... [详细]
  • 原标题:vue+element_ui上传文件,并传递额外参数需求:文件大小验证文件类型验证额外参 ... [详细]
  • 本文深入探讨了Windows操作系统中线程同步机制的关键技术,重点分析了`WaitForSingleObject`和`Event`的使用方法及其应用场景。通过详细介绍`CreateEvent`函数的创建过程及其在判断线程退出和实现线程间同步中的重要作用,结合具体实例,展示了如何高效地利用这些工具来解决多线程编程中的常见问题。此外,文章还讨论了这些机制在实际开发中的最佳实践和注意事项,为开发者提供了宝贵的参考。 ... [详细]
  • 本文深入解析了HTML表格与表单元素,特别是图像映射技术的应用。详细介绍了如何利用 `` 标签实现内容的行列对齐,并探讨了 HTML4 中 Flash 的引入及其在网页设计中的应用。通过实例展示了 `` 标签的使用方法,帮助开发者更好地理解和掌握这些核心元素。 ... [详细]
  • 本文探讨了在 SQL 中将中文字符转换为拼音首字母的有效方法和技巧。通过使用特定的函数和算法,可以实现中文名称的快速拼音首字母提取,从而提高数据处理的效率和准确性。文中还提供了具体的示例和代码片段,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 本文介绍了如何利用摄像头捕捉图像,并将捕获的图像数据保存为文件。通过详细的代码示例,展示了摄像头调用的具体实现方法,适用于多种应用场景,如安全监控、图像处理等。 ... [详细]
  • 本文旨在构建一个JavaScript函数,用于对用户输入的电子邮件地址和密码进行有效性验证。该函数将确保输入符合标准格式,并检查密码强度,以提升用户账户的安全性。通过集成正则表达式和条件判断语句,该方法能够有效防止常见的输入错误,同时提供即时反馈,改善用户体验。 ... [详细]
  • Phoenix 使用体验分享与深度解析
    闲来无事看了下hbase方面的东西,发现还好理解不过不大习惯于是找到个phoenix感觉不错性能指标如下好像还不错了准备工作:启动hadoop集群启动zookkeeper启动hba ... [详细]
  • #region批量插入数据批量插入收集库件级文书档案信息实体(批量)数据表publicintBulkInsert(DataTabletable){intinsertCount0;t ... [详细]
  • 使用read_html爬取网页表哥,简单又强大的pandas爬虫 利用pandas库的read_html()方法爬取网页表格型数据...
    一、简介一般的爬虫套路无非是发送请求、获取响应、解析网页、提取数据、保存数据等步骤。构造请求主要用到requests库,定位提取数据用的比较多的有xpath和正则匹配 ... [详细]
  • 编写基于jQuery的插件的方法
    注意:jQuery中有一个extend的方法,这个方法是添加js对象字段的,下面会多次用到1:添加全局类的方法常用的ajax ... [详细]
  • 浅谈Bootstrap table中父子表和行列调序的用法
    web前端|js教程bootstraptableweb前端-js教程本篇文章结合Bootstraptable的父子表和行列调序的用法,再来介绍下它稍微高级点的用法织梦文库源码,ub ... [详细]
author-avatar
mobiledu2502857983
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有