in aws-logs-loggroup/src/main/java/software/amazon/logs/loggroup/UpdateHandler.java [34:68]
public ProgressEvent<ResourceModel, CallbackContext> handleRequest(
final AmazonWebServicesClientProxy proxy,
final ResourceHandlerRequest<ResourceModel> request,
final CallbackContext callbackContext,
final Logger logger) {
final ResourceModel model = request.getDesiredResourceState();
final ResourceModel previousModel = request.getPreviousResourceState();
final Map<String, String> tags = request.getDesiredResourceTags();
final Map<String, String> previousTags = request.getPreviousResourceTags();
final boolean retentionChanged = ! retentionUnchanged(previousModel, model);
final boolean kmsKeyChanged = ! kmsKeyUnchanged(previousModel, model);
final boolean tagsChanged = ! tagsUnchanged(previousTags, tags);
if (retentionChanged && model.getRetentionInDays() == null) {
deleteRetentionPolicy(proxy, request, logger);
} else if (retentionChanged){
putRetentionPolicy(proxy, request, logger);
}
// It can take up to five minutes for the (dis)associate operation to take effect
// It's unclear from the documentation if that state can be checked via the API.
// https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html
if (kmsKeyChanged && model.getKmsKeyId() == null) {
disassociateKmsKey(proxy, request, logger);
} else if (kmsKeyChanged) {
associateKmsKey(proxy, request, logger);
}
if (tagsChanged) {
updateTags(proxy, model, previousTags, tags, logger);
}
return ProgressEvent.defaultSuccessHandler(model);
}