AWS CDK:如何将资源部署到不同的帐户?

时间:2020-02-22 11:11:25

标签: amazon-web-services aws-cdk

是否可以使用CDK将资源部署到两个不同的AWS账户?

作为一个简单的示例,想象一下需要链接到帐户accountAaccountB的2个链接资源(也许有2个不同的IAM角色)。它们是链接在一起的,因此它们的生命周期应该联系在一起(即它们是同时创建和销毁的,而我不必运行两个部署操作)。我希望能够在部署时指定资源的位置,而不是在合成时指定。

使用Terraform(通过两个不同的provisioner定义)可以轻松实现此要求。如何使用CDK做到这一点?可以在单个堆栈中实现此目标,还是在CDK模型中为每个目标帐户创建一个堆栈?一个简单的例子是什么样的?

1 个答案:

答案 0 :(得分:2)

是的,这是可能的。您需要传递环境配置对象来堆叠道具。

来自文档:

AWS CDK应用程序中的每个Stack实例都是显式或隐式的 与环境(env)相关联。环境是目标AWS 帐户和堆栈打算放入的AWS区域 部署。

用法:

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

new MyFirstStack(app, 'first-stack-us', { env: envUSA, encryption: false });
new MyFirstStack(app, 'first-stack-eu', { env: envEU, encryption: true  });

更多信息here

如果要在同一堆栈中将2个不同的资源部署到2个不同的帐户,目前尚不支持。 您需要为每种资源创建不同的堆栈,并相应地传递环境对象。