@SdkInternalApi
    final DeliverConfigSnapshotResult executeDeliverConfigSnapshot(DeliverConfigSnapshotRequest deliverConfigSnapshotRequest) {

        ExecutionContext executionContext = createExecutionContext(deliverConfigSnapshotRequest);
        AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
        awsRequestMetrics.startEvent(Field.ClientExecuteTime);
        Request<DeliverConfigSnapshotRequest> request = null;
        Response<DeliverConfigSnapshotResult> response = null;

        try {
            awsRequestMetrics.startEvent(Field.RequestMarshallTime);
            try {
                request = new DeliverConfigSnapshotRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(deliverConfigSnapshotRequest));
                // Binds the request metrics to the current request.
                request.setAWSRequestMetrics(awsRequestMetrics);
                request.addHandlerContext(HandlerContextKey.CLIENT_ENDPOINT, endpoint);
                request.addHandlerContext(HandlerContextKey.ENDPOINT_OVERRIDDEN, isEndpointOverridden());
                request.addHandlerContext(HandlerContextKey.SIGNING_REGION, getSigningRegion());
                request.addHandlerContext(HandlerContextKey.SERVICE_ID, "Config Service");
                request.addHandlerContext(HandlerContextKey.OPERATION_NAME, "DeliverConfigSnapshot");
                request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);

            } finally {
                awsRequestMetrics.endEvent(Field.RequestMarshallTime);
            }

            HttpResponseHandler<AmazonWebServiceResponse<DeliverConfigSnapshotResult>> responseHandler = protocolFactory
                    .createResponseHandler(new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false),
                            new DeliverConfigSnapshotResultJsonUnmarshaller());
            response = invoke(request, responseHandler, executionContext);

            return response.getAwsResponse();

        } finally {

            endClientExecution(awsRequestMetrics, request, response);
        }
    }
<p>
Schedules delivery of a configuration snapshot to the Amazon S3 bucket in the specified delivery channel. After
the delivery has started, Config sends the following notifications using an Amazon SNS topic that you have
specified.
</p>
<ul>
<li>
<p>
Notification of the start of the delivery.
</p>
</li>
<li>
<p>
Notification of the completion of the delivery, if the delivery was successfully completed.
</p>
</li>
<li>
<p>
Notification of delivery failure, if the delivery failed.
</p>
</li>
</ul>

@param deliverConfigSnapshotRequest
       The input for the <a>DeliverConfigSnapshot</a> action.
@return Result of the DeliverConfigSnapshot operation returned by the service.
@throws NoSuchDeliveryChannelException
        You have specified a delivery channel that does not exist.
@throws NoAvailableConfigurationRecorderException
        There are no configuration recorders available to provide the role needed to describe your resources.
        Create a configuration recorder.
@throws NoRunningConfigurationRecorderException
        There is no configuration recorder running.
@sample AmazonConfig.DeliverConfigSnapshot
@see <a href="http://docs.aws.amazon.com/goto/WebAPI/config-2014-11-12/DeliverConfigSnapshot" target="_top">AWS
     API Documentation</a>
aws-java-sdk-config/src/main/java/com/amazonaws/services/config/AmazonConfigClient.java