AWS CDKによるIaCのテスト戦略|cdk-nagとスナップショットテストで品質を担保する
IaCもアプリケーションコードと同様にテストする文化が求められます。「セキュリティ・ベストプラクティスの静的チェック」「意図しない変更の検知」「デプロイ前の動作確認」の3つの観点でCDKの品質担保を実践的に押さえましょう。
cdk-nagによる静的チェック
CDKアプリケーションにcdk-nagのルールセット(AWS Solutionsなど)を組み込むと、S3バケットの暗号化漏れやIAMポリシーの過剰権限など、合成(synth)時点でベストプラクティス違反を検出できます。組織のセキュリティ基準をコードレビューだけに頼らず機械的に強制したい場合に有効です。
スナップショットテスト
CDKのアサーションライブラリを使い、生成されるCloudFormationテンプレートをスナップショットとして保存し、コード変更時に意図しない差分が生じていないかを自動比較します。リファクタリング時に既存リソースの置換や削除が意図せず発生していないかを早期に検知したい場合に使います。
ユニットテストとパイプラインへの統合
Lambdaのタイムアウト値などリソースのプロパティを個別にアサートするきめ細かいユニットテストを書き、CodePipelineのビルドステージでcdk-nag・スナップショット・ユニットテストを実行してデプロイ前に品質ゲートを設けます。
| 手法 | 検出対象 | 実行タイミング |
|---|---|---|
| cdk-nag | ベストプラクティス違反 | synth時 |
| スナップショットテスト | 意図しないテンプレート差分 | コード変更時 |
| ユニットテスト | 個別プロパティの妥当性 | 実装時・CI実行時 |
チェックリスト
- cdk-nagで検出できる問題の種類を説明できる
- スナップショットテストの目的を理解している
- パイプラインへのテスト組み込み位置を説明できる
- IaCの品質ゲートの設計ができる
IaCの品質もアプリケーションコードと同じ発想でテストすることが問われます。クイズで確認し、詳細はAWS認定 公式ページも参照してください。
DOP(DevOpsエンジニア) におすすめの教材
AWS認定 DevOpsエンジニア − プロフェッショナル DOP-C02 出題予想問題集 第2版
AWS認定 DevOpsエンジニア − プロフェッショナル DOP-C02 練習問題集
AWS認定DOP(DOP-C02)実践問題集(全範囲・225問)
AWS認定DOP 演習テスト(日本語)
本セクションにはAmazonアソシエイト・Udemyアフィリエイトのリンクが含まれます。