Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CDKのコードレビューを楽にするパッケージcdk-mentorを作ってみた/cdk-m...

tomoki10
January 17, 2025

 CDKのコードレビューを楽にするパッケージcdk-mentorを作ってみた/cdk-mentor

クラスメソッドのAWS CDK事情大公開スペシャル#2での登壇資料です。
https://classmethod.connpass.com/event/337711/

tomoki10

January 17, 2025
Tweet

More Decks by tomoki10

Other Decks in Technology

Transcript

  1. • 佐藤智樹 • 製造ビジネステクノロジー部 • アーキテクトチーム • JAWS-UG CDK⽀部 運営

    • 好きなもの:孤独のグルメ • 好きなAWSサービス↓ ⾃⼰紹介 3 @tmk2154 @tomoki10 @tomoki10 Lambda CDK
  2. • CDKのコードレビュー ◦ インフラ設定 ◦ セキュリティ設定 ◦ CDK/CloudFormationの構造 • cdk-mentorの紹介

    ◦ 機能紹介 ◦ デモ • 実装の中⾝を紹介 ◦ CDKのAspectsとは ◦ cdk-mentorの機能 ⽬次 4
  3. • インフラ設計(機能⾯、⾮機能⾯) ◦ インフラの構成が問題ないか ▪ ⼈⼿でレビュー (今ならAIレビュー?) ◦ パラメータの設定が社内ルールなどに準拠しているか ▪

    Aspectsを使ったテスト(Fine-grained Assertions Test)で対応可能 • セキュリティ設計 ◦ AWSのセキュリティ基準や社内ルールなどに準拠しているか ▪ ⼈⼿でのレビュー ▪ cdk-nagを使ったリソース全体の⾃動チェック(要⼿動での除外設定) ▪ デプロイ後のSecurity Hubなどによる指摘修正 CDKのコードレビューの要素 6
  4. • CDK/CloudFormationの構造に関わる部分のレビュー ◦ クロススタック参照/ネストスタック参照などを利⽤していないか ▪ ネイティブの参照機能(strong stack reference)を使っていないか ▪ 注意点を理解しているか

    ◦ Construct IDがPascalCaseになっているか ◦ Construct IDにConstructやStackなどの名前が含まれないか ▪ 物理リソース名が冗⻑にならないようチェック ◦ カスタムリソースを使っていないか ▪ 内部でカスタムリソースを使うような実装になっていないか CDKのコードレビューの要素 7
  5. • CDK/CloudFormationの構造に関わる部分のレビュー ◦ クロススタック参照/ネストスタック参照などを利⽤していないか ▪ ネイティブの参照機能(strict stack reference)を使っていないか ▪ 注意点を理解しているか

    ◦ Construct IDがPascal Caseになっているか ◦ Construct IDにConstructやStackなどの名前が含まれないか ▪ 物理リソース名が冗⻑にならないようチェック ◦ カスタムリソースを使っていないか ▪ 内部でカスタムリソースを使うような実装になっていないか CDKのコードレビューの要素 9
  6. おまけ:実装で苦労した(している)点 22 • 対処⽅法 ◦ GAしている全L2 ConstructをSynthできるコードを書いて検査 ▪ Readmeのサンプルレベルのリソースを⽣成して確認 ◦

    AWSリソースやパスのprefix、特定のAWSリソースで特定の名前の場合は除外 • おまけ情報 ◦ 現状AWSリソースでL2がGAしてるのは⼤体80~90ぐらいっぽい https://github.com/tomoki10/cdk-mentor/blob/main/src/excluded-resource-types.ts
  7. 出来そうなこと(未検証) • 特定のAWSリソースで、特定の命名規則を適⽤する ◦ ex: DynamoDBのテーブル名はUPPER_SNAKE_CASEとする ◦ ex: DynamoDBのGSI名はUPPER_SNAKE_CASEとする •

    L2Constructがある場合、L1 Constructの利⽤でアラートを出す • コスト最適化のため、特定のインスタンスタイプを推奨 • バックアップ設定の確認 • 特定サービスの組み合わせを強制(LambdaにDLQを設定) 考えられる今後の拡張 23