AWS CDKでcdk.jsonのコンテキスト(context)を使用する方法

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(デフォルト値)が入ります。

参考サイト

Save and retrieve context variable values - AWS Cloud Development Kit (AWS CDK) v2
You can specify context variables with the AWS Cloud Development Kit (AWS CDK) CLI or in the cdk.json file. Then, use th...

コメント

株式会社CONFRAGE ITソリューション事業部をもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む

タイトルとURLをコピーしました