有一个不同的AWS账户拥有的S3存储桶,其中包含文件列表。我需要将文件复制到我的S3存储桶中。我想执行2件事来做到这一点:
要达到1和2,我必须执行哪些步骤?
答案 0 :(得分:1)
实现这一目标的方法很少。
您可以使用SNS通知和跨帐户IAM来触发lambda。阅读以下内容:cross-account-s3-data-copy-using-lambda-function很好地解释了您要实现的目标。
另一种方法是在存储文件的帐户中部署lambda和所有所需的资源。您需要创建S3通知来触发lambda,该lambda会将文件复制到您的帐户中,或者需要具有cloudwatch时间表(类似于cronjob的位)来触发lambda。
在这种情况下,lambda和触发器必须存在于保存文件的帐户中。
在两种情况下,lambda都必须具有最小的IAM权限,才能读取和写入s3存储桶。为了承担角色而使用STS。您还需要添加Cloudwatch权限才能生成Lambda日志。
其余所需的IAM权限将取决于您将采用的方法。
答案 1 :(得分:1)
有一种无需lambda的简便方法,AWS允许设置S3存储桶的复制(包括跨区域和其他帐户),当您设置复制时,所有新对象都将复制到复制存储桶中,例如使用aws CLI的现有对象只是使用同一存储桶再次复制对象,以便将其复制到目标存储桶,一旦复制了所有现有对象,如果您不明智地复制将来的对象,则可以关闭复制,此处AWS确实繁重的工作:) https://docs.aws.amazon.com/AmazonS3/latest/dev/crr.html
答案 2 :(得分:1)
直接复制文件的基本要求是
复杂的因素是需要跨帐户复制。
两种情况是可能的:
GetObject
访问。确保它使用PutObject
的ACL保存该对象,以便Account-B“拥有”复制的对象。如果可能的话,我建议您使用“推送”选项,因为所有内容都在一个帐户中(除了存储桶策略)。