amazon-web-services - 如何使用 AWS CDK 跨多个区域部署相同的堆栈

标签 amazon-web-services aws-cloudformation aws-cdk

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

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

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

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

最佳答案

所以我尝试了这个,它对我有用,在这个示例中,我在 us-east-1 和north-east-1 区域部署了 dynamodb :-

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 选项进行部署,因为它有多个堆栈

我用于确认的命令

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"
]

关于amazon-web-services - 如何使用 AWS CDK 跨多个区域部署相同的堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73780913/

相关文章:

amazon-web-services - Terraform 与 A​​PI-Gateway、Route53 和 SSL 认证相互依赖问题

json - cloudformation 模板中的 opsworks 参数和资源

amazon-web-services - 为什么 AWS Cloudformation 中的自定义资源未能在预期时间内稳定下来?

ssl - Chrome 浏览器拒绝通过 HTTPS 连接到 AWS 云前实例

amazon-web-services - AWS CDK : how do I reference cross-stack resources in same app?

amazon-web-services - 使用 CDK 中的默认值填充 dynamodb 表

python - 如何使用 boto3 将文件或数据写入 S3 对象

amazon-web-services - 如何同时运行 EMR 集群步骤?

amazon-web-services - 通过 aws-cdk 的 VPC 对等互连

amazon-web-services - AWS CloudWatch 在开始时间重复触发直到结束时间