Help us understand the problem. What is going on with this article?

AWS CDKでステージ別にスタックを作る[スタック分割編]

More than 1 year has passed since last update.
$ cdk --version
0.23.0 (build 1d705e7)

AWS CDKは複数スタックをまとめて定義・デプロイができます。

https://qiita.com/motchi0214/items/cb54d4fd2fc979ae4add

これを応用することで、prod / devのスタックをまとめて定義できます。

import cdk = require('@aws-cdk/cdk');
import sqs = require('@aws-cdk/aws-sqs');

export class TestStack extends cdk.Stack {
  constructor(
    scope: cdk.App,
    id: string,
    stage: string,
    props?: cdk.StackProps
  ) {
    super(scope, id, props);
    new sqs.Queue(this, `ProjdynamoQueue-${stage}`, {
      visibilityTimeoutSec: 300,
    })
  }
}

const app = new cdk.App();
const stages = [
  'production',
  'development'
]
stages.forEach(stage => new TestStack(app, `TestStack-${stage}`, stage))

app.run();

使い所

DynamoDBやCognitoのリソースをステージによって変えている場合に使えます。

注意点

cdk deployすると全スタックがデプロイされます。
「devのつもりがprodもやっちゃった」ということが起きるので、npm run-scriptやCode Pipelineなどを使ってcdk deployをダイレクトに実行しないようにすることをおすすめします。

package.json

{
  "scripts": {
    "build": "tsc",
    "watch": "tsc -w",
    "cdk": "./node_modules/.bin/cdk",
    "deploy-dev": "npm run cdk deploy TestStack-development",
    "deploy-prod": "npm run cdk deploy TestStack-production"
  }
}

追記

context使ったほうが筋が良さそうです。
AWS CDKでステージ別のスタックを作る

motchi0214
AWS Samurai 2017 Alexa Champions
https://wp-kyoto.net
digitalcubeinc
デジタルキューブは AWS Partner Network (APN) アドバンスドテクノロジーパートナーです。
https://ja.amimoto-ami.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away