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
60
0
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
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初期設定のプラクティス集 with Projen
akihisaikeda
2
490
AWS CDKの推しポイント 〜CloudFormationと比較してみた〜
akihisaikeda
5
810
Other Decks in Programming
See All in Programming
数百円から始めるRuby電子工作
tarosay
0
120
人間の目はかわらない、だからJPEGは30年もつ
yuzneri
12
17k
AI Engineeringは、AIプロダクトだけのものか? 〜AIがソフトウェアを作る時代の新しい当たり前〜 / No AI in your product. AI Engineering in your development.
rkaga
4
290
全PRの83%がAIレビューだけでマージできるようになった開発組織はその後どうなったか
athug
0
630
Claude Team Plan導入・ガイド
tk3fftk
0
240
Go言語とトイモデルで学ぶTransformerの気持ち / fukuokago23-transformer
monochromegane
0
150
ITヒヤリハットを整理してみた ~ライフサイクルと原因から考える再発防止策~
koukimiura
1
120
AI時代のPHPer生存戦略 ~「言語、もうなんでもよくない?」に本気で向き合う~
vivion
0
210
yield再入門 #phpcon
o0h
PRO
0
820
ここ半年くらいでAIに作らせたR用ツール
eitsupi
0
340
今さら聞けない .NET CLI
htkym
0
150
自動化したのに回らないテスト運用の壁ーAI時代の品質責任と生産性
mfunaki
0
110
Featured
See All Featured
Code Reviewing Like a Champion
maltzj
528
40k
The Curious Case for Waylosing
cassininazir
1
440
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
620
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
440
Mobile First: as difficult as doing things right
swwweet
225
10k
Testing 201, or: Great Expectations
jmmastey
46
8.2k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Context Engineering - Making Every Token Count
addyosmani
9
1k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
What does AI have to do with Human Rights?
axbom
PRO
1
2.3k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
1k
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! \ ご清聴ありがとうございました! /