@SdkInternalApi
    final DescribeExecutionResult executeDescribeExecution(DescribeExecutionRequest describeExecutionRequest) {

        ExecutionContext executionContext = createExecutionContext(describeExecutionRequest);
        AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics();
        awsRequestMetrics.startEvent(Field.ClientExecuteTime);
        Request<DescribeExecutionRequest> request = null;
        Response<DescribeExecutionResult> response = null;

        try {
            awsRequestMetrics.startEvent(Field.RequestMarshallTime);
            try {
                request = new DescribeExecutionRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(describeExecutionRequest));
                // 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, "SFN");
                request.addHandlerContext(HandlerContextKey.OPERATION_NAME, "DescribeExecution");
                request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig);

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

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

            return response.getAwsResponse();

        } finally {

            endClientExecution(awsRequestMetrics, request, response);
        }
    }
<p>
Provides information about a state machine execution, such as the state machine associated with the execution,
the execution input and output, and relevant execution metadata. If you've <a
href="https://docs.aws.amazon.com/step-functions/latest/dg/redrive-executions.html">redriven</a> an execution,
you can use this API action to return information about the redrives of that execution. In addition, you can use
this API action to return the Map Run Amazon Resource Name (ARN) if the execution was dispatched by a Map Run.
</p>
<p>
If you specify a version or alias ARN when you call the <a>StartExecution</a> API action,
<code>DescribeExecution</code> returns that ARN.
</p>
<note>
<p>
This operation is eventually consistent. The results are best effort and may not reflect very recent updates and
changes.
</p>
</note>
<p>
Executions of an <code>EXPRESS</code> state machine aren't supported by <code>DescribeExecution</code> unless a
Map Run dispatched them.
</p>

@param describeExecutionRequest
@return Result of the DescribeExecution operation returned by the service.
@throws ExecutionDoesNotExistException
        The specified execution does not exist.
@throws InvalidArnException
        The provided Amazon Resource Name (ARN) is not valid.
@throws KmsAccessDeniedException
        Either your KMS key policy or API caller does not have the required permissions.
@throws KmsInvalidStateException
        The KMS key is not in valid state, for example: Disabled or Deleted.
@throws KmsThrottlingException
        Received when KMS returns <code>ThrottlingException</code> for a KMS call that Step Functions makes on
        behalf of the caller.
@sample AWSStepFunctions.DescribeExecution
@see <a href="http://docs.aws.amazon.com/goto/WebAPI/states-2016-11-23/DescribeExecution" target="_top">AWS API
     Documentation</a>
aws-java-sdk-stepfunctions/src/main/java/com/amazonaws/services/stepfunctions/AWSStepFunctionsClient.java