【问题标题】:Syncing files over different accounts buckets通过不同的帐户存储桶同步文件
【发布时间】:2021-02-16 04:51:06
【问题描述】:

我正在尝试跨不同的 iam 帐户将一个 aws 存储桶同步到另一个存储桶。 如何定期执行此操作,以便写入源存储桶的任何文件都会自动转换到目标?我需要使用 lambdas 来执行 aws cli sync 命令吗?

谢谢

【问题讨论】:

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


    【解决方案1】:

    选项 1:AWS CLI 同步

    您可以定期运行aws s3 sync,它只会复制新的/更改的文件。这使它非常有效。但是,如果有大量文件(超过 10,000 个),则需要很长时间才能确定需要复制哪些文件。您还需要安排命令在某处运行(例如 cron 作业)。

    选项 2:AWS Lambda 函数

    您可以创建一个 AWS Lambda 函数,该函数在创建新对象时由 Amazon S3 触发。 Lambda 函数将通过 event 参数传递存储桶和对象的详细信息。然后,Lambda 函数可以调用CopyObject()立即复制对象。这种方法的优点是对象一被创建就被复制。

    不要使用 AWS Lambda 函数来调用 AWS CLI。上述函数将分别为每个文件调用。)

    选项 3:Amazon S3 复制

    您可以将Amazon S3 Replication 配置为自动在存储桶之间复制新创建的对象(包括不同AWS 账户之间的存储桶)。这是最简单的选项,因为它不需要任何编码。

    权限

    在账户之间复制 S3 对象时,您需要使用一组凭据,该凭据集对源存储桶具有读取权限,对目标存储桶具有写入权限。这可以通过两种方式完成:

    • 使用源账户中有权读取源存储桶的凭证(IAM 用户或 IAM 角色)。在目标存储桶上创建一个存储桶策略,允许这些凭据将PutObject 放入存储桶。复制时,指定ACL=public-read 将对象所有权授予目标帐户。

    • 使用目标帐户中有权写入目标存储桶的凭据。在源存储桶上创建一个存储桶策略,允许来自存储桶的GetObject 凭据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-13
      • 2021-03-07
      • 1970-01-01
      相关资源
      最近更新 更多