package software.amazon.logs.destination; import software.amazon.awssdk.services.cloudwatchlogs.CloudWatchLogsClient; import software.amazon.awssdk.services.cloudwatchlogs.model.CloudWatchLogsException; import software.amazon.awssdk.services.cloudwatchlogs.model.DeleteDestinationRequest; import software.amazon.awssdk.services.cloudwatchlogs.model.DeleteDestinationResponse; import software.amazon.cloudformation.proxy.AmazonWebServicesClientProxy; import software.amazon.cloudformation.proxy.Logger; import software.amazon.cloudformation.proxy.OperationStatus; import software.amazon.cloudformation.proxy.ProgressEvent; import software.amazon.cloudformation.proxy.ProxyClient; import software.amazon.cloudformation.proxy.ResourceHandlerRequest; public class DeleteHandler extends BaseHandlerStd { private Logger logger; public static final String DESTINATION_POLICY_DELETE_GRAPH = "AWS-Logs-Destination::Delete"; protected ProgressEvent handleRequest(final AmazonWebServicesClientProxy proxy, final ResourceHandlerRequest request, final CallbackContext callbackContext, final ProxyClient proxyClient, final Logger logger) { this.logger = logger; final ResourceModel model = request.getDesiredResourceState(); return proxy.initiate(DESTINATION_POLICY_DELETE_GRAPH, proxyClient, model, callbackContext) .translateToServiceRequest(Translator::translateToDeleteRequest) .makeServiceCall(this::deleteResource) .done(x -> ProgressEvent.builder().status(OperationStatus.SUCCESS).build()); } private DeleteDestinationResponse deleteResource( final DeleteDestinationRequest awsRequest, final ProxyClient proxyClient) { DeleteDestinationResponse awsResponse = null; try { awsResponse = proxyClient.injectCredentialsAndInvokeV2(awsRequest, proxyClient.client()::deleteDestination); } catch (CloudWatchLogsException e) { logger.log(String.format("Exception while deleting the %s with name %s. %s", ResourceModel.TYPE_NAME, awsRequest.destinationName(), e)); Translator.translateException(e); } logger.log(String.format("%s resource with name %s has been successfully deleted", ResourceModel.TYPE_NAME, awsRequest.destinationName())); return awsResponse; } }