簡體   English   中英

如何使用 AWS CDK 在多個區域部署相同的堆棧

[英]How to deploy the same stack across multiple regions using AWS CDK

我是AWS CDK的新手。 看起來我們可以cdk bootstrap並提供多個區域:

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

這會在部署堆棧所需的每個區域中創建存儲桶和角色(我們稱之為TestStack )。

我想做的是在每個區域部署相同的堆棧(又名TestStack )。 這可以通過單個cdk deploy命令實現嗎?

所以我嘗試了這個,它對我有用,在這個例子中,我在 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"
]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM