繁体   English   中英

Python Boto3 - 如何在进程开始复制到另一个存储桶之前检查s3文件是否完全写入

[英]Python Boto3 - how to check if s3 file is completely written before process start copying to another bucket

如何在进程B开始使用boto3将文件复制到AWS S3 Bucket B之前,确保进程A在AWS S3存储桶A中完全写入大文件(5+ GB)?

如果在Amazon S3中创建新对象,则只会在上载完成后显示。 在完成上传之前,其他进程将无法查看。

在S3中无法更新对象。 相反,它们被替换为新对象。 因此,如果某个对象正在更新,它仍将作为旧对象显示给其他进程。

最好的方法是通过配置Amazon S3事件通知来触发进程B. 上传新对象后,S3可以触发Lambda函数(或发送通知),然后执行第二步。

您绝对应该使用s3事件通知作为lambda函数的触发器,该函数将文件从Bucket A复制到Bucket B.触发器确保在文件完全上载后您的复制将开始。

此外,如果您还有其他操作要执行,您可以使用AWS步骤功能,您可以在其中定义流程的工作流程,例如,流程B将在流程A 2秒后启动,流程C和D将在流程B结束后并行执行它的执行等

我也上传了高达40GB的内容。

由于我进行了多部分上传,因此我会检查我写的文件是否closed 只有在完成所有操作后才会关闭S3文件(对象)。

另一种方法是使用像Celery这样的异步任务队列。 任务完成后,您将收到通知。

我现在使用Golang,但这两种方法对我来说都非常好用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM