【问题标题】:How to create lambda boto3 function to create cloudformation stack in another Aws account如何创建 lambda boto3 函数以在另一个 Aws 帐户中创建 cloudformation 堆栈
【发布时间】:2021-03-25 13:39:11
【问题描述】:

我想创建一个 lambda 函数,该函数可以在另一个 Aws 帐户中创建 cloudformation 堆栈并从 S3 存储桶中获取模板 来源帐号。

【问题讨论】:

  • 有什么问题,特别是错误?您当前的代码是什么,为什么它不起作用?
  • 尝试分解它。您需要生成一个 CFN 模板并将其保存在源账户 S3 中,然后您需要设置一个跨账户来在两个账户之间复制文件,然后在目标账户上您将触发 Lambda 创建CFN 模板。您要做的是将 CFN 放入 S3 存储桶并通过 URL 调用 Lambda 以在目标帐户上执行并复制 S3 文件并执行 CFN 模板。
  • @JeremyThompson 我已经准备好 cfn 模板,但我不知道如何使用 boto3 在 lambda 中编写完整的代码。你能帮我提供完整的 lambda 代码吗?

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


【解决方案1】:

AWS CloudFormation 只能从将部署资源的 AWS 账户运行。

因此,Account-A 中的 AWS Lambda 函数需要:

  • 就账户 B 中的 IAM 角色调用 AssumeRole(),这将为账户 B 提供临时凭证
  • 使用这些临时凭证调用 CreateStack() 在 Account-B 中创建 CloudFormation 堆栈

用于创建堆栈的模板文件可以作为CreateStack() 调用的一部分传递,也可以通过 AmazonS3 URL 引用。如果模板来自 Account-A,则 S3 存储桶需要使 Account-B 可以访问该对象(例如,通过存储桶策略或 ACL)。

参考:https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_cross-account-with-roles.html

【讨论】:

猜你喜欢
  • 2019-05-19
  • 2021-05-11
  • 2018-10-01
  • 1970-01-01
  • 2016-07-17
  • 2017-05-07
  • 2021-06-29
  • 1970-01-01
  • 2018-01-13
相关资源
最近更新 更多