DevAx::connect 番外編 AWS CDK 実践勉強会
CDK とは
- AWS の環境を一般のプログラミング言語で記述できるツールキット
- Construct でベストプラクティスを簡潔に
- 一般的な構成は Construct が準備されてる
- Construct Hub を活用: https://constructs.dev/
- IaC 利用率
- CDK 66%, SAM 10%, CloudFormation 7%...
必要ツール
- AWS CLI
aws
コマンドが使えることが前提aws configure
認証情報設定必要
- node
- node v14 以上
- aws-cdk
npm install -g aws-cdk
- 現在は v2.1.0
- v1 のサポートは再来年までなので移行したほうがいい
cdk bootstrap
- CDK を初めて使うリージョンで最初に実行が必要
Live Coding
- CDK v1 は個々のパッケージを入れる必要があったが v2 は含まてる
- alpha とついているα版のみ個別で
npm i
する必要あり
- alpha とついているα版のみ個別で
- Lambda を
NodejsFunction
で作ると TypeScript が使える- 通常の Lambda は JavaScript のみ
- Lambda 外部ライブラリ uuid 追加
npm i uuid @types/uuid
- Lambda だけを更新するなら
hotswap
オプションcdk deploy --hotswap
- CDK のオーバーヘッドがないからすぐに Lambda を変更できる
CDK でもテストを書こう
- CDK v2
aws-cdk-lib/assertions
- 全言語対応
Snapshot Testiong
- 生成された CFn の差分を以前のものと比較
expect(template.toJSON()).toMatchSnapshot()
jest
- 意図した変更なら
jest --updatesnapshot
- 意図した変更なら
Fine-grained Assertions
- 生成された CFn のリソースやアウトプットが期待通りか?
- いわゆる一般的なテスト
- Assertions ライブラリを利用する
- e.g.)
- Function が2つ作成されているか確認する
- DynamoDB のプロパティがただし以下確認する
- IAM Role をコンソール出力して眺める
- e.g.)
所感
CloudFormation 好きだけど、CDK の便利さは素晴らしいと思います。 新しいリソースなど、資産がないものは CDK で楽々構築が早いので、CDK も徐々に使い始めてます。