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
300
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
AWS CDKのカスタムリソースでContinuum(旧Security Agent)を実装した話 | Implementing Continuum (formerly Security Agent) via AWS CDK Custom Resource
akihisaikeda
1
74
cdk deploy JawsSonic #MARATHONしながらAWSリソースをデプロイしてみよう
akihisaikeda
2
150
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
地獄絵図!CDKプロジェクトを手動更新して生まれた大量のプロパティ差分を解消する方法
akihisaikeda
5
1.5k
Other Decks in Programming
See All in Programming
技術的負債の返済は、AI時代の複利で効く投資 — 経営としての意思決定とその遂行
curekoshimizu
1
2k
モバイル交通系ICへのチャージ実例から考える、クロスプラットフォーム開発におけるiOS実機テスト設計とCI運用
yusuga
1
560
Omarchy Tokyo やると聞いて UMPC 買ってセットアップしてきた
mtsmfm
0
190
速習iPhone Duo対応
yuukiw00w
2
910
Findy - エンジニア向け会社紹介/Findy Company Deck
findyinc
6
400k
【高い買い物LT会】初任給で話題の国産フィジカルAIを買った話
akagami
PRO
0
180
モデルのリファクタリングが難しいと思ったら、そもそも複雑だったのはビジネス仕様だった ? / is-the-business-domain-the-real-complexity
hatsu38
0
430
Java 27新機能 / Java 27 new features
kishida
2
180
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Rails World 2026, Austin, Texas
marcoroth
0
130
App Intentsのビルドプロセスを支える技術
kntkymt
0
480
ゲームコントローラやキーボードのファームウェアをSwiftで書く
kishikawakatsumi
1
270
AHC070解法紹介
eijirou
0
140
Featured
See All Featured
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
600
Building Flexible Design Systems
yeseniaperezcruz
330
41k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Rails Girls Zürich Keynote
gr2m
96
14k
Evolving SEO for Evolving Search Engines
ryanjones
0
300
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
SEO for Brand Visibility & Recognition
aleyda
0
4.8k
How STYLIGHT went responsive
nonsquared
100
6.3k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
960
It's Worth the Effort
3n
188
29k
[SF Ruby Conf 2025] Rails X
palkan
3
1.4k
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! \ ご清聴ありがとうございました! /