$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
CDKのコードレビューを楽にするパッケージcdk-mentorを作ってみた/cdk-m...
Search
tomoki10
January 17, 2025
Technology
0
580
CDKのコードレビューを楽にするパッケージcdk-mentorを作ってみた/cdk-mentor
クラスメソッドのAWS CDK事情大公開スペシャル#2での登壇資料です。
https://classmethod.connpass.com/event/337711/
tomoki10
January 17, 2025
Tweet
Share
More Decks by tomoki10
See All by tomoki10
Kiro Autonomous AgentとKiro Powers の紹介 / kiro-autonomous-agent-and-powers
tomoki10
0
320
CDK Vibe Coding Fes
tomoki10
1
910
cdk initで生成されるあのファイル達は何なのか/cdk-init-generated-files
tomoki10
1
1.2k
Devin(Deep) Wiki/Searchの活用で変わる開発の世界観/devin-wiki-search-impact
tomoki10
1
3k
AI駆動で進化する開発プロセス ~クラスメソッドでの実践と成功事例~ / aidd-in-classmethod
tomoki10
2
4.1k
DevinはクラウドエンジニアAIになれるのか!? 実践的なガードレール設計/devin-can-become-a-cloud-engineer-ai-practical-guardrail-design
tomoki10
3
3.6k
AWS CDKの歴史と未来について語る会〜日本発のグローバルコントリビューション〜/jaws-days-2025-cdk-panel-discussion
tomoki10
0
190
いまから始めるAWS CDK 〜モダンなインフラ構築入門〜/iac-night-cdk-introduction
tomoki10
9
3k
DevinでAI AWSエンジニア製造計画 序章 〜CDKを添えて〜/devin-load-to-aws-engineer
tomoki10
0
870
Other Decks in Technology
See All in Technology
日本Rubyの会の構造と実行とあと何か / hokurikurk01
takahashim
4
940
5分で知るMicrosoft Ignite
taiponrock
PRO
0
220
第4回 「メタデータ通り」 リアル開催
datayokocho
0
120
乗りこなせAI駆動開発の波
eltociear
1
1k
形式手法特論:CEGAR を用いたモデル検査の状態空間削減 #kernelvm / Kernel VM Study Hokuriku Part 8
ytaka23
2
440
多様なデジタルアイデンティティを攻撃からどうやって守るのか / 20251212
ayokura
0
290
非CUDAの悲哀 〜Claude Code と挑んだ image to 3D “Hunyuan3D”を EVO-X2(Ryzen AI Max+395)で動作させるチャレンジ〜
hawkymisc
1
160
会社紹介資料 / Sansan Company Profile
sansan33
PRO
11
390k
RAG/Agent開発のアップデートまとめ
taka0709
0
140
pmconf2025 - データを活用し「価値」へ繋げる
glorypulse
0
700
エンジニアとPMのドメイン知識の溝をなくす、 AIネイティブな開発プロセス
applism118
4
980
Lambdaの常識はどう変わる?!re:Invent 2025 before after
iwatatomoya
1
340
Featured
See All Featured
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
Documentation Writing (for coders)
carmenintech
76
5.2k
4 Signs Your Business is Dying
shpigford
186
22k
The Cult of Friendly URLs
andyhume
79
6.7k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.8k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
How STYLIGHT went responsive
nonsquared
100
6k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
253
22k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
[RailsConf 2023] Rails as a piece of cake
palkan
58
6.1k
Git: the NoSQL Database
bkeepers
PRO
432
66k
Faster Mobile Websites
deanohume
310
31k
Transcript
CDKのコードレビューを楽にするパッケージ cdk-mentorを作ってみた 2025/01/17 製造ビジネステクノロジー部 佐藤智樹
CDKのコードレビューって何やってます? 参考のため是⾮ポストしてください!! #cm_cdk_special 2
• 佐藤智樹 • 製造ビジネステクノロジー部 • アーキテクトチーム • JAWS-UG CDK⽀部 運営
• 好きなもの:孤独のグルメ • 好きなAWSサービス↓ ⾃⼰紹介 3 @tmk2154 @tomoki10 @tomoki10 Lambda CDK
• CDKのコードレビュー ◦ インフラ設定 ◦ セキュリティ設定 ◦ CDK/CloudFormationの構造 • cdk-mentorの紹介
◦ 機能紹介 ◦ デモ • 実装の中⾝を紹介 ◦ CDKのAspectsとは ◦ cdk-mentorの機能 ⽬次 4
ライフサイクルの早い段階でバグなどを取り除くことで、影響を最⼩限に抑える ただレビューは結構⼤変なのでなるべく静的コード解析に任せたい コードレビューの重要性 5 https://gihyo.jp/dev/serial/01/code_dev_cycle/0001
• インフラ設計(機能⾯、⾮機能⾯) ◦ インフラの構成が問題ないか ▪ ⼈⼿でレビュー (今ならAIレビュー?) ◦ パラメータの設定が社内ルールなどに準拠しているか ▪
Aspectsを使ったテスト(Fine-grained Assertions Test)で対応可能 • セキュリティ設計 ◦ AWSのセキュリティ基準や社内ルールなどに準拠しているか ▪ ⼈⼿でのレビュー ▪ cdk-nagを使ったリソース全体の⾃動チェック(要⼿動での除外設定) ▪ デプロイ後のSecurity Hubなどによる指摘修正 CDKのコードレビューの要素 6
• CDK/CloudFormationの構造に関わる部分のレビュー ◦ クロススタック参照/ネストスタック参照などを利⽤していないか ▪ ネイティブの参照機能(strong stack reference)を使っていないか ▪ 注意点を理解しているか
◦ Construct IDがPascalCaseになっているか ◦ Construct IDにConstructやStackなどの名前が含まれないか ▪ 物理リソース名が冗⻑にならないようチェック ◦ カスタムリソースを使っていないか ▪ 内部でカスタムリソースを使うような実装になっていないか CDKのコードレビューの要素 7
参考情報 8 https://dev.classmethod.jp/articles/aws-cdk-props-cross-stack-referen ce-problem-and-handle/ https://dev.classmethod.jp/articles/best-way-to-name-aws-cdk-construct -id/
• CDK/CloudFormationの構造に関わる部分のレビュー ◦ クロススタック参照/ネストスタック参照などを利⽤していないか ▪ ネイティブの参照機能(strict stack reference)を使っていないか ▪ 注意点を理解しているか
◦ Construct IDがPascal Caseになっているか ◦ Construct IDにConstructやStackなどの名前が含まれないか ▪ 物理リソース名が冗⻑にならないようチェック ◦ カスタムリソースを使っていないか ▪ 内部でカスタムリソースを使うような実装になっていないか CDKのコードレビューの要素 9
https://github.com/tomoki10/cdk-mentor cdk-mentor 10
デモ 11
デモ動画 12
例えばスコープを左のStackにすれば、 左のStack配下のConstructに同じ操作を ⾏うことが可能。 以下のコード場合は、Appがスコープ • CDKのAspectsとは ◦ 特定のスコープ(StackやAppなど)のConstructに対して、共通の操作を⾏える機能 中⾝の紹介の前におさらい 13
https://aws.amazon.com/jp/blogs/aws/boost-your-infrastructure-with-cdk/
CloudFormation経由でデプロイされるまでに4つのフェーズがあり PrepareのフェーズでAspectsのvisitが実⾏される CDKでリソースがデプロイされるまでの流れ 14 https://aws.amazon.com/jp/blogs/devops/align-with-best-practices-while-creating-infrastructure-using-cdk-aspects/
cdk-nag:Aspectsを利⽤して、CDKが⽣成したAWSリソース⽤の オブジェクトを精査しセキュリティ基準に合うのかチェックする Aspectsの主な利⽤例 15 https://github.com/cdklabs/cdk-nag
cdk.IAspects インターフェースからクラスを実装してvisitを実⾏ cdk-mentorの実装⽅法 16 CloudFormationテンプレートにaws:cdk:pathとして出⼒される NodeのPath構造からConstruct IDを抽出
Constructに指定するIDがPascalCaseでなければエラーとする cdk-mentorの機能(Construct IDがPascalCaseかチェック) 17
Constructに指定するIDにConstruct|Stackという⽂字を⼊れない cdk-mentorの機能(Construct IDにConstruct|Stackを⼊れない) 18
未然に事故を防ぐため、CDKがデフォルトで提供するprops渡しのクロスス タック参照(※strong stack reference)を使った場合に警告を出す cdk-mentorの機能(クロススタック参照で警告) 19 ※参考:https://github.com/aws/aws-cdk/pull/22008
内部実装はTypeScriptですが、jssiによる変換でPythonでも使えます cdk-mentorの機能(python対応) 20 appファイル stackファイル
• CDKのL2/L3が⽣成するConstructIDがPascalCase出ない場合もある ◦ APIGateway(v1/v2) ◦ VPC(ElasticIP, InternetGateway, SecurityGroupIngress/Egress) ◦ Cognito(Role)
◦ AppConfig etc… おまけ:実装で苦労した(している)点 21 …
おまけ:実装で苦労した(している)点 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
出来そうなこと(未検証) • 特定のAWSリソースで、特定の命名規則を適⽤する ◦ ex: DynamoDBのテーブル名はUPPER_SNAKE_CASEとする ◦ ex: DynamoDBのGSI名はUPPER_SNAKE_CASEとする •
L2Constructがある場合、L1 Constructの利⽤でアラートを出す • コスト最適化のため、特定のインスタンスタイプを推奨 • バックアップ設定の確認 • 特定サービスの組み合わせを強制(LambdaにDLQを設定) 考えられる今後の拡張 23
None