【问题标题】:AWS Lambda and Multipart Upload to/from S3AWS Lambda 和多部分上传到/从 S3
【发布时间】:2017-10-14 17:24:01
【问题描述】:

使用 Lambda 将文件从 S3 移动到我们的 Redshift。

使用直接来自数据提供者的 Redshift 的 UNLOAD 命令将数据放置在 S3 中。它有 10 个不同的部分,由于并行运行,有时会在不同的时间完成。

我希望 Lambda 触发器等到所有数据完全上传后再触发触发器以将数据导入我的 Redshift。

Lambda 中有一个名为“完成分段上传”的事件选项。 UNLOAD 函数是否算作 Lambda 中的分段上传?或者在提供者完全上传所有部分之前,不会触发简单的“POST”事件?

没有明确的文档确认 Redshift 的 UNLOAD 命令算作分段上传,或者任何确认在数据提供者的整个上传完成之前触发器不会触发。

【问题讨论】:

    标签: amazon-web-services amazon-s3 file-upload aws-lambda amazon-redshift


    【解决方案1】:

    对于 Amazon S3,分段上传是一个文件,分多个部分上传到 S3。当所有部分都上传完毕后,客户端调用CompleteMultipartUpload。只有客户端调用CompleteMultipartUpload后,文件才会出现在S3中。

    只有在文件完成后才会触发 Lambda 函数。您不会获得每个部分的 Lambda 触发器。

    如果您的UNLOAD 操作在 S3 中生成多个对象/文件,则它不是 S3“分段上传”。

    【讨论】:

    • 谢谢!因此,如果数据来自上传的一组 10 个文件,您如何建议我将触发器设置为在所有 10 个文件都完成之前不启动?我考虑过让他们通过他们的 UNLOAD 关闭并行生成文件,这样当每个文件都完成并上传时,我的导入就会开始。那会有效吗?它似乎不必要地复杂
    • 在所有 10 个都完成之前,您无法抑制 lambda 触发器。您可以做的是在触发最后一个文件之前忽略触发器。
    猜你喜欢
    • 1970-01-01
    • 2018-07-12
    • 1970-01-01
    • 2021-01-19
    • 1970-01-01
    • 2017-09-04
    • 2021-02-28
    • 2021-02-12
    • 2020-03-23
    相关资源
    最近更新 更多