実践!AWS CDK #24 デバッグ
はじめに
今更ながら、CDK におけるデバッグの方法を紹介します。
前回の記事はこちら。
2 つの方法
今回説明する方法は以下の 2 つです。
cdk synth
コマンドでログを出力する- VS Code のデバッガを使う
それぞれ説明していきます。
cdk synth コマンドでログを出力する
こちらは console.log()
メソッドを利用して、出力したいログをターミナルで確認する方法です。
既存のコードに以下の行を追加します。
~ 省略 ~ export class DevioStack extends cdk.Stack { constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) { super(scope, id, props); // VPC const vpc = new Vpc(); vpc.createResources(this); // Subnet const subnet = new Subnet(vpc.vpc); subnet.createResources(this); console.log(`subnet.public1a.cidrBlock = ${subnet.public1a.cidrBlock}`); // Internet Gateway const internetGateway = new InternetGateway(vpc.vpc); internetGateway.createResources(this); ~ 省略 ~
subnet.public1a
オブジェクト(CfnSubnet クラスのインスタンス)の cidrBlock
プロパティをログ出力するプログラムです。
この状態で cdk synth
コマンドを実行します。
$ cdk synth subnet.public1a.cidrBlock = 10.0.11.0/24 Resources: Vpc: Type: AWS::EC2::VPC Properties: CidrBlock: 10.0.0.0/16 Tags: - Key: Name Value: devio-stg-vpc ~ 省略 ~
このように目的のログが テンプレート出力の前 に表示されます。(4 行目以降がテンプレート出力)
ログだけを出力したい場合は --quiet
オプションを付けてください。テンプレートは出力されません。
$ cdk synth --quiet subnet.public1a.cidrBlock = 10.0.11.0/24
cdk synthesize [STACKS..]
Synthesizes and prints the CloudFormation template for this stack
Options:
-q, --quiet Do not output CloudFormation Template to stdout [boolean] [default: false]
以上が 1 つ目の方法です。
VS Code のデバッガを使う
こちらは IDE のデバッガを利用する方法です。
VS Code でデバッグを有効化するには launch.json
というファイルを作成する必要があります。
手順
1.CDK プロジェクトのエントリポイントファイル(ここでは bin/devio.ts
)を選択します
2.サイドバーにある Run and Debug
アイコンをクリックします
3.左側の領域で create a launch.json file
をクリックします
4.環境の選択で Node.js
を指定します
※現在の環境によって同じ項目が複数表示されることがありますが、適当に選んでみてください
5.launch.json
が自動生成されます
※ program
部分のファイルパスが手順 1 で選択したファイルとなります(選択したファイルを間違えた場合はここを書き換えても OK です)
6.name
の値を好きなものに変更することもできます
7.任意の箇所にブレイクポイントを設置します
8.ソースコードをビルドします
$ npm run build
重要な作業です。ソースコードを変更した際はデバッグ実行前に必ずビルドしてください。そうしないと意図したブレイクポイントでデバッガが停止しないことがあります。
$ npm run watch
でプロジェクトディレクトリを監視している場合、ビルドは不要です。
9.デバッグを実行します
10.ブレイクポイントで止まります
11.好きな値を確認します
画面上のビューからデバッグ操作を実行できます。
左から
Continue
Step Over
Step Into
Step Out
Restart
Stop
です。
以上が方法 2 つ目の VS Code デバッガ利用手順でした。
GitHub
今回のソースコードは コチラ です。
おわりに
CDK は CFn のテンプレートを出力するという割と単純な処理を行うものなので、もしかしたら深いデバッグは不要かもしれません。(テンプレートを出力して確認すればいいので)
たまに発生する原因不明のエラーや、テンプレートを見ても意図した値になっていない場合などはこれらの方法でデバッグしてみてください。