$ 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でステージ別のスタックを作る