【问题标题】:Append a file in S3 using Lambda [closed]使用 Lambda 在 S3 中附加文件 [关闭]
【发布时间】:2022-01-25 15:00:31
【问题描述】:

如何使用 lambda 函数在 S3 中创建和附加文件?另外我想将文件大小限制为 5 MB,可以吗?

说,我的 lambda 函数搜索文件,我想保留搜索文件的备份。所以我想在搜索某些内容时附加文件。如果文件大小增加到 5 MB 以上,我想创建一个新文件,该文件可以根据日期命名,然后开始追加。我怎样才能做到这一点?我正在使用 python/boto3。 ——

【问题讨论】:

  • 这能回答你的问题吗? AWS Lambda function write to S3
  • 请编辑您的问题,告诉我们更多关于您的情况。例如,WHY 你想“追加一个文件”吗?如果你想限制文件大小,你会如何处理超过 5MB 的额外数据? Lambda 函数在做什么?
  • 说,我的 lambda 函数搜索文件,我想保留搜索文件的备份。所以我想在搜索某些内容时附加文件。如果文件大小增加到 5 MB 以上,我想创建一个新文件,该文件可以根据日期命名,然后开始追加。我怎样才能做到这一点?我正在使用 python/boto3。

标签: amazon-web-services amazon-s3 aws-lambda


【解决方案1】:

你不能append S3 中的任何文件,因为它是基于“对象”的存储。如果你必须修改一个文件,你必须阅读它,附加它,然后用相同的文件名再次保存它以在 S3 上更新它。有大量关于如何从 lambda 将文件保存到 s3 的博客。这取决于您的技术和框架。

这样的博客之一: https://foobar123.com/serverless-save-a-file-in-s3-using-aws-lamdba-d3f087880dd2

【讨论】:

    【解决方案2】:

    您可以使用 Lambda 函数中的 AWS 开发工具包在 S3 中创建文件。例如,对于 Python,有 boto3

    但是,我认为没有办法直接编辑 S3 对象。

    您可以下载文件、追加和重新上传。虽然这并不理想,因为您不断下载和重新上传。根据用例,您可能需要考虑不涉及附加文件的其他选项。例如,只需创建带有附加行的新对象。

    【讨论】:

    • 如何在现有存储桶中使用 boto3 创建新文件?
    • boto3文档boto3.amazonaws.com/v1/documentation/api/latest/guide/…中有上传文件的例子。
    • 我知道这一点,但我想知道我是否可以创建文件而不是上传文件?
    • 当然。 client.put_object(Body=b"Let's write a file", Bucket="my_bucket_name", Key="hello.log").
    【解决方案3】:

    我不建议使用 lambda 在 S3 中上传文件(负载限制、处理时间...)

    我建议你从 lambda 生成一个预签名的 url 将文件直接上传到 S3,这样做的好处是你可以将文件直接从本地上传到 S3(你可以进行分段上传,Transfert 加速.. .).

    大多数使用 lambdas 上传文件的项目都面临这个限制。

    将 lambda 视为一种快速服务,为您提供要上传的 url,一旦文件上传,您将获得另一个执行处理的 lambda(从对象放置通知触发...)

    【讨论】:

      猜你喜欢
      • 2019-03-01
      • 2017-10-03
      • 2017-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-04
      • 2020-10-23
      • 2020-04-13
      相关资源
      最近更新 更多