AWS CDKでステージ別にスタックを作る を書いてからもっといい方法が見つかったので続報。
$ cdk --version
0.23.0 (build 1d705e7)
Contextを使う
cdk synth
またはcdk deploy
には-c / --context
オプションがつけれます。これを使うことで、ステージやさまざまな値をスタックに流し込めます。
$ npm run build && cdk synth -c stage=development --output output/
Contextの受け取り方
getContext()
メソッドで受け取れます。
const app = new cdk.App();
const stage = app.node.getContext('stage')
new TestStack(app, `TestStack-${stage}`, stage)
app.run();
stack内でも使える様子です。
class TestStack extends cdk.Stack {
constructor(
scope: cdk.App,
id: string,
props?: cdk.StackProps
) {
super(scope, id, props);
const stage = console.log(this.node.getContext('stage'))
new sqs.Queue(this, `ProjdynamoQueue-${stage}`, {
visibilityTimeoutSec: 300,
})
}
}