🤢
CDKのevent scheduleでenabledは手動でしか戻せないぽい
よくわかっていないがメモ
結論として、CDKではDriftしているときに上書きはしてくれないらしい。
やってたこと
こういうeventがあったとして、enabled: true としているとき、手動でDisableにしてしまうと、CDK側からは戻せない。
cdk 2.30
const fn = new lambda.Function ...
const rule = new events.Rule(this, 'Schedule Rule', {
enabled: true,
schedule: events.Schedule.cron({ minute: '5', hour: '15' }),
});
rule.addTarget(new targets.LambdaFunction(fn));
- ここから、手動でDisableにすると、CDKからは戻せない
- ckd diffでも現れない diffはそもそもlocalとsynth-jsonの差?
CDKではそういうものなのだな、という理解で。
CloudFormationのDriftDetection
結論 こちらはできました。戻せるわけではなく、検出ができたという意味です。
準備 cronの日次をコンソールから変えて、enabledも変える
aws-docの手順にしたがってcliでドリフトを見てみると、cronの変更もEnable、Disableも検出できている。
{
"StackResourceDrifts": [
{
"StackId": "arn:aws:cloudformation:xxxx",
"LogicalResourceId": "xxxx",
"PhysicalResourceId": "xxxx",
"ResourceType": "AWS::Events::Rule",
"ExpectedProperties": "{\"ScheduleExpression\":\"cron(5 15 * * ? *)\",\"State\":\"ENABLED\",\"Targets\":[arn_lambda]}",
"ActualProperties": "{\"ScheduleExpression\":\"cron(5 16 * * ? *)\",\"State\":\"DISABLED\",\"Targets\":[arn_lambda]}",
"PropertyDifferences": [
{
"PropertyPath": "/ScheduleExpression",
"ExpectedValue": "cron(5 15 * * ? *)",
"ActualValue": "cron(5 16 * * ? *)",
"DifferenceType": "NOT_EQUAL"
},
{
"PropertyPath": "/State",
"ExpectedValue": "ENABLED",
"ActualValue": "DISABLED",
"DifferenceType": "NOT_EQUAL"
}
],
"StackResourceDriftStatus": "MODIFIED",
"Timestamp": "2022-08-08T08:46:09.367000+00:00"
}
]
}
CDKでは検討中?
CDK Drift Detection
Discussion