はじめに
- CloudFormationのドリフト発生時にスタック更新した際の挙動について調べました。
前提
- ある設定がCFn上だとA、リソース上だとBとなっている場合
という前提で今回調査をしています。
- 今回はLogGroupの保持期間
RetentionInDays
を例に試してみました。 - CFn上だと731日(2年)に設定されていますが、リソース上は365日(1年)に設定されています。
CloudFormationの記載内容
"logGroup68A52FBE": { "Type": "AWS::Logs::LogGroup", "Properties": { "RetentionInDays": 731 }, "UpdateReplacePolicy": "Retain", "DeletionPolicy": "Retain", "Metadata": { "aws:cdk:path": "CdkEcspressoStack/logGroup/Resource" } },
CFn上でAをBに書き換える場合
- 731日を365日に書き換え、スタックを更新します
- ドリフトが解消されます
CFn上でAをCに書き換える場合
- 731日を1096日に書き換え、スタックを更新します
- 実際のリソースがBからCに更新されます
"Properties": { "RetentionInDays": 1096 },
その他パターン
- あるリソースDにドリフトが出ていて、リソースEに対して変更を加えた場合も調べました
- セキュリティグループのインバウンドルール等で確認しましたが、こちらは特にリソースDに対する変更はかかりませんでした