Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AWS CDK初期設定のプラクティス集 with Projen
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
アキキー | Akihisa Ikeda
July 08, 2025
490
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AWS CDK初期設定のプラクティス集 with Projen
アキキー | Akihisa Ikeda
July 08, 2025
More Decks by アキキー | Akihisa Ikeda
See All by アキキー | Akihisa Ikeda
ドリフトを絶対に許さない(?)CDK運用 / CDK Ops with Zero Tolerance for Drifts (?)
akihisaikeda
1
150
ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×Node.js
akihisaikeda
3
4.4k
ECR拡張スキャンでSBOMを収集して サプライチェーン攻撃の影響調査を 爆速で終わらせてみた
akihisaikeda
2
280
AWSはOSSをどのように 考えているのか?
akihisaikeda
1
170
最初からAWS CDKで技術検証してもいいんじゃない?
akihisaikeda
4
250
責任感のあるCloudWatchアラームを設計しよう
akihisaikeda
5
260
AWS CDKの推しポイントN選
akihisaikeda
1
330
地獄絵図!CDKプロジェクトを手動更新して生まれた大量のプロパティ差分を解消する方法
akihisaikeda
5
1.5k
AWS CDKの推しポイント 〜CloudFormationと比較してみた〜
akihisaikeda
5
820
Featured
See All Featured
Rails Girls Zürich Keynote
gr2m
96
14k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
How STYLIGHT went responsive
nonsquared
100
6.2k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
240
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.1k
GraphQLとの向き合い方2022年版
quramy
50
15k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.8k
Typedesign – Prime Four
hannesfritz
42
3.1k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
920
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
240
Transcript
Ops-JAWS Meetup35 IaC CDK 支部コラボレーション企画 AWS CDK 初期設定のプラクティス集 with Projen
2025.7.8(火) 池田 晃尚(@akikii__) 1
自己紹介 アキキー(池田 晃尚) AWS エンジニア 好きな AWS サービス AWS CDK,
Amazon Q Developer CLI CDK プロジェクト初期設定のプラクティス集 with Projen Ops-JAWS Meetup35 IaC CDK 支部コラボレーション企画 2
注意事項 今回紹介するプラクティスは全て TypeScript を前提として話します。 他言語では未対応のプラクティスがありますのでご了承ください。 CDK プロジェクト初期設定のプラクティス集 with Projen Ops-JAWS
Meetup35 IaC CDK 支部コラボレーション企画 3
AWS CDK プロジェクト、始めやすい? CDK プロジェクト初期設定のプラクティス集 with Projen Ops-JAWS Meetup35 IaC
CDK 支部コラボレーション企画 4
世間では... AWS CDK は簡単な TypeScript しか書かなくていいから、アプリ開発者じゃな くても扱いやすいよ! CDK プロジェクト初期設定のプラクティス集 with
Projen Ops-JAWS Meetup35 IaC CDK 支部コラボレーション企画 5
...本当に? CDK プロジェクト初期設定のプラクティス集 with Projen Ops-JAWS Meetup35 IaC CDK 支部コラボレーション企画
6
プロジェクトが初期設定のままになってませんか? 設定ファイル群が多すぎて何をしているのかわからない... 初期設定をまとめている情報はあまりなさそう? プラクティスは存在するものの散らばっているのが現状 テンプレートリポジトリはあるものの、アプリ開発者でないと読み解きづら い CDK プロジェクト初期設定のプラクティス集 with Projen
Ops-JAWS Meetup35 IaC CDK 支部コラボレーション企画 7
本 LT の概要 AWS CDK プロジェクトの初期設定にまつわるプラクティスについて Projen を交えながら解説します! ※ プラクティスを実践するために
Projen は必須ではありません CDK プロジェクト初期設定のプラクティス集 with Projen Ops-JAWS Meetup35 IaC CDK 支部コラボレーション企画 8
pj Projen CDK App React App Python Project Setting files...
Setting files... Setting files... Projen とは? プロジェクトの構成をコードで定義・管理 できるツール AWS CDK アプリだけではなくさまざまな プロジェクトを構築できる プロジェクトを構成するファイルを抽象化 し、必要な設定だけに集中できるようにな っている package.json, .tsconfig.json など CDK プロジェクト初期設定のプラクティス集 with Projen Ops-JAWS Meetup35 IaC CDK 支部コラボレーション企画 9
Projen のはじめ方 コマンド 1 つで簡単セットアップ! npx projen new awscdk-app-ts .projenrc.ts
CDK プロジェクト初期設定のプラクティス集 with Projen Ops-JAWS Meetup35 IaC CDK 支部コラボレーション企画 10
.projenrc.ts ってなに? Projen プロジェクトの設定ファイル 各種設定ファイルを一元的に管理している CDK プロジェクトの設定クラス CDK プロジェクト初期設定のプラクティス集 with
Projen Ops-JAWS Meetup35 IaC CDK 支部コラボレーション企画 11
CDK プロジェクト初期設定のプラクティス 1. Linter / Formatter を設定する 2. ESLint CDK
Plugin を導入する(TypeScript のみ) 3. 単体テストを実装する 4. cdk-nag を導入する 5. CI/CD Pipeline を構築する CDK プロジェクト初期設定のプラクティス集 with Projen Ops-JAWS Meetup35 IaC CDK 支部コラボレーション企画 12
1. Linter / Formatter を設定する Linter...コードの文法やスタイルを静的解析し、バグやコーディング規約違反を検 出するツール パッケージ:ESLint, Biome, Oxlint
CDK プロジェクト初期設定のプラクティス集 with Projen Ops-JAWS Meetup35 IaC CDK 支部コラボレーション企画 13
Linter の設定 with Projen デフォルトの Linter は ESLint が設定されている .eslintrc.json
でルールを管理 CDK プロジェクト初期設定のプラクティス集 with Projen Ops-JAWS Meetup35 IaC CDK 支部コラボレーション企画 14
1. Linter / Formatter を設定する Formatter...コードの見た目を整え、一貫性のあるスタイルを適用するツ ール パッケージ: Prettire、Biome singleQuote:
true format ダブルクォート シングルクォート CDK プロジェクト初期設定のプラクティス集 with Projen Ops-JAWS Meetup35 IaC CDK 支部コラボレーション企画 15
Formatter の設定 with Projen デフォルトで Formatter が入っていないので、Prettier の設定を追加 .pritterrc.json でルールを管理
generate .projenrc.ts .prettierrc.json CDK プロジェクト初期設定のプラクティス集 with Projen Ops-JAWS Meetup35 IaC CDK 支部コラボレーション企画 16
2. ESLint CDK Plugin を導入する CDK コーディングにおけるセオリーをチェックする ESLint プラグイン ex)
pascal-case-construct-id const bucket = new Bucket(this, "MyAwesomeBucket"); const bucket = new Bucket(this, "my_awesome_bucket"); → リソース名を生成した場合、アルファベットや数字が除去されてしまう Main-MyAwesomeBucket Main-myawesomebucket 参考:ESLint プラグインを使用して CDK のセオリーを適用する CDK プロジェクト初期設定のプラクティス集 with Projen Ops-JAWS Meetup35 IaC CDK 支部コラボレーション企画 17
ESLint CDK Plugin の設定 with Projen STEP1. パッケージを devDeps に追記し、
npx projen でインストール STEP2. プラグインとルールを ESLint に適用 エイリアスをつけてインストール .projenrc.ts .projenrc.ts eslint-plugin-cdk STEP 1. STEP 2. CDK プロジェクト初期設定のプラクティス集 with Projen Ops-JAWS Meetup35 IaC CDK 支部コラボレーション企画 18
3. 単体テストを実装する スナップショットテスト Template (旧) Template (新) ⽣成 ⽣成 CDK
⽐較 Test Fine-grained assertion テスト バリデーションテスト VPC Public Subnet Private Subnet Private Subnet Public Subnet 検証 Subnet の数は4 個? VPC flow log は有効? Test Stack Fargate メモリは2GB 以上? デプロイ前に検証できる Test 想定した差分であることを検証 想定したパラメータであることを検証 定義したバリデーションをデプロイ前に検証 参考:AWS CDK における単体テストの使い所を学ぶ CDK プロジェクト初期設定のプラクティス集 with Projen Ops-JAWS Meetup35 IaC CDK 支部コラボレーション企画 19
4. cdk-nag を導入する AWS リソースの定義を静的解析してセキュリティチェックするツール AwsSolutions-S2 S3 バケットでパブリックアクセスが制限およびブロックされていません。 AwsSolutions-VPC7 VPC
には関連づけられたフローログがありません。 cdk-nag S3 VPC 検証 検証 Error: AwsSolutions-S2 Error: AwsSolutions-S2 CDK プロジェクト初期設定のプラクティス集 with Projen Ops-JAWS Meetup35 IaC CDK 支部コラボレーション企画 20
5. CI/CD Pipeline を構築する アプリのテスト → ビルド → デプロイの一連の処理を自動化する仕組み AWS
CDK の場合、AWS アカウントへリソースがデプロイされる AWS Cloud Resources EC2 S3 Aurora デプロイ Stack GitHub Actions スタック 作成・更新 cdk deploy test cdk synth 検証 合成 GitHub CDK プロジェクト初期設定のプラクティス集 with Projen Ops-JAWS Meetup35 IaC CDK 支部コラボレーション企画 21
Projen Pipelines Projen が CI/CD パイプラインを自動生成するツール 特定のプラットフォームに依存しない GitHub Actions cdk
deploy test cdk synth 検証 合成 GitLab CI/CD パイプライン cdk deploy test cdk synth 検証 合成 ⽣成 ⽣成 pj Projen 参考: Projen Pipelines に入門してみた CDK プロジェクト初期設定のプラクティス集 with Projen Ops-JAWS Meetup35 IaC CDK 支部コラボレーション企画 22
CDK プロジェクト初期設定のプラクティス 1. Linter / Formatter を設定する 2. ESLint CDK
Plugin を導入する(TypeScript のみ) 3. 単体テストを実装する 4. cdk-nag を導入する 5. CI/CD Pipeline を構築する CDK プロジェクト初期設定のプラクティス集 with Projen Ops-JAWS Meetup35 IaC CDK 支部コラボレーション企画 23
ありがとうございました! 24