amazon-web-services - 如何使用自定义资源通过 CloudFormation 模板将内容上传到 S3 存储桶?

标签 amazon-web-services amazon-s3 aws-cloudformation aws-cloudformation-custom-resource

对 cloudformation 模板相当陌生,但我希望创建一个模板,在其中创建一个 S3 存储桶,并将内容从另一个帐户(也是我的帐户)的另一个 S3 存储桶导入到该存储桶中。我意识到 CloudFormation 本身并不支持将内容导入到 S3 存储桶中,我必须利用自定义资源。我找不到任何执行此类任务的引用/资源。希望有人能指出一些例子,甚至是一些关于如何解决这个问题的指导。

非常感谢!

最佳答案

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

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

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

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

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

希望这有帮助。

关于amazon-web-services - 如何使用自定义资源通过 CloudFormation 模板将内容上传到 S3 存储桶?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61736975/

相关文章:

objective-c - Swift/Objective S3 文件上传

aws-cloudformation - 我如何强制成功我的代码构建?即使出现错误

ruby-on-rails - Rails 开发环境尝试连接到 AWS 数据库,而不是本地主机的 PostgreSQL

php - 如何将 Amazon s3 用作 Codeigniter 库?

amazon-web-services - AWS API Gateway 搞乱响应 : { "message": "Internal server error" }

parameters - 绕过 AWS CloudFormation 参数允许数量限制的最佳方法是什么?

amazon-web-services - CloudFormation cfn-init 在 Ubuntu 基础上的 AWS::EC2::LaunchTemplate 中中断

php - AWS Route 53 - 通过域名获取托管区域?

python - 使用 Python 请求将图像和元数据上传到公共(public) Amazon S3 存储桶

node.js - 使用 multer-s3 nodejs 将图像上传到亚马逊 s3