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
ドリフトを絶対に許さない(?)CDK運用 / CDK Ops with Zero Tolera...
Search
アキキー | Akihisa Ikeda
July 30, 2026
Programming
270
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ドリフトを絶対に許さない(?)CDK運用 / CDK Ops with Zero Tolerance for Drifts (?)
アキキー | Akihisa Ikeda
July 30, 2026
More Decks by アキキー | Akihisa Ikeda
See All by アキキー | Akihisa Ikeda
cdk deploy JawsSonic #MARATHONしながらAWSリソースをデプロイしてみよう
akihisaikeda
1
72
ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×Node.js
akihisaikeda
4
4.5k
ECR拡張スキャンでSBOMを収集して サプライチェーン攻撃の影響調査を 爆速で終わらせてみた
akihisaikeda
2
320
AWSはOSSをどのように 考えているのか?
akihisaikeda
1
190
最初からAWS CDKで技術検証してもいいんじゃない?
akihisaikeda
4
270
責任感のあるCloudWatchアラームを設計しよう
akihisaikeda
5
280
AWS CDKの推しポイントN選
akihisaikeda
1
340
地獄絵図!CDKプロジェクトを手動更新して生まれた大量のプロパティ差分を解消する方法
akihisaikeda
5
1.5k
AWS CDK初期設定のプラクティス集 with Projen
akihisaikeda
3
520
Other Decks in Programming
See All in Programming
30年振りにコンパイラの定数整数除算を改善した
herumi
9
4.4k
PyConJP2026_wat_Python × Signal Processing: How to Draw Pictures with Sound Using Spectrogram Art
wat
0
670
LLMは4年分のCompose移行を再現できるのか?実プロダクト279件のXMLで探る自動化の境界線
makun
0
440
XP祭りでしか伝わらないフリップネタ #xpjug
murabayashi
0
110
kubernetes コンポーネント開発入門 / 新卒N年目の勉強会&交流会!〜〇〇への誘い〜 #n_study
mazrean
0
170
「AI時代、配布するPythonコードをどう守るか: 難読化の実験と判断軸」 #PyconJP2026
pkshadeck
PRO
2
170
私のClaude Code活用法 (個人開発編) - PHPerKaigi mini #4(2026/08/24)
panda_program
1
210
Claude Codeを組織的に動かして月400PRを実現した話
happy_ryo
0
260
GKE アップグレード前に知っておきたい Blue/Green と PDB の関係
stkk
0
160
XHTMLが残したもの
yosuke_furukawa
PRO
2
420
AIに既存システムを理解させる技術 ~レガシーを見捨てないハーネスエンジニアリング入門~
ochtum
0
210
The Good Stuff, Not the Slop: Engineering High-Quality Android Apps with Modern AI Tooling
danybony
1
190
Featured
See All Featured
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
230
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Raft: Consensus for Rubyists
vanstee
141
7.7k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Exploring anti-patterns in Rails
aemeredith
3
490
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
The Language of Interfaces
destraynor
162
27k
It's Worth the Effort
3n
188
29k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
430
Transcript
ドリフトを絶対に許さない(?) CDK運用 2026.7.18 Sat. 池田 晃尚(@akikii__)
アキキー | 池田 晃尚 株式会社メイツ バックエンドエンジニア / SRE 推しサービス AWS
CDK
みなさんは ドリフトがない運用をできていますか?
ドリフトとは? CDKの差分は2種類ある ≠ cdk diff:テンプレートとスタックの差分を検出する = cdk drift:スタックとAWSリソースの差分を検出する AWS Cloud
Deploy Synth CDK ソース テンプレート Manage スタック diff リソース群 drift
ドリフトとは? スタックの定義とAWSリソースの設定値の差異をドリフトと呼ぶ Stack runtime: Runtime.NODEJS_24_X, timeout: Duration.minutes(10), memorySize: 1024, ...
Lambda Function ドリフトが発⽣している
ドリフトがなぜ問題になるの? IaCでは管理下のリソースをIaC以外の方法で変更しないことが鉄則 IaCでの一元管理が成り立たなくなり見通しが悪くなる デプロイ時に設定が競合して消えてしまう可能性がある デプロイ時にエラーが発生する場合がある CloudFormation ベストプラクティス - CloudFormation ですべてのスタックリソースを管理する
ドリフトがなぜ問題になるの? IaCでは管理下のリソースをIaC以外の方法で変更しないことが鉄則 IaCでの一元管理が成り立たなくなり見通しが悪くなる デプロイ時に設定が競合して消えてしまう可能性がある CDK・CloudFormationのドリフトには問題点がある...! デプロイ時にエラーが発生する場合がある CloudFormation ベストプラクティス - CloudFormation
ですべてのスタックリソースを管理する
CDK・CloudFormationのドリフトの問題点 全てのプロパティのドリフトを 検出できない!!!
CDKドリフトでは検出できない差分 スタック リソース AWS 定義されていないプロパティ (undeclared property) No drift detect
定義されているリソースに ⼦リソース が追加される (out-bound added resource) No drift detect 定義されているリソースが 削除される (deleted resource) + Environment: [ + owner: "akikii__" +] + Function URLs Drift detection failed ドリフト検出が失敗する!
CDKドリフトでは検出できない差分 スタック 定義されていないプロパティ (undeclared property) リソース AWS No drift detect
+ Environment: [ + owner: "akikii__" +] そんな中、希望の光が...! 定義されているリソースに ⼦リソース が追加される (out-bound added resource) No drift detect + Function URLs 定義されているリソースが 削除される (deleted resource) Drift detection failed ドリフト検出が失敗する!
cdk-real-drift(cdkrd) AWS CDKのためのドリフトを検出するOSS → CDKドリフトで検出できない差分も検出できる!! ステマじゃないです...
cdk-real-drift(cdkrd)とは? MyPC AWS Cloud 管理対象 ベースライン CDK スタック リソース群 CDKのデフォルト値を加味し、
実際の状態と⽐較して差分を検出 が定義しないプロパティの期待値を記録 cdk drift:スタック定義のプロパティとリソースのプロパティを比較 cdkrd check:CDKのデフォルト値 + ベースライン + スタック定義 のプロパティを組み合わせてリソースのプロパティと比較
cdk-real-drift(cdkrd)とは? MyPC AWS Cloud 管理対象 ベースライン CDK スタック リソース群 CDKのデフォルト値を加味し、
実際の状態と⽐較して差分を検出 が定義しないプロパティの期待値を記録 cdk drift:スタック定義のプロパティとリソースのプロパティを比較 cdkrd check:CDKのデフォルト値 + ベースライン + スタック定義 のプロパティを組み合わせてリソースのプロパティと比較
ドリフトの修正
これまではドリフトの修正が大変だった…
以前のドリフト修正手順 地獄絵図!CDKプロジェクトを手動更新して生まれた大量のプロパティ差分を解消する by アキキー | Akihisa Ikeda by アキキー |
Akihisa Ikeda 地獄絵図!CDKプロジェクトを手動更新して生まれた大量のプロパティ差分を解消する方法
以前のドリフト修正手順 地獄絵図!CDKプロジェクトを手動更新して生まれた大量のプロパティ差分を解消する by アキキー | Akihisa Ikeda by アキキー |
Akihisa Ikeda 手順が27ページもあり複雑! スタックに操作を加えるので間違えたら大変... 地獄絵図!CDKプロジェクトを手動更新して生まれた大量のプロパティ差分を解消する方法
今の僕たちには cdk-real-driftがある!!!
ドリフトの修正手順 ① ドリフトを誤として破棄する Stack Lambda Function 1024 MB runtime: Runtime.NODEJS_24_X,
timeout: Duration.minutes(10), memorySize: 1024, ... ② ドリフトを正としてCDKに反映する Lambda Function Stack runtime: Runtime.NODEJS_24_X, timeout: Duration.minutes(10), memorySize: 1024 , → 2048 ...
① ドリフトを誤として破棄する ドリフトの修正 Stack Lambda Function 1024 MB runtime: Runtime.NODEJS_24_X,
timeout: Duration.minutes(10), memorySize: 1024, ... :破棄したいドリフトを選択してスタックに定義さ れている値もしくはデフォルト値に戻す cdkrd revert ※ 子リソースを破棄するには`--remove-unrecorded`オプションが必要
ドリフトの修正:Step1. revertフェーズ 対象のドリフトを選択して破棄する ❯ pnpm exec cdkrd revert • CdkrdVerify-main
(ap-northeast-1): reading live AWS state & computing drift… space = toggle · → = all · ← = none · enter = confirm # ▪ revert ▪ Description -> deployed-template value ▪ MemorySize -> remove (undeclared, not in baseline) # □ □ Timeout -> remove (undeclared, not in baseline) □ AWS_IAM ... -> DELETE out-of-band AWS::Lambda::Url 2 selected ◆ Apply 2 revert op(s) to CdkrdVerify-main? This WRITES to AWS. CdkrdVerify-main: CLEAN after revert. 選択済み: する 未選択:ドリフト状態のままにする ※ 出力は一部省略しています • Yes
② ドリフトを正としてCDKに反映する ドリフトの修正 Lambda Function Stack runtime: Runtime.NODEJS_24_X, timeout: Duration.minutes(10),
memorySize: 1024 , → 2048 ... : ドリフトを検出しながら、コーディン グエージェントでドリフトが無くなるまで修正する --pre-deploy オプションをつけると合成したテンプレートと AWSリソースの差分を比較する ドリフトが無くなったらCDKデプロイする cdkrd check --pre-deploy
ドリフトの修正:Step2. refactorフェーズ コーディングエージェントで差分をCDKソースに反映 /goal 以下の手順で、CDKソースと実環境のリソース状態を一致させてください。 を実行し、全ドリフト(declared + undeclared + added)を把握する
ドリフトがあれば、該当プロパティをライブ値でCDKコードに明示的に定義する があればCDKコードに定義を追加し、`cdk import` で取り込む を実行し、残りの declared ドリフトをCDKソースに取り込む 差分が無くなるまで 〜 を繰り返す 1. `cdkrd check` 2. undeclared 3. added out-of-band resources 4. `cdkrd check --pre-deploy` 5. 2 4 → ドリフトが発生してないことを確認してデプロイ! ※ ここではリソースの変更が発生しません。
ドリフトの修正:Step2. refactorフェーズ コーディングエージェントで差分をCDKソースに反映 /goal 以下の手順で、CDKソースと実環境のリソース状態を一致させてください。 を実行し、全ドリフト(declared + undeclared + added)を把握する
ドリフトがあれば、該当プロパティをライブ値でCDKコードに明示的に定義する があればCDKコードに定義を追加し、`cdk import` で取り込む を実行し、残りの declared ドリフトをCDKソースに取り込む 差分が無くなるまで 〜 を繰り返す 1. `cdkrd check` 2. undeclared 3. added out-of-band resources 4. `cdkrd check --pre-deploy` 5. 2 4 これにてドリフトの修正は完了です! → ドリフトが発生してないことを確認してデプロイ! ※ ここではリソースの変更が発生しません。
ドリフトのない運用へ
ドリフトが解消しても、その後にまたドリフト が発生しては意味がありません
ドリフトのない運用プラクティス ①ドリフトの誤検知を除外する ②ドリフトを予防する ③ドリフトを検知する ④ドリフト対応を自動化する
①ドリフトの誤検知を除外する
ベースラインに記録する ドリフトのない運用:①誤検知の除外 cdkrd record CDKで定義していないプロパティの期待値をベースラインに記録する。 記録した値と実環境が異なれば、ドリフトとして検出できる CDK以外の仕組みで管理されているプロパティ e.g. AWS Config自動修復
CloudFormation未定義のプロパティ
変化する値をドリフト対象外にする ドリフトのない運用:①誤検知の除外 cdkrd ignore 値が外部の影響で変化するプロパティはドリフトの検知から除外する ECS AutoScalingでECSタスクの必要タスク数が増減する Parameter Storeの値を書き換える
②ドリフトの予防
リソースを変更する権限を絞る ドリフトのない運用:②予防 リソースの変更をCI/CDに限定し、ドリフトを未然に防ぐ 開発者のIAMポリシーからリソースの変更権限を除外する hotfixなど直接変更が必要な場合は、一時的な権限昇格の仕組みを検 討する e.g. TEAM(Temporary elevated access
management)
③ドリフトの検知
デプロイゲートで検知する ドリフトのない運用:③検知 CIに cdkrd check --fail を組み込み、ドリフトしていればデプロイを 停止 ドリフトがある状態でデプロイすると、設定を意図せず上書きしてし まう可能性がある
デプロイ前にドリフトを検知すれば安全にブロックできる
デプロイゲートで検知する ドリフトのない運用:③検知 CIに cdkrd check --fail を組み込み、ドリフトしていればデプロイを 停止 ドリフトがある状態でデプロイすると、設定を意図せず上書きしてし このタイミングでドリフトに気づくとデプロイが遅れてしまう...!
まう可能性がある デプロイ前にドリフトを検知すれば安全にブロックできる
ドリフト検知ジョブをスケジュール実行する ドリフトのない運用:③検知 を定期実行し、ドリフト発生時に通知する GitHub Actionsなどでスケジュール実行する デプロイを待たずに早期検知できる 期間を短くすれば発生してすぐに気づけるため原因の特定がしやすい cdkrd check --fail
④ドリフト対応の自動化
ドリフト発生を検知した時 自動で対応できれば運用の負荷が下がります ※ 自動化にはリスクもあるため、組織の運用方針に合わせて検討してください。
ドリフトを全て破棄する ドリフトのない運用:④自動化 ドリフト検知ジョブで cdkrd revert を実行し、ドリフトを自動で破棄 する ドリフトを絶対に許さない組織に向いている --remove-unrecorded で、追加された子リソースも削除できる
ドリフトを全て記録する ドリフトのない運用:④自動化 検知ジョブで cdkrd record を実行し、ドリフトをベースラインに記録 してPR(Pull Request)を作成する hotfixなどで直接変更が発生する運用に向いている 不要な記録はPR上で修正すればOK
さらにドリフト修正手順をSkill化してAIエージェントに載せれば、 CDKソースへの自動反映も自動化できる…!?
おまけ ドリフトを利用する(?)
ドリフトを使い捨てる ドリフトを利用する 今年に入ってからドリフトを1コマンドで元に戻せるようになりました cdk deploy --revert-drift (2026/3/9) cdkrd revert (2026/7/6)
EventBridge Schedulerのスケジュールを一度だけ実行したい時など、 気軽に試せてコマンド1つで戻せるのが便利です!
まとめ CDK・CloudFormationで課題だった、検出できないドリフトが cdk-real-drift(cdkrd) の登場で解決! 新しいドリフトとの付き合い方が見えてきたので、是非みなさんも活 用してみてください!
まとめ CDK・CloudFormationで課題だった、検出できないドリフトが cdk-real-drift(cdkrd) の登場で解決! 新しいドリフトとの付き合い方が見えてきたので、是非みなさんも活 用してみてください! もしかしたらあなたの本番環境もドリフトが発生しているかもしれま せんね👁️👁️
宣伝
積極採用中 リードエンジニア(バックエンド/フロントエンド/SRE) 株式会社メイツ Mates Inc. カジュアル面談はこちら
None
Thank You! \ ご清聴ありがとうございました! /