如何使用AWS CDK在多个区域部署同一堆栈



我是AWS CDK的新手。看起来我们可以cdk bootstrap并提供多个区域:

cdk bootstrap {accountID}/us-east1 {accountID}/us-west1

这将在每个区域中创建部署堆栈所需的存储桶和角色(我们称之为TestStack(。

我想做的是在每个区域部署相同的堆栈(也称为TestStack(。这可以通过单个cdk deploy命令实现吗?

所以我尝试了一下,它对我有效,在这个例子中,我在美国东部-1和北部东部-1地区部署了一个发电机数据库:-

lib/cdk-stackoverflow-stack.ts

import { CfnOutput, Duration, Stack, StackProps,RemovalPolicy } from 'aws-cdk-lib';
import { Construct } from 'constructs';
import { aws_dynamodb as db } from 'aws-cdk-lib' 
export class CdkStackoverflowStack extends Stack {
constructor(scope: Construct, id: string, props?: StackProps) {
super(scope, id, props);

const table = new db.Table(this, 'Table', {
removalPolicy: RemovalPolicy.DESTROY,
partitionKey: { name: 'id', type: db.AttributeType.STRING },
});
}
}

bin/cdk-stackoverflow.ts文件

#!/usr/bin/env node
import * as cdk from 'aws-cdk-lib';
import { CdkStackoverflowStack } from '../lib/cdk-stackoverflow-stack';
const tokyoStack = { region: 'ap-northeast-1' };
const usStack = { region: 'us-east-1' };
const app = new cdk.App();
new CdkStackoverflowStack(app, 'CdkStackoverflowStack1', { env: tokyoStack });
new CdkStackoverflowStack(app, 'CdkStackoverflowStack2', { env: usStack });
  • 启动所有需要部署堆栈的区域cdk bootstrap aws://accountId/us-east-1

  • 然后使用--all选项进行部署,因为它有多个堆栈

用于确认的命令I

aws cloudformation list-stacks 
--query 'StackSummaries[?contains(StackName, `CdkStackoverflowStack`)].StackName' 
--stack-status-filter CREATE_COMPLETE UPDATE_COMPLETE 
--region ap-northeast-1
//output
[

"CdkStackoverflowStack1"
]
aws cloudformation list-stacks 
--query 'StackSummaries[?contains(StackName, `CdkStackoverflowStack`)].StackName' 
--stack-status-filter CREATE_COMPLETE UPDATE_COMPLETE 
--region us-east-1 
//output 
[
"CdkStackoverflowStack2"
]

最新更新