是否可以使用CDK将资源部署到两个不同的AWS帐户?
举个简单的例子,想象两个链接的资源(可能是两个不同的IAM角色),需要部署到帐户帐户A
和帐户B
。它们是链接的,所以它们的生命周期应该联系在一起(即它们同时创建和销毁,我不应该运行两个部署操作)。我希望能够在部署时指定资源的去向,而不是在合成时。
使用Terraform(通过两个不同的供应器
定义)可以轻松实现此要求。如何使用CDK实现此要求?这可以在单个堆栈中实现,还是CDK模型是每个目标账号一个堆栈?一个简单的示例是什么样子的?
是的,这是可能的。您需要将环境配置对象传递给堆栈props。
从文档:
AWSCDK应用中的每个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 });
更多信息在这里。
如果您想将同一堆栈中的2个不同资源部署到2个不同的帐户,则尚不支持。您需要为每个资源创建不同的堆栈并相应地传递环境对象。