🤢

CDKのevent scheduleでenabledは手動でしか戻せないぽい

2022/08/08に公開

よくわかっていないがメモ

結論として、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
https://github.com/aws/aws-cdk/issues/1723

https://github.com/cdklabs/cdk-drift-monitor

Discussion