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
ドリフトを絶対に許さない(?)CDK運用 / CDK Ops with Zero Tolera...
Search
アキキー | Akihisa Ikeda
July 30, 2026
Programming
280
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
2
130
ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×Node.js
akihisaikeda
4
4.5k
ECR拡張スキャンでSBOMを収集して サプライチェーン攻撃の影響調査を 爆速で終わらせてみた
akihisaikeda
2
330
AWSはOSSをどのように 考えているのか?
akihisaikeda
1
200
最初からAWS CDKで技術検証してもいいんじゃない?
akihisaikeda
4
270
責任感のあるCloudWatchアラームを設計しよう
akihisaikeda
5
290
AWS CDKの推しポイントN選
akihisaikeda
1
350
地獄絵図!CDKプロジェクトを手動更新して生まれた大量のプロパティ差分を解消する方法
akihisaikeda
5
1.5k
AWS CDK初期設定のプラクティス集 with Projen
akihisaikeda
3
520
Other Decks in Programming
See All in Programming
AI × TiDD / 2026.09.05 Redmine 大阪
tokudiro
1
170
AI が書く Go コードの品質を劇的に向上させる Linter: “declscope”
mpyw
0
350
Intent as Code
shoppingjaws
6
1k
Are APIs Still Relevant in the AI Era?
soyuka
0
230
{ Android | Kotlin } Gradle Plugin in 2026
ryunen344
1
320
GraphRAGのKnowledge Graphを 直接!見る/View-GraphRAG's-KnowledgeGraph-directly!
tyumugi1113
1
330
WebAssembly in Android Apps 〜 WASMはJNIの夢を見るか
keiji
1
100
XHTMLが残したもの
yosuke_furukawa
PRO
2
810
Family mrubyの進捗
kishima
1
120
モジュールの視点からSwiftを読み解く #iosdc
s_shimotori
0
180
Jetpack Compose メカニズム
skydoves
0
430
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
400
Featured
See All Featured
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
57k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
Ruling the World: When Life Gets Gamed
codingconduct
0
330
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
So, you think you're a good person
axbom
PRO
2
2.2k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
4.8k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
Exploring anti-patterns in Rails
aemeredith
4
510
Code Reviewing Like a Champion
maltzj
528
40k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
460
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
690
Evolving SEO for Evolving Search Engines
ryanjones
0
290
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! \ ご清聴ありがとうございました! /