AWS CDKでcdk.jsonのコンテキスト(context)を使用する方法
AWS CDKでは、開発環境ごとに異なる設定値をcdk.jsonのコンテキスト(context)で設定することができます。
cdk.json(contextキー部分のみ抜粋)
"context": {
"@aws-cdk/aws-apigateway:usagePlanKeyOrderInsensitiveId": true,
"@aws-cdk/core:stackRelativeExports": true,
// 省略
"@aws-cdk/core:target-partitions": [
"aws",
"aws-cn"
],
// 設定値追加 start
"target": "dev",
"dev": {
"instanceType": { // EC2インスタンス設定(dev)
"instanceClass": "t2",
"instanceSize": "micro"
}
},
"prod": {
"instanceType": { // EC2インスタンス設定(prod)
"instanceClass": "t3",
"instanceSize": "medium"
}
}
// 設定値追加 end
}
// 以下省略
lib配下のts修正
constructor内の場合、コンテキストで指定した値は以下のように取得することができます。
import { Stack, StackProps, aws_lambda_nodejs as lambda, Duration } from 'aws-cdk-lib';
import * as ec2 from 'aws-cdk-lib/aws-ec2';
import { Construct } from 'constructs';
export class Sample001Stack extends Stack {
constructor(scope: Construct, id: string, props?: StackProps) {
super(scope, id, props);
const target = this.node.tryGetContext('target'); // 設定値取得 dev or prod
const env = this.node.tryGetContext(target); // devならその値を取得
const instanceClass = env.instanceType.instanceClass
const instanceSize = env.instanceType.instanceSize
// 省略
デプロイする際に-cオプションでkey=valueを指定すると設定値が変更されます。
cdk deploy -c target=prod
このようにデプロイすればprodに変更されます。
cdk deploy
このようにデプロイすればtargetにはdev(デフォルト値)が入ります。
参考サイト
AWS Cloud Development Kit (AWS CDK) v2

KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES20xx),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^


コメント