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

时间:2020-04-29 12:32:17

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

AWS CDK堆栈基于环境,详细信息here定位到帐户或区域。这是一个将一个堆栈部署到多个目标帐户的应用程序示例:

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 });

我的问题是如何部署这两个堆栈-是否可以将其作为单个操作进行部署?如果是这样,则在这两个帐户上使用什么凭据以及需要什么角色?

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

cdk deploy ...

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

cdk deploy first-stack-eu --profile=profile_for_account_2383838383
cdk deploy first-stack-us --profile=profile_for_account_8373873873

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

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

<块引用>

此插件允许 CDK CLI 自动获取 AWS 凭证 来自堆栈的目标 AWS 账户。这意味着您可以运行 带有一组 AWS 凭证的单个命令(即 cdk 合成器),以及 CLI 将确定每个堆栈的目标 AWS 账户和 自动获取目标 AWS 账户的临时凭证 通过在帐户中承担角色。

我在此处编写了有关如何使用此插件使用 CDK 执行 AWS 跨账户部署的详细教程:https://johntipper.org/aws-cdk-cross-account-deployments-with-cdk-pipelines-and-cdk-assume-role-credential-plugin/

答案 2 :(得分:0)

如果您的应用中有多个堆栈,则必须将每个堆栈传递给cdk deploy命令,例如cdk deploy WmStackRouteCertStack004BE231 WmStackUploadStackF8C20A98

我不知道在应用程序中部署所有堆栈的方法,我不喜欢这种行为,这就是我尝试避免创建多个堆栈的原因