【问题标题】:How to upload downloaded file to s3 bucket using Lambda function如何使用 Lambda 函数将下载的文件上传到 s3 存储桶
【发布时间】:2019-12-20 17:22:43
【问题描述】:

我看到了不同的问题/答案,但找不到适合我的问题/答案。因此,我对 AWS 很陌生,我需要你的帮助。我正在尝试下载 gzip 文件并将其加载到 json 文件中,然后使用 Lambda 函数将其上传到 S3 存储桶。我编写了代码来下载文件并将其转换为 json,但在将其上传到 s3 存储桶时出现问题。假设该文件已准备好为 x.json。那我该怎么办?

我知道这是一个非常基本的问题,但仍然需要帮助 :)

【问题讨论】:

  • 能分享一下你目前写的代码吗?
  • lambda 的文件存储空间有限 (

标签: python-3.x amazon-web-services amazon-s3 aws-lambda


【解决方案1】:

此代码将上传到 Amazon S3:

import boto3

s3_client = boto3.client('s3', region_name='us-west-2')  # Change as appropriate
s3._client.upload_file('/tmp/foo.json', 'my-bucket', 'folder/foo.json')

一些提示:

  • 在 Lambda 函数中,您只能写入 /tmp/
  • 有 512MB 的限制
  • 在函数结束时,删除文件(zip、json 等),因为容器可以重复使用并且您不想耗尽磁盘空间

【讨论】:

【解决方案2】:

如果您的 lambda 具有将文件写入 S3 的适当权限,则只需使用 boto3 包,它是适用于 python 的 AWS 开发工具包。

https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html

请注意,如果 lambda 位于 VPC 内部,则 lambda 无法访问公共互联网,也无法访问 boto3 API 端点。因此,您可能需要一个 NAT 网关来将 lambda 代理给公众。

【讨论】:

    猜你喜欢
    • 2017-09-05
    • 1970-01-01
    • 1970-01-01
    • 2019-09-07
    • 2019-10-26
    • 2017-12-08
    • 2019-02-16
    • 2020-06-22
    • 1970-01-01
    相关资源
    最近更新 更多