如何描述 cloudformation 跨帐户堆栈信息/名称/详细信息

Posted

技术标签:

【中文标题】如何描述 cloudformation 跨帐户堆栈信息/名称/详细信息【英文标题】:how to describe cloudformation cross account stack info/name/details 【发布时间】:2021-06-28 10:53:53 【问题描述】:

我们有 2 个 aws 帐户。现在我们尝试将我们的 prod 环境资源迁移到另一个 aws 帐户。我们在账户 A 中设置了管道,它将在账户 B 中部署资源。 我们的 AWS 基础设施堆栈已在账户 B 中可用,当从账户 A 在 cmd 下运行时,我们遇到以下错误:-

cmd:- aws cloudformation describe-stacks --stack-name prod-gateway

错误:- 调用 DescribeStacks 操作时发生错误(ValidationError):ID 为 prod-gateway 的堆栈不存在

这是一个有效错误,因为我们正在尝试从账户 A 获取账户 B 堆栈信息,而堆栈在 acc A 中不存在。

所以问题是我可以从账户 A 描述账户 B 的堆栈信息吗?有没有跨账户的cmd来实现这个?

【问题讨论】:

【参考方案1】:

所以问题是我可以从账户 A 描述账户 B 的堆栈信息吗?有没有跨账户的cmd来实现这个?

您使用必须设置的cross-account roles 角色。简而言之:

在 accB 中,您可以创建一个允许描述其堆栈的角色。角色的推力关系允许 accA 承担角色。 在 accA 中,您使用 assume-role 来承担 accB 的角色。这将为您提供新的临时 AWS 凭证。 accB 中的 IAM 角色/用户必须具有代入该角色的权限。 在 accA 中,使用临时凭据,您可以针对 accB 执行 aws cloudformation describe-stacks

【讨论】:

感谢 Marcin 的回复。在我的 cross-acc-B 角色中,我已经为 codepipeline/codebuild/accA 配置了信任关系,并且该角色拥有 s3、ecr、cloudfoamtion、kms、codebuild 的所有权限。在 accA codebuild/codepipeline 角色中,假设角色已配置,但如何生成此临时 AWS 凭证? @PareshSahoo 不确定是哪个codepipeline/codebuild/accA?您的问题没有提供任何细节,甚至没有提及这些服务。如果是新问题,我建议提出新问题。

以上是关于如何描述 cloudformation 跨帐户堆栈信息/名称/详细信息的主要内容,如果未能解决你的问题,请参考以下文章

通过 CloudFormation CLi 跨账户 S3 访问

如何知道 sam/cloudformation 堆栈 lambda 正在执行啥

如何使用 Cloudformation 向 OpsWorks 堆栈注册 RDS 实例?

AWS CDK:如何在同一应用程序中引用跨堆栈资源?

AWS Amplify:如何重新创建手动删除的 CloudFormation 堆栈

CloudFormation - 永久删除堆栈