如何将 AWS CDK 堆栈部署到多个账户?

Joh*_*ohn 6 amazon-web-services aws-cloudformation aws-cdk

AWS CDK 堆栈针对基于环境的账户或区域,详情请点击此处。以下是将一个堆栈部署到多个目标帐户的应用程序示例:

const envEU  = { account: '2383838383', region: 'eu-west-1' };
const envUSA = { account: '8373873873', region: 'us-west-2' };

new MyFirstStack(app, 'first-stack-eu', { env: envEU });
new MyFirstStack(app, 'first-stack-us', { env: envUSA });
Run Code Online (Sandbox Code Playgroud)

我的问题是如何部署这两个堆栈 - 是否可以将它们部署为单个操作?如果是这样,这两个帐户使用了哪些凭据以及需要哪些角色?

理想情况下,我希望能够执行一个命令来跨所有帐户部署所有堆栈:

cdk deploy ...
Run Code Online (Sandbox Code Playgroud)

还是只能通过 2 个步骤进行部署?

cdk deploy first-stack-eu --profile=profile_for_account_2383838383
cdk deploy first-stack-us --profile=profile_for_account_8373873873
Run Code Online (Sandbox Code Playgroud)

Joh*_*ohn 9

我最终使用cdk-assume-role-credential-plugin来执行该任务。该插件的描述指出:

该插件允许 CDK CLI 自动从堆栈的目标 AWS 账户获取 AWS 凭证。这意味着您可以使用一组 AWS 凭证运行单个命令(即 cdk Synth),CLI 将确定每个堆栈的目标 AWS 账户,并通过在账户中承担角色来自动获取目标 AWS 账户的临时凭证。

我在这里编写了有关如何使用此插件使用 CDK 执行 AWS 跨账户部署的详细教程:https: //johntipper.org/aws-cdk-cross-account-deployments-with-cdk-pipelines-and-cdk -假设角色凭据插件/


Mar*_*cin 5

在 cloudformation 中,您可以使用Stack Sets进行多账户和多区域部署。

但是,根据 GitHub 问题,CDK 尚不支持此功能: