Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
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
550
3
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
AWS CDKのカスタムリソースでContinuum(旧Security Agent)を実装した話 | Implementing Continuum (formerly Security Agent) via AWS CDK Custom Resource
akihisaikeda
1
28
cdk deploy JawsSonic #MARATHONしながらAWSリソースをデプロイしてみよう
akihisaikeda
2
150
ドリフトを絶対に許さない(?)CDK運用 / CDK Ops with Zero Tolerance for Drifts (?)
akihisaikeda
1
300
ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×Node.js
akihisaikeda
4
4.6k
ECR拡張スキャンでSBOMを収集して サプライチェーン攻撃の影響調査を 爆速で終わらせてみた
akihisaikeda
2
360
AWSはOSSをどのように 考えているのか?
akihisaikeda
1
200
最初からAWS CDKで技術検証してもいいんじゃない?
akihisaikeda
4
280
責任感のあるCloudWatchアラームを設計しよう
akihisaikeda
5
290
AWS CDKの推しポイントN選
akihisaikeda
1
350
Featured
See All Featured
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
620
It's Worth the Effort
3n
188
29k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
2k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
8k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.7k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
Making the Leap to Tech Lead
cromwellryan
135
10k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
340
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
Designing Experiences People Love
moore
143
24k
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