使用Lambda从外部s3存储桶下载文件

时间:2019-04-03 13:28:25

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

我想使用lambda从外部s3帐户下载备份文件。我有访问密钥ID,秘密访问密钥,存储桶名称和区域名称。然后将其与我的私有s3存储桶同步。 可能吗?又如何?

1 个答案:

答案 0 :(得分:0)

您的要求似乎是:

  • Bucket-A的{​​{1}}中存储数据
  • 将其复制到Account-A中的Bucket-B

最简单的方法是使用Account-B命令,因为它可以直接在存储区之间(甚至在区域之间!)传输数据,而无需下载和上传。

为此,您将需要一组凭据,这些凭据对CopyObject()具有读取权限,对Bucket-A具有写入权限。可以是:

  • Bucket-B中的IAM User-A可以读取Account-A,并且Bucket-A上的存储桶策略允许Bucket-B写入User-A OR
  • Bucket-B中的一个IAM User-B可以写入Account-B,而Bucket-B上的存储桶策略允许对Bucket-A的读取访问

使用存储桶策略意味着一组凭证可以同时使用User-B命令来读取和写入。否则,您将需要使用一组凭据来下载对象,而使用另一组凭据来上传对象。那不是一个聪明的方法。

请参阅:Provide Cross-Account Access to Objects In S3 Buckets

运行复制命令的最简单方法是使用AWS Command-Line Interface (CLI) CopyObject()aws s3 cp命令。在您的情况下,如果您希望同步文件的内容,则可以使用aws s3 sync

最后一个选择是使用Cross-Region Replication - Amazon Simple Storage Service,但这仅适用于不同区域中的存储桶。这些存储桶可以属于不同的AWS账户。