LoginSignup
6
4

More than 5 years have passed since last update.

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

Last updated at Posted at 2019-02-08
$ cdk --version
0.23.0 (build 1d705e7)

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

これを応用することで、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でステージ別のスタックを作る

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4