是否可以使用CDK将资源部署到两个不同的AWS帐户?
作为一个简单的例子,想象两个链接的资源(可能是两个不同的IAM角色(,需要部署到帐户accountA
和accountB
。它们是链接的,所以它们的生命周期应该联系在一起(即,它们是同时创建和销毁的,我不应该运行两个部署操作(。我希望能够在部署时指定资源的去向,而不是在合成时。
使用Terraform(通过两种不同的provisioner
定义(可以很容易地实现这一要求。如何使用CDK实现这一点?这可以在单个堆栈内实现吗?还是CDK模型是每个目标帐户一个堆栈?一个简单的例子是什么样子的?
是的,这是可能的。您需要将环境配置对象传递给堆栈道具。
来自文档:
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 });
点击此处了解更多信息。
如果您想将同一堆栈中的两个不同资源部署到两个不同的帐户,则目前还不支持这种做法。您需要为每个资源创建不同的堆栈,并相应地传递环境对象。