omuronの備忘録

個人的な備忘録

「AWS CDK 実践勉強会」 #devaxconnect 受講メモ

DevAx::connect 番外編 AWS CDK 実践勉強会

pages.awscloud.com

CDK とは

  • AWS の環境を一般のプログラミング言語で記述できるツールキット
    • いわゆる IaC にあたり CloudFormation テンプレートを生成
    • 対応言語:TypeScript, Python, Java, .NET
      • エディターの恩恵(補完など)も受けれる
  • Construct でベストプラクティスを簡潔に
  • 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

github.com

  • CDK v1 は個々のパッケージを入れる必要があったが v2 は含まてる
    • alpha とついているα版のみ個別で npm i する必要あり
  • Lambda を NodejsFunction で作ると TypeScript が使える
  • 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 をコンソール出力して眺める

所感

CloudFormation 好きだけど、CDK の便利さは素晴らしいと思います。 新しいリソースなど、資産がないものは CDK で楽々構築が早いので、CDK も徐々に使い始めてます。