【问题标题】:AWS S3 automated file uploadAWS S3 自动文件上传
【发布时间】:2021-10-24 12:36:25
【问题描述】:

我想自动化在两个 S3 存储桶之间复制文件的过程。

场景:每当相同的文件上传到 S3(第一个存储桶)时,文件的旧版本应该移动到另一个 S3 存储桶(第二个 S3),只有新版本的文件应该驻留在第一个存储桶中。请向我建议这样做的过程

【问题讨论】:

  • 为什么您希望这样做?你会考虑改用Versioning吗?

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


【解决方案1】:

不知道有没有直接的方法,但是想用shell脚本来实现:

aws s3 cp s3://newfile/ s3://backupfile --recursive aws s3 cp /Local/file s3://newfile/ --recursive

【讨论】:

    【解决方案2】:

    当使用与现有对象相同的密钥(文件名)将对象上传到 Amazon S3 时,新对象将覆盖现有对象

    这可以通过在存储桶上激活 Versioning 来避免,这将保留对象的所有版本。因此,如果使用相同的 Key 上传新对象,则旧对象将成为“以前的版本”,并且仍可在 S3 中访问。 (您将支付所有个版本的存储费用。)

    如果您的要求是保留以前版本的对象,那么这应该足以满足您的需要,而无需将旧版本复制到不同的存储桶。

    如果你真的想按照你的要求去做,那么你需要:

    • 版本控制已开启(以保留旧版本)
    • 由上传触发的 AWS Lambda 函数,它将版本复制到不同的存储桶,并可选择删除“旧版本”
    • 另一个上传相同对象时的计划 - 是否应该将其复制到“其他存储桶”并覆盖旧版本已经在那里了吗?它可能也需要版本控制!

    【讨论】:

    • 嗨,约翰,感谢您的回复:)。 python中是否有任何代码可用于仅保留最新版本并将其余所有版本移动到不同的存储桶。
    • 没有自动化的工具可以做到这一点。您需要自己编写代码,如上所述。但是,我重复我的问题,为什么你想这样做?您是否考虑过使用版本控制?
    • 嗨约翰,根据项目的要求,我们不希望旧版本文件位于我们的主文件夹中,这就是我们要将其移动到备份文件夹的原因。
    • 那么根据你项目的需要,你需要自己实现上面的流程。如果您对特定步骤有疑问,欢迎您创建一个包含问题详细信息的新问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-11
    • 1970-01-01
    • 1970-01-01
    • 2020-03-15
    • 2016-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多