首页 > 解决方案 > 使用 lambda 从外部 s3 存储桶下载文件

问题描述

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

标签: amazon-web-servicesamazon-s3aws-lambda

解决方案


看来您的要求是:

  • 获取存储Bucket-AAccount-A
  • Bucket-B将其复制到Account-B

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

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

  • 可以读取User-A的IAM和允许写入的存储桶策略,或者Account-ABucket-ABucket-BUser-ABucket-B
  • 可以写入User-B的IAM和允许读取访问权限的存储桶策略Account-BBucket-BBucket-AUser-B

使用存储桶策略意味着一组凭据可以使用该CopyObject()命令进行读取和写入。否则,您需要使用一组凭据来下载对象并使用另一组凭据来上传对象。这不是一个聪明的方法。

请参阅:提供对 S3 存储桶中对象的跨账户访问

运行复制命令的最简单方法是使用AWS 命令​​行界面 (CLI) aws s3 cpaws s3 sync命令。在您的情况下,如果您希望同步文件的内容,您可以使用aws s3 sync.

最后一个选项是使用跨区域复制 - Amazon Simple Storage Service,但这仅适用于不同区域的存储桶。存储桶可以属于不同的 AWS 账户。


推荐阅读