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

AWS CDK: how to deploy resources to different accounts?

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

举个简单的例子,假设有 2 个链接的资源(可能是 2 个不同的 IAM 角色)需要部署到帐户 accountAaccountB。它们是相互关联的,因此它们的生命周期应该捆绑在一起(即它们是同时创建和销毁的,我不应该 运行 两个部署操作)。我希望能够在部署时指定资源的去向,而不是在综合时。

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

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

来自文档:

Each Stack instance in your AWS CDK app is explicitly or implicitly associated with an environment (env). An environment is the target AWS account and AWS Region into which the stack is intended to be deployed.

用法:

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 个不同的帐户,目前尚不支持。 您需要为每个资源创建不同的堆栈并相应地传递环境对象。