0

Fairly new to cloudformation templating but all I am looking to create a template where I create a S3 bucket and import contents into that bucket from another S3 bucket from a different account (that is also mine). I realize CloudFormation does not natively supports importing contents into S3 bucket, and I have to utilize custom resource. I could not find any reference/resources that does such tasks. Hoping someone could point out some examples or maybe even some guidance as to how to tackle this.

Thank you very much!

4

2 回答 2

3

无法提供完整代码,但可以提供一些指导。有几种方法可以做到这一点,但我会列出一种:

  1. 为第二个账户中的存储桶创建存储桶策略。该策略应允许第一个帐户(具有 cfn 的帐户)读取它。有很多资源可以做到这一点。AWS 的一个在这里

  2. 在第一个帐户中创建一个独立的 lambda 函数,执行角色允许它从第二个帐户读取存储桶。这还不是自定义资源。这个 lambda 函数的目的是测试跨账户权限,以及从中读取对象的代码。这就像一个测试功能,用于整理所有权限并完善对象从一个存储桶复制代码到另一个存储桶。

  3. 一旦您的 lambda 函数按预期工作,您可以将其修改(或创建新的)作为 CFN 中的自定义资源。作为自定义资源,它需要将您在 cfn 中新创建的存储桶作为其参数之一。为了更轻松地创建自定义资源,可以使用 此aws 帮助程序。

请注意,lambda 执行超时为15 分钟。根据您拥有的对象数量,可能还不够。

希望这可以帮助。

于 2020-05-11T23:06:32.453 回答
0

如果自定义资源吓到您,那么更简单的方法是使用通过用户数据指定的启动脚本启动 Amazon EC2 实例。

CloudFormation 模板可以通过引用已创建的存储桶资源将新存储桶的名称“插入”到脚本中。然后,该脚本可以运行 AWS CLI 命令来复制文件。

另外,它并不昂贵。一个t3.micro实例大约是 1c/小时,它是每秒收费的,所以它非常接近免费。

于 2020-05-12T03:09:43.970 回答