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
アキキー | Akihisa Ikeda
July 08, 2025
480
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
ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×Node.js
akihisaikeda
2
4k
ECR拡張スキャンでSBOMを収集して サプライチェーン攻撃の影響調査を 爆速で終わらせてみた
akihisaikeda
2
240
AWSはOSSをどのように 考えているのか?
akihisaikeda
1
150
最初からAWS CDKで技術検証してもいいんじゃない?
akihisaikeda
4
230
責任感のあるCloudWatchアラームを設計しよう
akihisaikeda
4
240
AWS CDKの推しポイントN選
akihisaikeda
1
320
地獄絵図!CDKプロジェクトを手動更新して生まれた大量のプロパティ差分を解消する方法
akihisaikeda
5
1.1k
AWS CDKの推しポイント 〜CloudFormationと比較してみた〜
akihisaikeda
4
760
AI生成記事をリライトし満足度を上げようとしたら大変だった話
akihisaikeda
0
63
Featured
See All Featured
How to Think Like a Performance Engineer
csswizardry
28
2.6k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
130
Everyday Curiosity
cassininazir
0
230
Heart Work Chapter 1 - Part 1
lfama
PRO
7
36k
Chasing Engaging Ingredients in Design
codingconduct
0
220
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
840
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.3k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
240
Balancing Empowerment & Direction
lara
6
1.2k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
310
Art, The Web, and Tiny UX
lynnandtonic
304
22k
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