/* * Copyright 2018-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with * the License. A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ package com.amazonaws.services.stepfunctions; import org.w3c.dom.*; import java.net.*; import java.util.*; import javax.annotation.Generated; import org.apache.commons.logging.*; import com.amazonaws.*; import com.amazonaws.annotation.SdkInternalApi; import com.amazonaws.auth.*; import com.amazonaws.handlers.*; import com.amazonaws.http.*; import com.amazonaws.internal.*; import com.amazonaws.internal.auth.*; import com.amazonaws.metrics.*; import com.amazonaws.regions.*; import com.amazonaws.transform.*; import com.amazonaws.util.*; import com.amazonaws.protocol.json.*; import com.amazonaws.util.AWSRequestMetrics.Field; import com.amazonaws.annotation.ThreadSafe; import com.amazonaws.client.AwsSyncClientParams; import com.amazonaws.client.builder.AdvancedConfig; import com.amazonaws.services.stepfunctions.AWSStepFunctionsClientBuilder; import com.amazonaws.AmazonServiceException; import com.amazonaws.services.stepfunctions.model.*; import com.amazonaws.services.stepfunctions.model.transform.*; /** * Client for accessing AWS SFN. All service calls made using this client are blocking, and will not return until the * service call completes. *

* Step Functions *

* Step Functions is a service that lets you coordinate the components of distributed applications and microservices * using visual workflows. *

*

* You can use Step Functions to build applications from individual components, each of which performs a discrete * function, or task, allowing you to scale and change applications quickly. Step Functions provides a console * that helps visualize the components of your application as a series of steps. Step Functions automatically triggers * and tracks each step, and retries steps when there are errors, so your application executes predictably and in the * right order every time. Step Functions logs the state of each step, so you can quickly diagnose and debug any issues. *

*

* Step Functions manages operations and underlying infrastructure to ensure your application is available at any scale. * You can run tasks on Amazon Web Services, your own servers, or any system that has access to Amazon Web Services. You * can access and use Step Functions using the console, the Amazon Web Services SDKs, or an HTTP API. For more * information about Step Functions, see the Step Functions Developer Guide . *

*/ @ThreadSafe @Generated("com.amazonaws:aws-java-sdk-code-generator") public class AWSStepFunctionsClient extends AmazonWebServiceClient implements AWSStepFunctions { /** Provider for AWS credentials. */ private final AWSCredentialsProvider awsCredentialsProvider; private static final Log log = LogFactory.getLog(AWSStepFunctions.class); /** Default signing name for the service. */ private static final String DEFAULT_SIGNING_NAME = "states"; /** Client configuration factory providing ClientConfigurations tailored to this client */ protected static final com.amazonaws.services.stepfunctions.AWSStepFunctionsClientConfigurationFactory configFactory = new com.amazonaws.services.stepfunctions.AWSStepFunctionsClientConfigurationFactory(); private final AdvancedConfig advancedConfig; private static final com.amazonaws.protocol.json.SdkJsonProtocolFactory protocolFactory = new com.amazonaws.protocol.json.SdkJsonProtocolFactory( new JsonClientMetadata() .withProtocolVersion("1.0") .withSupportsCbor(false) .withSupportsIon(false) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("ActivityDoesNotExist").withExceptionUnmarshaller( com.amazonaws.services.stepfunctions.model.transform.ActivityDoesNotExistExceptionUnmarshaller.getInstance())) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("StateMachineTypeNotSupported").withExceptionUnmarshaller( com.amazonaws.services.stepfunctions.model.transform.StateMachineTypeNotSupportedExceptionUnmarshaller.getInstance())) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("InvalidDefinition").withExceptionUnmarshaller( com.amazonaws.services.stepfunctions.model.transform.InvalidDefinitionExceptionUnmarshaller.getInstance())) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("InvalidName").withExceptionUnmarshaller( com.amazonaws.services.stepfunctions.model.transform.InvalidNameExceptionUnmarshaller.getInstance())) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("InvalidLoggingConfiguration").withExceptionUnmarshaller( com.amazonaws.services.stepfunctions.model.transform.InvalidLoggingConfigurationExceptionUnmarshaller.getInstance())) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("StateMachineAlreadyExists").withExceptionUnmarshaller( com.amazonaws.services.stepfunctions.model.transform.StateMachineAlreadyExistsExceptionUnmarshaller.getInstance())) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("ExecutionLimitExceeded").withExceptionUnmarshaller( com.amazonaws.services.stepfunctions.model.transform.ExecutionLimitExceededExceptionUnmarshaller.getInstance())) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("InvalidArn").withExceptionUnmarshaller( com.amazonaws.services.stepfunctions.model.transform.InvalidArnExceptionUnmarshaller.getInstance())) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("StateMachineDeleting").withExceptionUnmarshaller( com.amazonaws.services.stepfunctions.model.transform.StateMachineDeletingExceptionUnmarshaller.getInstance())) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("ActivityWorkerLimitExceeded").withExceptionUnmarshaller( com.amazonaws.services.stepfunctions.model.transform.ActivityWorkerLimitExceededExceptionUnmarshaller.getInstance())) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("TaskTimedOut").withExceptionUnmarshaller( com.amazonaws.services.stepfunctions.model.transform.TaskTimedOutExceptionUnmarshaller.getInstance())) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("ExecutionAlreadyExists").withExceptionUnmarshaller( com.amazonaws.services.stepfunctions.model.transform.ExecutionAlreadyExistsExceptionUnmarshaller.getInstance())) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("MissingRequiredParameter").withExceptionUnmarshaller( com.amazonaws.services.stepfunctions.model.transform.MissingRequiredParameterExceptionUnmarshaller.getInstance())) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("ExecutionDoesNotExist").withExceptionUnmarshaller( com.amazonaws.services.stepfunctions.model.transform.ExecutionDoesNotExistExceptionUnmarshaller.getInstance())) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("ServiceQuotaExceededException").withExceptionUnmarshaller( com.amazonaws.services.stepfunctions.model.transform.ServiceQuotaExceededExceptionUnmarshaller.getInstance())) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("StateMachineLimitExceeded").withExceptionUnmarshaller( com.amazonaws.services.stepfunctions.model.transform.StateMachineLimitExceededExceptionUnmarshaller.getInstance())) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("InvalidToken").withExceptionUnmarshaller( com.amazonaws.services.stepfunctions.model.transform.InvalidTokenExceptionUnmarshaller.getInstance())) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("TooManyTags").withExceptionUnmarshaller( com.amazonaws.services.stepfunctions.model.transform.TooManyTagsExceptionUnmarshaller.getInstance())) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("ConflictException").withExceptionUnmarshaller( com.amazonaws.services.stepfunctions.model.transform.ConflictExceptionUnmarshaller.getInstance())) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("InvalidOutput").withExceptionUnmarshaller( com.amazonaws.services.stepfunctions.model.transform.InvalidOutputExceptionUnmarshaller.getInstance())) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("InvalidTracingConfiguration").withExceptionUnmarshaller( com.amazonaws.services.stepfunctions.model.transform.InvalidTracingConfigurationExceptionUnmarshaller.getInstance())) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("ResourceNotFound").withExceptionUnmarshaller( com.amazonaws.services.stepfunctions.model.transform.ResourceNotFoundExceptionUnmarshaller.getInstance())) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("ActivityLimitExceeded").withExceptionUnmarshaller( com.amazonaws.services.stepfunctions.model.transform.ActivityLimitExceededExceptionUnmarshaller.getInstance())) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("InvalidExecutionInput").withExceptionUnmarshaller( com.amazonaws.services.stepfunctions.model.transform.InvalidExecutionInputExceptionUnmarshaller.getInstance())) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("TaskDoesNotExist").withExceptionUnmarshaller( com.amazonaws.services.stepfunctions.model.transform.TaskDoesNotExistExceptionUnmarshaller.getInstance())) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("ValidationException").withExceptionUnmarshaller( com.amazonaws.services.stepfunctions.model.transform.ValidationExceptionUnmarshaller.getInstance())) .addErrorMetadata( new JsonErrorShapeMetadata().withErrorCode("StateMachineDoesNotExist").withExceptionUnmarshaller( com.amazonaws.services.stepfunctions.model.transform.StateMachineDoesNotExistExceptionUnmarshaller.getInstance())) .withBaseServiceExceptionClass(com.amazonaws.services.stepfunctions.model.AWSStepFunctionsException.class)); /** * Constructs a new client to invoke service methods on AWS SFN. A credentials provider chain will be used that * searches for credentials in this order: * * *

* All service calls made using this new client object are blocking, and will not return until the service call * completes. * * @see DefaultAWSCredentialsProviderChain * @deprecated use {@link AWSStepFunctionsClientBuilder#defaultClient()} */ @Deprecated public AWSStepFunctionsClient() { this(DefaultAWSCredentialsProviderChain.getInstance(), configFactory.getConfig()); } /** * Constructs a new client to invoke service methods on AWS SFN. A credentials provider chain will be used that * searches for credentials in this order: *

* *

* All service calls made using this new client object are blocking, and will not return until the service call * completes. * * @param clientConfiguration * The client configuration options controlling how this client connects to AWS SFN (ex: proxy settings, * retry counts, etc.). * * @see DefaultAWSCredentialsProviderChain * @deprecated use {@link AWSStepFunctionsClientBuilder#withClientConfiguration(ClientConfiguration)} */ @Deprecated public AWSStepFunctionsClient(ClientConfiguration clientConfiguration) { this(DefaultAWSCredentialsProviderChain.getInstance(), clientConfiguration); } /** * Constructs a new client to invoke service methods on AWS SFN using the specified AWS account credentials. * *

* All service calls made using this new client object are blocking, and will not return until the service call * completes. * * @param awsCredentials * The AWS credentials (access key ID and secret key) to use when authenticating with AWS services. * @deprecated use {@link AWSStepFunctionsClientBuilder#withCredentials(AWSCredentialsProvider)} for example: * {@code AWSStepFunctionsClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(awsCredentials)).build();} */ @Deprecated public AWSStepFunctionsClient(AWSCredentials awsCredentials) { this(awsCredentials, configFactory.getConfig()); } /** * Constructs a new client to invoke service methods on AWS SFN using the specified AWS account credentials and * client configuration options. * *

* All service calls made using this new client object are blocking, and will not return until the service call * completes. * * @param awsCredentials * The AWS credentials (access key ID and secret key) to use when authenticating with AWS services. * @param clientConfiguration * The client configuration options controlling how this client connects to AWS SFN (ex: proxy settings, * retry counts, etc.). * @deprecated use {@link AWSStepFunctionsClientBuilder#withCredentials(AWSCredentialsProvider)} and * {@link AWSStepFunctionsClientBuilder#withClientConfiguration(ClientConfiguration)} */ @Deprecated public AWSStepFunctionsClient(AWSCredentials awsCredentials, ClientConfiguration clientConfiguration) { super(clientConfiguration); this.awsCredentialsProvider = new StaticCredentialsProvider(awsCredentials); this.advancedConfig = AdvancedConfig.EMPTY; init(); } /** * Constructs a new client to invoke service methods on AWS SFN using the specified AWS account credentials * provider. * *

* All service calls made using this new client object are blocking, and will not return until the service call * completes. * * @param awsCredentialsProvider * The AWS credentials provider which will provide credentials to authenticate requests with AWS services. * @deprecated use {@link AWSStepFunctionsClientBuilder#withCredentials(AWSCredentialsProvider)} */ @Deprecated public AWSStepFunctionsClient(AWSCredentialsProvider awsCredentialsProvider) { this(awsCredentialsProvider, configFactory.getConfig()); } /** * Constructs a new client to invoke service methods on AWS SFN using the specified AWS account credentials provider * and client configuration options. * *

* All service calls made using this new client object are blocking, and will not return until the service call * completes. * * @param awsCredentialsProvider * The AWS credentials provider which will provide credentials to authenticate requests with AWS services. * @param clientConfiguration * The client configuration options controlling how this client connects to AWS SFN (ex: proxy settings, * retry counts, etc.). * @deprecated use {@link AWSStepFunctionsClientBuilder#withCredentials(AWSCredentialsProvider)} and * {@link AWSStepFunctionsClientBuilder#withClientConfiguration(ClientConfiguration)} */ @Deprecated public AWSStepFunctionsClient(AWSCredentialsProvider awsCredentialsProvider, ClientConfiguration clientConfiguration) { this(awsCredentialsProvider, clientConfiguration, null); } /** * Constructs a new client to invoke service methods on AWS SFN using the specified AWS account credentials * provider, client configuration options, and request metric collector. * *

* All service calls made using this new client object are blocking, and will not return until the service call * completes. * * @param awsCredentialsProvider * The AWS credentials provider which will provide credentials to authenticate requests with AWS services. * @param clientConfiguration * The client configuration options controlling how this client connects to AWS SFN (ex: proxy settings, * retry counts, etc.). * @param requestMetricCollector * optional request metric collector * @deprecated use {@link AWSStepFunctionsClientBuilder#withCredentials(AWSCredentialsProvider)} and * {@link AWSStepFunctionsClientBuilder#withClientConfiguration(ClientConfiguration)} and * {@link AWSStepFunctionsClientBuilder#withMetricsCollector(RequestMetricCollector)} */ @Deprecated public AWSStepFunctionsClient(AWSCredentialsProvider awsCredentialsProvider, ClientConfiguration clientConfiguration, RequestMetricCollector requestMetricCollector) { super(clientConfiguration, requestMetricCollector); this.awsCredentialsProvider = awsCredentialsProvider; this.advancedConfig = AdvancedConfig.EMPTY; init(); } public static AWSStepFunctionsClientBuilder builder() { return AWSStepFunctionsClientBuilder.standard(); } /** * Constructs a new client to invoke service methods on AWS SFN using the specified parameters. * *

* All service calls made using this new client object are blocking, and will not return until the service call * completes. * * @param clientParams * Object providing client parameters. */ AWSStepFunctionsClient(AwsSyncClientParams clientParams) { this(clientParams, false); } /** * Constructs a new client to invoke service methods on AWS SFN using the specified parameters. * *

* All service calls made using this new client object are blocking, and will not return until the service call * completes. * * @param clientParams * Object providing client parameters. */ AWSStepFunctionsClient(AwsSyncClientParams clientParams, boolean endpointDiscoveryEnabled) { super(clientParams); this.awsCredentialsProvider = clientParams.getCredentialsProvider(); this.advancedConfig = clientParams.getAdvancedConfig(); init(); } private void init() { setServiceNameIntern(DEFAULT_SIGNING_NAME); setEndpointPrefix(ENDPOINT_PREFIX); // calling this.setEndPoint(...) will also modify the signer accordingly setEndpoint("states.us-east-1.amazonaws.com"); HandlerChainFactory chainFactory = new HandlerChainFactory(); requestHandler2s.addAll(chainFactory.newRequestHandlerChain("/com/amazonaws/services/stepfunctions/request.handlers")); requestHandler2s.addAll(chainFactory.newRequestHandler2Chain("/com/amazonaws/services/stepfunctions/request.handler2s")); requestHandler2s.addAll(chainFactory.getGlobalHandlers()); } /** *

* Creates an activity. An activity is a task that you write in any programming language and host on any machine * that has access to Step Functions. Activities must poll Step Functions using the GetActivityTask API * action and respond using SendTask* API actions. This function lets Step Functions know the existence * of your activity and returns an identifier for use in a state machine and when polling from the activity. *

* *

* This operation is eventually consistent. The results are best effort and may not reflect very recent updates and * changes. *

*
*

* CreateActivity is an idempotent API. Subsequent requests won’t create a duplicate resource if it was * already created. CreateActivity's idempotency check is based on the activity name. If a * following request has different tags values, Step Functions will ignore these differences and treat * it as an idempotent request of the previous. In this case, tags will not be updated, even if they * are different. *

*
* * @param createActivityRequest * @return Result of the CreateActivity operation returned by the service. * @throws ActivityLimitExceededException * The maximum number of activities has been reached. Existing activities must be deleted before a new * activity can be created. * @throws InvalidNameException * The provided name is not valid. * @throws TooManyTagsException * You've exceeded the number of tags allowed for a resource. See the Limits Topic in the Step * Functions Developer Guide. * @sample AWSStepFunctions.CreateActivity * @see AWS API * Documentation */ @Override public CreateActivityResult createActivity(CreateActivityRequest request) { request = beforeClientExecution(request); return executeCreateActivity(request); } @SdkInternalApi final CreateActivityResult executeCreateActivity(CreateActivityRequest createActivityRequest) { ExecutionContext executionContext = createExecutionContext(createActivityRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new CreateActivityRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(createActivityRequest)); // 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, "CreateActivity"); request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new CreateActivityResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Creates a state machine. A state machine consists of a collection of states that can do work (Task * states), determine to which states to transition next (Choice states), stop an execution with an * error (Fail states), and so on. State machines are specified using a JSON-based, structured * language. For more information, see Amazon States * Language in the Step Functions User Guide. *

*

* If you set the publish parameter of this API action to true, it publishes version * 1 as the first revision of the state machine. *

* *

* This operation is eventually consistent. The results are best effort and may not reflect very recent updates and * changes. *

*
*

* CreateStateMachine is an idempotent API. Subsequent requests won’t create a duplicate resource if it * was already created. CreateStateMachine's idempotency check is based on the state machine * name, definition, type, LoggingConfiguration, and * TracingConfiguration. The check is also based on the publish and * versionDescription parameters. If a following request has a different roleArn or * tags, Step Functions will ignore these differences and treat it as an idempotent request of the * previous. In this case, roleArn and tags will not be updated, even if they are * different. *

*
* * @param createStateMachineRequest * @return Result of the CreateStateMachine operation returned by the service. * @throws InvalidArnException * The provided Amazon Resource Name (ARN) is not valid. * @throws InvalidDefinitionException * The provided Amazon States Language definition is not valid. * @throws InvalidNameException * The provided name is not valid. * @throws InvalidLoggingConfigurationException * @throws InvalidTracingConfigurationException * Your tracingConfiguration key does not match, or enabled has not been set to * true or false. * @throws StateMachineAlreadyExistsException * A state machine with the same name but a different definition or role ARN already exists. * @throws StateMachineDeletingException * The specified state machine is being deleted. * @throws StateMachineLimitExceededException * The maximum number of state machines has been reached. Existing state machines must be deleted before a * new state machine can be created. * @throws StateMachineTypeNotSupportedException * @throws TooManyTagsException * You've exceeded the number of tags allowed for a resource. See the Limits Topic in the Step * Functions Developer Guide. * @throws ValidationException * The input does not satisfy the constraints specified by an Amazon Web Services service. * @throws ConflictException * Updating or deleting a resource can cause an inconsistent state. This error occurs when there're * concurrent requests for DeleteStateMachineVersion, PublishStateMachineVersion, or * UpdateStateMachine with the publish parameter set to true.

*

* HTTP Status Code: 409 * @sample AWSStepFunctions.CreateStateMachine * @see AWS API * Documentation */ @Override public CreateStateMachineResult createStateMachine(CreateStateMachineRequest request) { request = beforeClientExecution(request); return executeCreateStateMachine(request); } @SdkInternalApi final CreateStateMachineResult executeCreateStateMachine(CreateStateMachineRequest createStateMachineRequest) { ExecutionContext executionContext = createExecutionContext(createStateMachineRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new CreateStateMachineRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(createStateMachineRequest)); // 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, "CreateStateMachine"); request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new CreateStateMachineResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Creates an alias for a * state machine that points to one or two versions of * the same state machine. You can set your application to call StartExecution with an alias and update the * version the alias uses without changing the client's code. *

*

* You can also map an alias to split StartExecution requests between two versions of a state machine. To do * this, add a second RoutingConfig object in the routingConfiguration parameter. You must * also specify the percentage of execution run requests each version should receive in both * RoutingConfig objects. Step Functions randomly chooses which version runs a given execution based on * the percentage you specify. *

*

* To create an alias that points to a single version, specify a single RoutingConfig object with a * weight set to 100. *

*

* You can create up to 100 aliases for each state machine. You must delete unused aliases using the * DeleteStateMachineAlias API action. *

*

* CreateStateMachineAlias is an idempotent API. Step Functions bases the idempotency check on the * stateMachineArn, description, name, and routingConfiguration * parameters. Requests that contain the same values for these parameters return a successful idempotent response * without creating a duplicate resource. *

*

* Related operations: *

* * * @param createStateMachineAliasRequest * @return Result of the CreateStateMachineAlias operation returned by the service. * @throws InvalidArnException * The provided Amazon Resource Name (ARN) is not valid. * @throws InvalidNameException * The provided name is not valid. * @throws ValidationException * The input does not satisfy the constraints specified by an Amazon Web Services service. * @throws StateMachineDeletingException * The specified state machine is being deleted. * @throws ResourceNotFoundException * Could not find the referenced resource. * @throws ConflictException * Updating or deleting a resource can cause an inconsistent state. This error occurs when there're * concurrent requests for DeleteStateMachineVersion, PublishStateMachineVersion, or * UpdateStateMachine with the publish parameter set to true.

*

* HTTP Status Code: 409 * @throws ServiceQuotaExceededException * The request would cause a service quota to be exceeded. *

*

* HTTP Status Code: 402 * @sample AWSStepFunctions.CreateStateMachineAlias * @see AWS * API Documentation */ @Override public CreateStateMachineAliasResult createStateMachineAlias(CreateStateMachineAliasRequest request) { request = beforeClientExecution(request); return executeCreateStateMachineAlias(request); } @SdkInternalApi final CreateStateMachineAliasResult executeCreateStateMachineAlias(CreateStateMachineAliasRequest createStateMachineAliasRequest) { ExecutionContext executionContext = createExecutionContext(createStateMachineAliasRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new CreateStateMachineAliasRequestProtocolMarshaller(protocolFactory).marshall(super .beforeMarshalling(createStateMachineAliasRequest)); // 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, "CreateStateMachineAlias"); request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new CreateStateMachineAliasResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Deletes an activity. *

* * @param deleteActivityRequest * @return Result of the DeleteActivity operation returned by the service. * @throws InvalidArnException * The provided Amazon Resource Name (ARN) is not valid. * @sample AWSStepFunctions.DeleteActivity * @see AWS API * Documentation */ @Override public DeleteActivityResult deleteActivity(DeleteActivityRequest request) { request = beforeClientExecution(request); return executeDeleteActivity(request); } @SdkInternalApi final DeleteActivityResult executeDeleteActivity(DeleteActivityRequest deleteActivityRequest) { ExecutionContext executionContext = createExecutionContext(deleteActivityRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DeleteActivityRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(deleteActivityRequest)); // 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, "DeleteActivity"); request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new DeleteActivityResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Deletes a state machine. This is an asynchronous operation: It sets the state machine's status to * DELETING and begins the deletion process. *

*

* A qualified state machine ARN can either refer to a Distributed Map state defined within a state machine, * a version ARN, or an alias ARN. *

*

* The following are some examples of qualified and unqualified state machine ARNs: *

*
    *
  • *

    * The following qualified state machine ARN refers to a Distributed Map state with a label * mapStateLabel in a state machine named myStateMachine. *

    *

    * arn:partition:states:region:account-id:stateMachine:myStateMachine/mapStateLabel *

    * *

    * If you provide a qualified state machine ARN that refers to a Distributed Map state, the request fails * with ValidationException. *

    *
  • *
  • *

    * The following unqualified state machine ARN refers to a state machine named myStateMachine. *

    *

    * arn:partition:states:region:account-id:stateMachine:myStateMachine *

    *
  • *
*

* This API action also deletes all versions and * aliases * associated with a state machine. *

* *

* For EXPRESS state machines, the deletion happens eventually (usually in less than a minute). Running * executions may emit logs after DeleteStateMachine API is called. *

*
* * @param deleteStateMachineRequest * @return Result of the DeleteStateMachine operation returned by the service. * @throws InvalidArnException * The provided Amazon Resource Name (ARN) is not valid. * @throws ValidationException * The input does not satisfy the constraints specified by an Amazon Web Services service. * @sample AWSStepFunctions.DeleteStateMachine * @see AWS API * Documentation */ @Override public DeleteStateMachineResult deleteStateMachine(DeleteStateMachineRequest request) { request = beforeClientExecution(request); return executeDeleteStateMachine(request); } @SdkInternalApi final DeleteStateMachineResult executeDeleteStateMachine(DeleteStateMachineRequest deleteStateMachineRequest) { ExecutionContext executionContext = createExecutionContext(deleteStateMachineRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DeleteStateMachineRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(deleteStateMachineRequest)); // 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, "DeleteStateMachine"); request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new DeleteStateMachineResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Deletes a state machine alias. *

*

* After you delete a state machine alias, you can't use it to start executions. When you delete a state machine * alias, Step Functions doesn't delete the state machine versions that alias references. *

*

* Related operations: *

* * * @param deleteStateMachineAliasRequest * @return Result of the DeleteStateMachineAlias operation returned by the service. * @throws ValidationException * The input does not satisfy the constraints specified by an Amazon Web Services service. * @throws InvalidArnException * The provided Amazon Resource Name (ARN) is not valid. * @throws ResourceNotFoundException * Could not find the referenced resource. * @throws ConflictException * Updating or deleting a resource can cause an inconsistent state. This error occurs when there're * concurrent requests for DeleteStateMachineVersion, PublishStateMachineVersion, or * UpdateStateMachine with the publish parameter set to true.

*

* HTTP Status Code: 409 * @sample AWSStepFunctions.DeleteStateMachineAlias * @see AWS * API Documentation */ @Override public DeleteStateMachineAliasResult deleteStateMachineAlias(DeleteStateMachineAliasRequest request) { request = beforeClientExecution(request); return executeDeleteStateMachineAlias(request); } @SdkInternalApi final DeleteStateMachineAliasResult executeDeleteStateMachineAlias(DeleteStateMachineAliasRequest deleteStateMachineAliasRequest) { ExecutionContext executionContext = createExecutionContext(deleteStateMachineAliasRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DeleteStateMachineAliasRequestProtocolMarshaller(protocolFactory).marshall(super .beforeMarshalling(deleteStateMachineAliasRequest)); // 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, "DeleteStateMachineAlias"); request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new DeleteStateMachineAliasResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Deletes a state machine version. * After you delete a version, you can't call StartExecution using that version's ARN or use the version with * a state machine alias. *

* *

* Deleting a state machine version won't terminate its in-progress executions. *

*
*

* You can't delete a state machine version currently referenced by one or more aliases. Before you delete a * version, you must either delete the aliases or update them to point to another state machine version. *

*
*

* Related operations: *

* * * @param deleteStateMachineVersionRequest * @return Result of the DeleteStateMachineVersion operation returned by the service. * @throws ValidationException * The input does not satisfy the constraints specified by an Amazon Web Services service. * @throws InvalidArnException * The provided Amazon Resource Name (ARN) is not valid. * @throws ConflictException * Updating or deleting a resource can cause an inconsistent state. This error occurs when there're * concurrent requests for DeleteStateMachineVersion, PublishStateMachineVersion, or * UpdateStateMachine with the publish parameter set to true.

*

* HTTP Status Code: 409 * @sample AWSStepFunctions.DeleteStateMachineVersion * @see AWS API Documentation */ @Override public DeleteStateMachineVersionResult deleteStateMachineVersion(DeleteStateMachineVersionRequest request) { request = beforeClientExecution(request); return executeDeleteStateMachineVersion(request); } @SdkInternalApi final DeleteStateMachineVersionResult executeDeleteStateMachineVersion(DeleteStateMachineVersionRequest deleteStateMachineVersionRequest) { ExecutionContext executionContext = createExecutionContext(deleteStateMachineVersionRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DeleteStateMachineVersionRequestProtocolMarshaller(protocolFactory).marshall(super .beforeMarshalling(deleteStateMachineVersionRequest)); // 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, "DeleteStateMachineVersion"); request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new DeleteStateMachineVersionResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Describes an activity. *

* *

* This operation is eventually consistent. The results are best effort and may not reflect very recent updates and * changes. *

*
* * @param describeActivityRequest * @return Result of the DescribeActivity operation returned by the service. * @throws ActivityDoesNotExistException * The specified activity does not exist. * @throws InvalidArnException * The provided Amazon Resource Name (ARN) is not valid. * @sample AWSStepFunctions.DescribeActivity * @see AWS API * Documentation */ @Override public DescribeActivityResult describeActivity(DescribeActivityRequest request) { request = beforeClientExecution(request); return executeDescribeActivity(request); } @SdkInternalApi final DescribeActivityResult executeDescribeActivity(DescribeActivityRequest describeActivityRequest) { ExecutionContext executionContext = createExecutionContext(describeActivityRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DescribeActivityRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(describeActivityRequest)); // 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, "DescribeActivity"); request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new DescribeActivityResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* 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. Use this API action to return the Map Run Amazon * Resource Name (ARN) if the execution was dispatched by a Map Run. *

*

* If you specify a version or alias ARN when you call the StartExecution API action, * DescribeExecution returns that ARN. *

* *

* This operation is eventually consistent. The results are best effort and may not reflect very recent updates and * changes. *

*
*

* Executions of an EXPRESS state machinearen't supported by DescribeExecution unless a * Map Run dispatched them. *

* * @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. * @sample AWSStepFunctions.DescribeExecution * @see AWS API * Documentation */ @Override public DescribeExecutionResult describeExecution(DescribeExecutionRequest request) { request = beforeClientExecution(request); return executeDescribeExecution(request); } @SdkInternalApi final DescribeExecutionResult executeDescribeExecution(DescribeExecutionRequest describeExecutionRequest) { ExecutionContext executionContext = createExecutionContext(describeExecutionRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response 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> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new DescribeExecutionResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Provides information about a Map Run's configuration, progress, and results. For more information, see Examining Map Run * in the Step Functions Developer Guide. *

* * @param describeMapRunRequest * @return Result of the DescribeMapRun operation returned by the service. * @throws ResourceNotFoundException * Could not find the referenced resource. * @throws InvalidArnException * The provided Amazon Resource Name (ARN) is not valid. * @sample AWSStepFunctions.DescribeMapRun * @see AWS API * Documentation */ @Override public DescribeMapRunResult describeMapRun(DescribeMapRunRequest request) { request = beforeClientExecution(request); return executeDescribeMapRun(request); } @SdkInternalApi final DescribeMapRunResult executeDescribeMapRun(DescribeMapRunRequest describeMapRunRequest) { ExecutionContext executionContext = createExecutionContext(describeMapRunRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DescribeMapRunRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(describeMapRunRequest)); // 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, "DescribeMapRun"); request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new DescribeMapRunResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Provides information about a state machine's definition, its IAM role Amazon Resource Name (ARN), and * configuration. *

*

* A qualified state machine ARN can either refer to a Distributed Map state defined within a state machine, * a version ARN, or an alias ARN. *

*

* The following are some examples of qualified and unqualified state machine ARNs: *

*
    *
  • *

    * The following qualified state machine ARN refers to a Distributed Map state with a label * mapStateLabel in a state machine named myStateMachine. *

    *

    * arn:partition:states:region:account-id:stateMachine:myStateMachine/mapStateLabel *

    * *

    * If you provide a qualified state machine ARN that refers to a Distributed Map state, the request fails * with ValidationException. *

    *
  • *
  • *

    * The following qualified state machine ARN refers to an alias named PROD. *

    *

    * arn:<partition>:states:<region>:<account-id>:stateMachine:<myStateMachine:PROD> *

    * *

    * If you provide a qualified state machine ARN that refers to a version ARN or an alias ARN, the request starts * execution for that version or alias. *

    *
  • *
  • *

    * The following unqualified state machine ARN refers to a state machine named myStateMachine. *

    *

    * arn:<partition>:states:<region>:<account-id>:stateMachine:<myStateMachine> *

    *
  • *
*

* This API action returns the details for a state machine version if the stateMachineArn you specify * is a state machine version ARN. *

* *

* This operation is eventually consistent. The results are best effort and may not reflect very recent updates and * changes. *

*
* * @param describeStateMachineRequest * @return Result of the DescribeStateMachine operation returned by the service. * @throws InvalidArnException * The provided Amazon Resource Name (ARN) is not valid. * @throws StateMachineDoesNotExistException * The specified state machine does not exist. * @sample AWSStepFunctions.DescribeStateMachine * @see AWS * API Documentation */ @Override public DescribeStateMachineResult describeStateMachine(DescribeStateMachineRequest request) { request = beforeClientExecution(request); return executeDescribeStateMachine(request); } @SdkInternalApi final DescribeStateMachineResult executeDescribeStateMachine(DescribeStateMachineRequest describeStateMachineRequest) { ExecutionContext executionContext = createExecutionContext(describeStateMachineRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DescribeStateMachineRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(describeStateMachineRequest)); // 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, "DescribeStateMachine"); request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new DescribeStateMachineResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Returns details about a state machine alias. *

*

* Related operations: *

* * * @param describeStateMachineAliasRequest * @return Result of the DescribeStateMachineAlias operation returned by the service. * @throws ValidationException * The input does not satisfy the constraints specified by an Amazon Web Services service. * @throws InvalidArnException * The provided Amazon Resource Name (ARN) is not valid. * @throws ResourceNotFoundException * Could not find the referenced resource. * @sample AWSStepFunctions.DescribeStateMachineAlias * @see AWS API Documentation */ @Override public DescribeStateMachineAliasResult describeStateMachineAlias(DescribeStateMachineAliasRequest request) { request = beforeClientExecution(request); return executeDescribeStateMachineAlias(request); } @SdkInternalApi final DescribeStateMachineAliasResult executeDescribeStateMachineAlias(DescribeStateMachineAliasRequest describeStateMachineAliasRequest) { ExecutionContext executionContext = createExecutionContext(describeStateMachineAliasRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DescribeStateMachineAliasRequestProtocolMarshaller(protocolFactory).marshall(super .beforeMarshalling(describeStateMachineAliasRequest)); // 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, "DescribeStateMachineAlias"); request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new DescribeStateMachineAliasResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Provides information about a state machine's definition, its execution role ARN, and configuration. If a Map Run * dispatched the execution, this action returns the Map Run Amazon Resource Name (ARN) in the response. The state * machine returned is the state machine associated with the Map Run. *

* *

* This operation is eventually consistent. The results are best effort and may not reflect very recent updates and * changes. *

*
*

* This API action is not supported by EXPRESS state machines. *

* * @param describeStateMachineForExecutionRequest * @return Result of the DescribeStateMachineForExecution operation returned by the service. * @throws ExecutionDoesNotExistException * The specified execution does not exist. * @throws InvalidArnException * The provided Amazon Resource Name (ARN) is not valid. * @sample AWSStepFunctions.DescribeStateMachineForExecution * @see AWS API Documentation */ @Override public DescribeStateMachineForExecutionResult describeStateMachineForExecution(DescribeStateMachineForExecutionRequest request) { request = beforeClientExecution(request); return executeDescribeStateMachineForExecution(request); } @SdkInternalApi final DescribeStateMachineForExecutionResult executeDescribeStateMachineForExecution( DescribeStateMachineForExecutionRequest describeStateMachineForExecutionRequest) { ExecutionContext executionContext = createExecutionContext(describeStateMachineForExecutionRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new DescribeStateMachineForExecutionRequestProtocolMarshaller(protocolFactory).marshall(super .beforeMarshalling(describeStateMachineForExecutionRequest)); // 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, "DescribeStateMachineForExecution"); request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new DescribeStateMachineForExecutionResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Used by workers to retrieve a task (with the specified activity ARN) which has been scheduled for execution by a * running state machine. This initiates a long poll, where the service holds the HTTP connection open and responds * as soon as a task becomes available (i.e. an execution of a task of this type is needed.) The maximum time the * service holds on to the request before responding is 60 seconds. If no task is available within 60 seconds, the * poll returns a taskToken with a null string. *

* *

* This API action isn't logged in CloudTrail. *

*
*

* Workers should set their client side socket timeout to at least 65 seconds (5 seconds higher than the maximum * time the service may hold the poll request). *

*

* Polling with GetActivityTask can cause latency in some implementations. See Avoid Latency When Polling * for Activity Tasks in the Step Functions Developer Guide. *

*
* * @param getActivityTaskRequest * @return Result of the GetActivityTask operation returned by the service. * @throws ActivityDoesNotExistException * The specified activity does not exist. * @throws ActivityWorkerLimitExceededException * The maximum number of workers concurrently polling for activity tasks has been reached. * @throws InvalidArnException * The provided Amazon Resource Name (ARN) is not valid. * @sample AWSStepFunctions.GetActivityTask * @see AWS API * Documentation */ @Override public GetActivityTaskResult getActivityTask(GetActivityTaskRequest request) { request = beforeClientExecution(request); return executeGetActivityTask(request); } @SdkInternalApi final GetActivityTaskResult executeGetActivityTask(GetActivityTaskRequest getActivityTaskRequest) { ExecutionContext executionContext = createExecutionContext(getActivityTaskRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetActivityTaskRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(getActivityTaskRequest)); // 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, "GetActivityTask"); request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new GetActivityTaskResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Returns the history of the specified execution as a list of events. By default, the results are returned in * ascending order of the timeStamp of the events. Use the reverseOrder parameter to get * the latest events first. *

*

* If nextToken is returned, there are more results available. The value of nextToken is a * unique pagination token for each page. Make the call again using the returned token to retrieve the next page. * Keep all other arguments unchanged. Each pagination token expires after 24 hours. Using an expired pagination * token will return an HTTP 400 InvalidToken error. *

*

* This API action is not supported by EXPRESS state machines. *

* * @param getExecutionHistoryRequest * @return Result of the GetExecutionHistory 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 InvalidTokenException * The provided token is not valid. * @sample AWSStepFunctions.GetExecutionHistory * @see AWS API * Documentation */ @Override public GetExecutionHistoryResult getExecutionHistory(GetExecutionHistoryRequest request) { request = beforeClientExecution(request); return executeGetExecutionHistory(request); } @SdkInternalApi final GetExecutionHistoryResult executeGetExecutionHistory(GetExecutionHistoryRequest getExecutionHistoryRequest) { ExecutionContext executionContext = createExecutionContext(getExecutionHistoryRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new GetExecutionHistoryRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(getExecutionHistoryRequest)); // 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, "GetExecutionHistory"); request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new GetExecutionHistoryResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Lists the existing activities. *

*

* If nextToken is returned, there are more results available. The value of nextToken is a * unique pagination token for each page. Make the call again using the returned token to retrieve the next page. * Keep all other arguments unchanged. Each pagination token expires after 24 hours. Using an expired pagination * token will return an HTTP 400 InvalidToken error. *

* *

* This operation is eventually consistent. The results are best effort and may not reflect very recent updates and * changes. *

*
* * @param listActivitiesRequest * @return Result of the ListActivities operation returned by the service. * @throws InvalidTokenException * The provided token is not valid. * @sample AWSStepFunctions.ListActivities * @see AWS API * Documentation */ @Override public ListActivitiesResult listActivities(ListActivitiesRequest request) { request = beforeClientExecution(request); return executeListActivities(request); } @SdkInternalApi final ListActivitiesResult executeListActivities(ListActivitiesRequest listActivitiesRequest) { ExecutionContext executionContext = createExecutionContext(listActivitiesRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new ListActivitiesRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(listActivitiesRequest)); // 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, "ListActivities"); request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new ListActivitiesResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Lists all executions of a state machine or a Map Run. You can list all executions related to a state machine by * specifying a state machine Amazon Resource Name (ARN), or those related to a Map Run by specifying a Map Run ARN. *

*

* You can also provide a state machine alias ARN or version ARN * to list the executions associated with a specific alias or version. *

*

* Results are sorted by time, with the most recent execution first. *

*

* If nextToken is returned, there are more results available. The value of nextToken is a * unique pagination token for each page. Make the call again using the returned token to retrieve the next page. * Keep all other arguments unchanged. Each pagination token expires after 24 hours. Using an expired pagination * token will return an HTTP 400 InvalidToken error. *

* *

* This operation is eventually consistent. The results are best effort and may not reflect very recent updates and * changes. *

*
*

* This API action is not supported by EXPRESS state machines. *

* * @param listExecutionsRequest * @return Result of the ListExecutions operation returned by the service. * @throws InvalidArnException * The provided Amazon Resource Name (ARN) is not valid. * @throws InvalidTokenException * The provided token is not valid. * @throws StateMachineDoesNotExistException * The specified state machine does not exist. * @throws StateMachineTypeNotSupportedException * @throws ValidationException * The input does not satisfy the constraints specified by an Amazon Web Services service. * @throws ResourceNotFoundException * Could not find the referenced resource. * @sample AWSStepFunctions.ListExecutions * @see AWS API * Documentation */ @Override public ListExecutionsResult listExecutions(ListExecutionsRequest request) { request = beforeClientExecution(request); return executeListExecutions(request); } @SdkInternalApi final ListExecutionsResult executeListExecutions(ListExecutionsRequest listExecutionsRequest) { ExecutionContext executionContext = createExecutionContext(listExecutionsRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new ListExecutionsRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(listExecutionsRequest)); // 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, "ListExecutions"); request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new ListExecutionsResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Lists all Map Runs that were started by a given state machine execution. Use this API action to obtain Map Run * ARNs, and then call DescribeMapRun to obtain more information, if needed. *

* * @param listMapRunsRequest * @return Result of the ListMapRuns 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 InvalidTokenException * The provided token is not valid. * @sample AWSStepFunctions.ListMapRuns * @see AWS API * Documentation */ @Override public ListMapRunsResult listMapRuns(ListMapRunsRequest request) { request = beforeClientExecution(request); return executeListMapRuns(request); } @SdkInternalApi final ListMapRunsResult executeListMapRuns(ListMapRunsRequest listMapRunsRequest) { ExecutionContext executionContext = createExecutionContext(listMapRunsRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new ListMapRunsRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(listMapRunsRequest)); // 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, "ListMapRuns"); request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new ListMapRunsResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Lists aliases for a * specified state machine ARN. Results are sorted by time, with the most recently created aliases listed first. *

*

* To list aliases that reference a state machine version, you * can specify the version ARN in the stateMachineArn parameter. *

*

* If nextToken is returned, there are more results available. The value of nextToken is a * unique pagination token for each page. Make the call again using the returned token to retrieve the next page. * Keep all other arguments unchanged. Each pagination token expires after 24 hours. Using an expired pagination * token will return an HTTP 400 InvalidToken error. *

*

* Related operations: *

* * * @param listStateMachineAliasesRequest * @return Result of the ListStateMachineAliases operation returned by the service. * @throws InvalidArnException * The provided Amazon Resource Name (ARN) is not valid. * @throws InvalidTokenException * The provided token is not valid. * @throws ResourceNotFoundException * Could not find the referenced resource. * @throws StateMachineDoesNotExistException * The specified state machine does not exist. * @throws StateMachineDeletingException * The specified state machine is being deleted. * @sample AWSStepFunctions.ListStateMachineAliases * @see AWS * API Documentation */ @Override public ListStateMachineAliasesResult listStateMachineAliases(ListStateMachineAliasesRequest request) { request = beforeClientExecution(request); return executeListStateMachineAliases(request); } @SdkInternalApi final ListStateMachineAliasesResult executeListStateMachineAliases(ListStateMachineAliasesRequest listStateMachineAliasesRequest) { ExecutionContext executionContext = createExecutionContext(listStateMachineAliasesRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new ListStateMachineAliasesRequestProtocolMarshaller(protocolFactory).marshall(super .beforeMarshalling(listStateMachineAliasesRequest)); // 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, "ListStateMachineAliases"); request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new ListStateMachineAliasesResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Lists versions for * the specified state machine Amazon Resource Name (ARN). *

*

* The results are sorted in descending order of the version creation time. *

*

* If nextToken is returned, there are more results available. The value of nextToken is a * unique pagination token for each page. Make the call again using the returned token to retrieve the next page. * Keep all other arguments unchanged. Each pagination token expires after 24 hours. Using an expired pagination * token will return an HTTP 400 InvalidToken error. *

*

* Related operations: *

* * * @param listStateMachineVersionsRequest * @return Result of the ListStateMachineVersions operation returned by the service. * @throws ValidationException * The input does not satisfy the constraints specified by an Amazon Web Services service. * @throws InvalidArnException * The provided Amazon Resource Name (ARN) is not valid. * @throws InvalidTokenException * The provided token is not valid. * @sample AWSStepFunctions.ListStateMachineVersions * @see AWS API Documentation */ @Override public ListStateMachineVersionsResult listStateMachineVersions(ListStateMachineVersionsRequest request) { request = beforeClientExecution(request); return executeListStateMachineVersions(request); } @SdkInternalApi final ListStateMachineVersionsResult executeListStateMachineVersions(ListStateMachineVersionsRequest listStateMachineVersionsRequest) { ExecutionContext executionContext = createExecutionContext(listStateMachineVersionsRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new ListStateMachineVersionsRequestProtocolMarshaller(protocolFactory).marshall(super .beforeMarshalling(listStateMachineVersionsRequest)); // 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, "ListStateMachineVersions"); request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new ListStateMachineVersionsResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Lists the existing state machines. *

*

* If nextToken is returned, there are more results available. The value of nextToken is a * unique pagination token for each page. Make the call again using the returned token to retrieve the next page. * Keep all other arguments unchanged. Each pagination token expires after 24 hours. Using an expired pagination * token will return an HTTP 400 InvalidToken error. *

* *

* This operation is eventually consistent. The results are best effort and may not reflect very recent updates and * changes. *

*
* * @param listStateMachinesRequest * @return Result of the ListStateMachines operation returned by the service. * @throws InvalidTokenException * The provided token is not valid. * @sample AWSStepFunctions.ListStateMachines * @see AWS API * Documentation */ @Override public ListStateMachinesResult listStateMachines(ListStateMachinesRequest request) { request = beforeClientExecution(request); return executeListStateMachines(request); } @SdkInternalApi final ListStateMachinesResult executeListStateMachines(ListStateMachinesRequest listStateMachinesRequest) { ExecutionContext executionContext = createExecutionContext(listStateMachinesRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new ListStateMachinesRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(listStateMachinesRequest)); // 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, "ListStateMachines"); request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new ListStateMachinesResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* List tags for a given resource. *

*

* Tags may only contain Unicode letters, digits, white space, or these symbols: _ . : / = + - @. *

* * @param listTagsForResourceRequest * @return Result of the ListTagsForResource operation returned by the service. * @throws InvalidArnException * The provided Amazon Resource Name (ARN) is not valid. * @throws ResourceNotFoundException * Could not find the referenced resource. * @sample AWSStepFunctions.ListTagsForResource * @see AWS API * Documentation */ @Override public ListTagsForResourceResult listTagsForResource(ListTagsForResourceRequest request) { request = beforeClientExecution(request); return executeListTagsForResource(request); } @SdkInternalApi final ListTagsForResourceResult executeListTagsForResource(ListTagsForResourceRequest listTagsForResourceRequest) { ExecutionContext executionContext = createExecutionContext(listTagsForResourceRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new ListTagsForResourceRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(listTagsForResourceRequest)); // 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, "ListTagsForResource"); request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new ListTagsForResourceResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Creates a version from * the current revision of a state machine. Use versions to create immutable snapshots of your state machine. You * can start executions from versions either directly or with an alias. To create an alias, use * CreateStateMachineAlias. *

*

* You can publish up to 1000 versions for each state machine. You must manually delete unused versions using the * DeleteStateMachineVersion API action. *

*

* PublishStateMachineVersion is an idempotent API. It doesn't create a duplicate state machine version * if it already exists for the current revision. Step Functions bases PublishStateMachineVersion's * idempotency check on the stateMachineArn, name, and revisionId parameters. * Requests with the same parameters return a successful idempotent response. If you don't specify a * revisionId, Step Functions checks for a previously published version of the state machine's current * revision. *

*

* Related operations: *

* * * @param publishStateMachineVersionRequest * @return Result of the PublishStateMachineVersion operation returned by the service. * @throws ValidationException * The input does not satisfy the constraints specified by an Amazon Web Services service. * @throws StateMachineDeletingException * The specified state machine is being deleted. * @throws StateMachineDoesNotExistException * The specified state machine does not exist. * @throws ServiceQuotaExceededException * The request would cause a service quota to be exceeded.

*

* HTTP Status Code: 402 * @throws ConflictException * Updating or deleting a resource can cause an inconsistent state. This error occurs when there're * concurrent requests for DeleteStateMachineVersion, PublishStateMachineVersion, or * UpdateStateMachine with the publish parameter set to true. *

*

* HTTP Status Code: 409 * @throws InvalidArnException * The provided Amazon Resource Name (ARN) is not valid. * @sample AWSStepFunctions.PublishStateMachineVersion * @see AWS API Documentation */ @Override public PublishStateMachineVersionResult publishStateMachineVersion(PublishStateMachineVersionRequest request) { request = beforeClientExecution(request); return executePublishStateMachineVersion(request); } @SdkInternalApi final PublishStateMachineVersionResult executePublishStateMachineVersion(PublishStateMachineVersionRequest publishStateMachineVersionRequest) { ExecutionContext executionContext = createExecutionContext(publishStateMachineVersionRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new PublishStateMachineVersionRequestProtocolMarshaller(protocolFactory).marshall(super .beforeMarshalling(publishStateMachineVersionRequest)); // 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, "PublishStateMachineVersion"); request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new PublishStateMachineVersionResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Used by activity workers and task states using the callback pattern to report that the task identified by the taskToken failed. *

* * @param sendTaskFailureRequest * @return Result of the SendTaskFailure operation returned by the service. * @throws TaskDoesNotExistException * @throws InvalidTokenException * The provided token is not valid. * @throws TaskTimedOutException * @sample AWSStepFunctions.SendTaskFailure * @see AWS API * Documentation */ @Override public SendTaskFailureResult sendTaskFailure(SendTaskFailureRequest request) { request = beforeClientExecution(request); return executeSendTaskFailure(request); } @SdkInternalApi final SendTaskFailureResult executeSendTaskFailure(SendTaskFailureRequest sendTaskFailureRequest) { ExecutionContext executionContext = createExecutionContext(sendTaskFailureRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new SendTaskFailureRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(sendTaskFailureRequest)); // 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, "SendTaskFailure"); request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new SendTaskFailureResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Used by activity workers and task states using the callback pattern to report to Step Functions that the task represented by the specified * taskToken is still making progress. This action resets the Heartbeat clock. The * Heartbeat threshold is specified in the state machine's Amazon States Language definition ( * HeartbeatSeconds). This action does not in itself create an event in the execution history. However, * if the task times out, the execution history contains an ActivityTimedOut entry for activities, or a * TaskTimedOut entry for for tasks using the job run or * * callback pattern. *

* *

* The Timeout of a task, defined in the state machine's Amazon States Language definition, is its * maximum allowed duration, regardless of the number of SendTaskHeartbeat requests received. Use * HeartbeatSeconds to configure the timeout interval for heartbeats. *

*
* * @param sendTaskHeartbeatRequest * @return Result of the SendTaskHeartbeat operation returned by the service. * @throws TaskDoesNotExistException * @throws InvalidTokenException * The provided token is not valid. * @throws TaskTimedOutException * @sample AWSStepFunctions.SendTaskHeartbeat * @see AWS API * Documentation */ @Override public SendTaskHeartbeatResult sendTaskHeartbeat(SendTaskHeartbeatRequest request) { request = beforeClientExecution(request); return executeSendTaskHeartbeat(request); } @SdkInternalApi final SendTaskHeartbeatResult executeSendTaskHeartbeat(SendTaskHeartbeatRequest sendTaskHeartbeatRequest) { ExecutionContext executionContext = createExecutionContext(sendTaskHeartbeatRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new SendTaskHeartbeatRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(sendTaskHeartbeatRequest)); // 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, "SendTaskHeartbeat"); request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new SendTaskHeartbeatResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Used by activity workers and task states using the callback pattern to report that the task identified by the taskToken completed successfully. *

* * @param sendTaskSuccessRequest * @return Result of the SendTaskSuccess operation returned by the service. * @throws TaskDoesNotExistException * @throws InvalidOutputException * The provided JSON output data is not valid. * @throws InvalidTokenException * The provided token is not valid. * @throws TaskTimedOutException * @sample AWSStepFunctions.SendTaskSuccess * @see AWS API * Documentation */ @Override public SendTaskSuccessResult sendTaskSuccess(SendTaskSuccessRequest request) { request = beforeClientExecution(request); return executeSendTaskSuccess(request); } @SdkInternalApi final SendTaskSuccessResult executeSendTaskSuccess(SendTaskSuccessRequest sendTaskSuccessRequest) { ExecutionContext executionContext = createExecutionContext(sendTaskSuccessRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new SendTaskSuccessRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(sendTaskSuccessRequest)); // 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, "SendTaskSuccess"); request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new SendTaskSuccessResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Starts a state machine execution. *

*

* A qualified state machine ARN can either refer to a Distributed Map state defined within a state machine, * a version ARN, or an alias ARN. *

*

* The following are some examples of qualified and unqualified state machine ARNs: *

*
    *
  • *

    * The following qualified state machine ARN refers to a Distributed Map state with a label * mapStateLabel in a state machine named myStateMachine. *

    *

    * arn:partition:states:region:account-id:stateMachine:myStateMachine/mapStateLabel *

    * *

    * If you provide a qualified state machine ARN that refers to a Distributed Map state, the request fails * with ValidationException. *

    *
  • *
  • *

    * The following qualified state machine ARN refers to an alias named PROD. *

    *

    * arn:<partition>:states:<region>:<account-id>:stateMachine:<myStateMachine:PROD> *

    * *

    * If you provide a qualified state machine ARN that refers to a version ARN or an alias ARN, the request starts * execution for that version or alias. *

    *
  • *
  • *

    * The following unqualified state machine ARN refers to a state machine named myStateMachine. *

    *

    * arn:<partition>:states:<region>:<account-id>:stateMachine:<myStateMachine> *

    *
  • *
*

* If you start an execution with an unqualified state machine ARN, Step Functions uses the latest revision of the * state machine for the execution. *

*

* To start executions of a state machine version, call * StartExecution and provide the version ARN or the ARN of an alias that * points to the version. *

* *

* StartExecution is idempotent for STANDARD workflows. For a STANDARD * workflow, if you call StartExecution with the same name and input as a running execution, the call * succeeds and return the same response as the original request. If the execution is closed or if the input is * different, it returns a 400 ExecutionAlreadyExists error. You can reuse names after 90 days. *

*

* StartExecution isn't idempotent for EXPRESS workflows. *

*
* * @param startExecutionRequest * @return Result of the StartExecution operation returned by the service. * @throws ExecutionLimitExceededException * The maximum number of running executions has been reached. Running executions must end or be stopped * before a new execution can be started. * @throws ExecutionAlreadyExistsException * The execution has the same name as another execution (but a different input * ).

*

* Executions with the same name and input are considered idempotent. *

* @throws InvalidArnException * The provided Amazon Resource Name (ARN) is not valid. * @throws InvalidExecutionInputException * The provided JSON input data is not valid. * @throws InvalidNameException * The provided name is not valid. * @throws StateMachineDoesNotExistException * The specified state machine does not exist. * @throws StateMachineDeletingException * The specified state machine is being deleted. * @throws ValidationException * The input does not satisfy the constraints specified by an Amazon Web Services service. * @sample AWSStepFunctions.StartExecution * @see AWS API * Documentation */ @Override public StartExecutionResult startExecution(StartExecutionRequest request) { request = beforeClientExecution(request); return executeStartExecution(request); } @SdkInternalApi final StartExecutionResult executeStartExecution(StartExecutionRequest startExecutionRequest) { ExecutionContext executionContext = createExecutionContext(startExecutionRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new StartExecutionRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(startExecutionRequest)); // 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, "StartExecution"); request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new StartExecutionResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Starts a Synchronous Express state machine execution. StartSyncExecution is not available for * STANDARD workflows. *

* *

* StartSyncExecution will return a 200 OK response, even if your execution fails, because * the status code in the API response doesn't reflect function errors. Error codes are reserved for errors that * prevent your execution from running, such as permissions errors, limit errors, or issues with your state machine * code and configuration. *

*
*

* This API action isn't logged in CloudTrail. *

*
* * @param startSyncExecutionRequest * @return Result of the StartSyncExecution operation returned by the service. * @throws InvalidArnException * The provided Amazon Resource Name (ARN) is not valid. * @throws InvalidExecutionInputException * The provided JSON input data is not valid. * @throws InvalidNameException * The provided name is not valid. * @throws StateMachineDoesNotExistException * The specified state machine does not exist. * @throws StateMachineDeletingException * The specified state machine is being deleted. * @throws StateMachineTypeNotSupportedException * @sample AWSStepFunctions.StartSyncExecution * @see AWS API * Documentation */ @Override public StartSyncExecutionResult startSyncExecution(StartSyncExecutionRequest request) { request = beforeClientExecution(request); return executeStartSyncExecution(request); } @SdkInternalApi final StartSyncExecutionResult executeStartSyncExecution(StartSyncExecutionRequest startSyncExecutionRequest) { ExecutionContext executionContext = createExecutionContext(startSyncExecutionRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new StartSyncExecutionRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(startSyncExecutionRequest)); // 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, "StartSyncExecution"); request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } URI endpointTraitHost = null; if (!clientConfiguration.isDisableHostPrefixInjection()) { String hostPrefix = "sync-"; String resolvedHostPrefix = String.format("sync-"); endpointTraitHost = UriResourcePathUtils.updateUriHost(endpoint, resolvedHostPrefix); } HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new StartSyncExecutionResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext, null, endpointTraitHost); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Stops an execution. *

*

* This API action is not supported by EXPRESS state machines. *

* * @param stopExecutionRequest * @return Result of the StopExecution 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 ValidationException * The input does not satisfy the constraints specified by an Amazon Web Services service. * @sample AWSStepFunctions.StopExecution * @see AWS API * Documentation */ @Override public StopExecutionResult stopExecution(StopExecutionRequest request) { request = beforeClientExecution(request); return executeStopExecution(request); } @SdkInternalApi final StopExecutionResult executeStopExecution(StopExecutionRequest stopExecutionRequest) { ExecutionContext executionContext = createExecutionContext(stopExecutionRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new StopExecutionRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(stopExecutionRequest)); // 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, "StopExecution"); request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new StopExecutionResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Add a tag to a Step Functions resource. *

*

* An array of key-value pairs. For more information, see Using Cost Allocation * Tags in the Amazon Web Services Billing and Cost Management User Guide, and Controlling Access Using IAM * Tags. *

*

* Tags may only contain Unicode letters, digits, white space, or these symbols: _ . : / = + - @. *

* * @param tagResourceRequest * @return Result of the TagResource operation returned by the service. * @throws InvalidArnException * The provided Amazon Resource Name (ARN) is not valid. * @throws ResourceNotFoundException * Could not find the referenced resource. * @throws TooManyTagsException * You've exceeded the number of tags allowed for a resource. See the Limits Topic in the Step * Functions Developer Guide. * @sample AWSStepFunctions.TagResource * @see AWS API * Documentation */ @Override public TagResourceResult tagResource(TagResourceRequest request) { request = beforeClientExecution(request); return executeTagResource(request); } @SdkInternalApi final TagResourceResult executeTagResource(TagResourceRequest tagResourceRequest) { ExecutionContext executionContext = createExecutionContext(tagResourceRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new TagResourceRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(tagResourceRequest)); // 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, "TagResource"); request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new TagResourceResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Remove a tag from a Step Functions resource *

* * @param untagResourceRequest * @return Result of the UntagResource operation returned by the service. * @throws InvalidArnException * The provided Amazon Resource Name (ARN) is not valid. * @throws ResourceNotFoundException * Could not find the referenced resource. * @sample AWSStepFunctions.UntagResource * @see AWS API * Documentation */ @Override public UntagResourceResult untagResource(UntagResourceRequest request) { request = beforeClientExecution(request); return executeUntagResource(request); } @SdkInternalApi final UntagResourceResult executeUntagResource(UntagResourceRequest untagResourceRequest) { ExecutionContext executionContext = createExecutionContext(untagResourceRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new UntagResourceRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(untagResourceRequest)); // 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, "UntagResource"); request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new UntagResourceResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Updates an in-progress Map Run's configuration to include changes to the settings that control maximum * concurrency and Map Run failure. *

* * @param updateMapRunRequest * @return Result of the UpdateMapRun operation returned by the service. * @throws ResourceNotFoundException * Could not find the referenced resource. * @throws InvalidArnException * The provided Amazon Resource Name (ARN) is not valid. * @throws ValidationException * The input does not satisfy the constraints specified by an Amazon Web Services service. * @sample AWSStepFunctions.UpdateMapRun * @see AWS API * Documentation */ @Override public UpdateMapRunResult updateMapRun(UpdateMapRunRequest request) { request = beforeClientExecution(request); return executeUpdateMapRun(request); } @SdkInternalApi final UpdateMapRunResult executeUpdateMapRun(UpdateMapRunRequest updateMapRunRequest) { ExecutionContext executionContext = createExecutionContext(updateMapRunRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new UpdateMapRunRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(updateMapRunRequest)); // 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, "UpdateMapRun"); request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new UpdateMapRunResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Updates an existing state machine by modifying its definition, roleArn, or * loggingConfiguration. Running executions will continue to use the previous definition * and roleArn. You must include at least one of definition or roleArn or you * will receive a MissingRequiredParameter error. *

*

* A qualified state machine ARN refers to a Distributed Map state defined within a state machine. For * example, the qualified state machine ARN * arn:partition:states:region:account-id:stateMachine:stateMachineName/mapStateLabel refers to a * Distributed Map state with a label mapStateLabel in the state machine named * stateMachineName. *

*

* A qualified state machine ARN can either refer to a Distributed Map state defined within a state machine, * a version ARN, or an alias ARN. *

*

* The following are some examples of qualified and unqualified state machine ARNs: *

*
    *
  • *

    * The following qualified state machine ARN refers to a Distributed Map state with a label * mapStateLabel in a state machine named myStateMachine. *

    *

    * arn:partition:states:region:account-id:stateMachine:myStateMachine/mapStateLabel *

    * *

    * If you provide a qualified state machine ARN that refers to a Distributed Map state, the request fails * with ValidationException. *

    *
  • *
  • *

    * The following qualified state machine ARN refers to an alias named PROD. *

    *

    * arn:<partition>:states:<region>:<account-id>:stateMachine:<myStateMachine:PROD> *

    * *

    * If you provide a qualified state machine ARN that refers to a version ARN or an alias ARN, the request starts * execution for that version or alias. *

    *
  • *
  • *

    * The following unqualified state machine ARN refers to a state machine named myStateMachine. *

    *

    * arn:<partition>:states:<region>:<account-id>:stateMachine:<myStateMachine> *

    *
  • *
*

* After you update your state machine, you can set the publish parameter to true in the * same action to publish a new version. This * way, you can opt-in to strict versioning of your state machine. *

* *

* Step Functions assigns monotonically increasing integers for state machine versions, starting at version number * 1. *

*
*

* All StartExecution calls within a few seconds use the updated definition and * roleArn. Executions started immediately after you call UpdateStateMachine may use the * previous state machine definition and roleArn. *

*
* * @param updateStateMachineRequest * @return Result of the UpdateStateMachine operation returned by the service. * @throws InvalidArnException * The provided Amazon Resource Name (ARN) is not valid. * @throws InvalidDefinitionException * The provided Amazon States Language definition is not valid. * @throws InvalidLoggingConfigurationException * @throws InvalidTracingConfigurationException * Your tracingConfiguration key does not match, or enabled has not been set to * true or false. * @throws MissingRequiredParameterException * Request is missing a required parameter. This error occurs if both definition and * roleArn are not specified. * @throws StateMachineDeletingException * The specified state machine is being deleted. * @throws StateMachineDoesNotExistException * The specified state machine does not exist. * @throws ServiceQuotaExceededException * The request would cause a service quota to be exceeded.

*

* HTTP Status Code: 402 * @throws ConflictException * Updating or deleting a resource can cause an inconsistent state. This error occurs when there're * concurrent requests for DeleteStateMachineVersion, PublishStateMachineVersion, or * UpdateStateMachine with the publish parameter set to true. *

*

* HTTP Status Code: 409 * @throws ValidationException * The input does not satisfy the constraints specified by an Amazon Web Services service. * @sample AWSStepFunctions.UpdateStateMachine * @see AWS API * Documentation */ @Override public UpdateStateMachineResult updateStateMachine(UpdateStateMachineRequest request) { request = beforeClientExecution(request); return executeUpdateStateMachine(request); } @SdkInternalApi final UpdateStateMachineResult executeUpdateStateMachine(UpdateStateMachineRequest updateStateMachineRequest) { ExecutionContext executionContext = createExecutionContext(updateStateMachineRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new UpdateStateMachineRequestProtocolMarshaller(protocolFactory).marshall(super.beforeMarshalling(updateStateMachineRequest)); // 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, "UpdateStateMachine"); request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new UpdateStateMachineResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** *

* Updates the configuration of an existing state machine alias by * modifying its description or routingConfiguration. *

*

* You must specify at least one of the description or routingConfiguration parameters to * update a state machine alias. *

* *

* UpdateStateMachineAlias is an idempotent API. Step Functions bases the idempotency check on the * stateMachineAliasArn, description, and routingConfiguration parameters. * Requests with the same parameters return an idempotent response. *

*
*

* This operation is eventually consistent. All StartExecution requests made within a few seconds use the * latest alias configuration. Executions started immediately after calling UpdateStateMachineAlias may * use the previous routing configuration. *

*
*

* Related operations: *

* * * @param updateStateMachineAliasRequest * @return Result of the UpdateStateMachineAlias operation returned by the service. * @throws ValidationException * The input does not satisfy the constraints specified by an Amazon Web Services service. * @throws InvalidArnException * The provided Amazon Resource Name (ARN) is not valid. * @throws ResourceNotFoundException * Could not find the referenced resource. * @throws ConflictException * Updating or deleting a resource can cause an inconsistent state. This error occurs when there're * concurrent requests for DeleteStateMachineVersion, PublishStateMachineVersion, or * UpdateStateMachine with the publish parameter set to true.

*

* HTTP Status Code: 409 * @sample AWSStepFunctions.UpdateStateMachineAlias * @see AWS * API Documentation */ @Override public UpdateStateMachineAliasResult updateStateMachineAlias(UpdateStateMachineAliasRequest request) { request = beforeClientExecution(request); return executeUpdateStateMachineAlias(request); } @SdkInternalApi final UpdateStateMachineAliasResult executeUpdateStateMachineAlias(UpdateStateMachineAliasRequest updateStateMachineAliasRequest) { ExecutionContext executionContext = createExecutionContext(updateStateMachineAliasRequest); AWSRequestMetrics awsRequestMetrics = executionContext.getAwsRequestMetrics(); awsRequestMetrics.startEvent(Field.ClientExecuteTime); Request request = null; Response response = null; try { awsRequestMetrics.startEvent(Field.RequestMarshallTime); try { request = new UpdateStateMachineAliasRequestProtocolMarshaller(protocolFactory).marshall(super .beforeMarshalling(updateStateMachineAliasRequest)); // 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, "UpdateStateMachineAlias"); request.addHandlerContext(HandlerContextKey.ADVANCED_CONFIG, advancedConfig); } finally { awsRequestMetrics.endEvent(Field.RequestMarshallTime); } HttpResponseHandler> responseHandler = protocolFactory.createResponseHandler( new JsonOperationMetadata().withPayloadJson(true).withHasStreamingSuccessResponse(false), new UpdateStateMachineAliasResultJsonUnmarshaller()); response = invoke(request, responseHandler, executionContext); return response.getAwsResponse(); } finally { endClientExecution(awsRequestMetrics, request, response); } } /** * Returns additional metadata for a previously executed successful, request, typically used for debugging issues * where a service isn't acting as expected. This data isn't considered part of the result data returned by an * operation, so it's available through this separate, diagnostic interface. *

* Response metadata is only cached for a limited period of time, so if you need to access this extra diagnostic * information for an executed request, you should use this method to retrieve it as soon as possible after * executing the request. * * @param request * The originally executed request * * @return The response metadata for the specified request, or null if none is available. */ public ResponseMetadata getCachedResponseMetadata(AmazonWebServiceRequest request) { return client.getResponseMetadataForRequest(request); } /** * Normal invoke with authentication. Credentials are required and may be overriden at the request level. **/ private Response invoke(Request request, HttpResponseHandler> responseHandler, ExecutionContext executionContext) { return invoke(request, responseHandler, executionContext, null, null); } /** * Normal invoke with authentication. Credentials are required and may be overriden at the request level. **/ private Response invoke(Request request, HttpResponseHandler> responseHandler, ExecutionContext executionContext, URI cachedEndpoint, URI uriFromEndpointTrait) { executionContext.setCredentialsProvider(CredentialUtils.getCredentialsProvider(request.getOriginalRequest(), awsCredentialsProvider)); return doInvoke(request, responseHandler, executionContext, cachedEndpoint, uriFromEndpointTrait); } /** * Invoke with no authentication. Credentials are not required and any credentials set on the client or request will * be ignored for this operation. **/ private Response anonymousInvoke(Request request, HttpResponseHandler> responseHandler, ExecutionContext executionContext) { return doInvoke(request, responseHandler, executionContext, null, null); } /** * Invoke the request using the http client. Assumes credentials (or lack thereof) have been configured in the * ExecutionContext beforehand. **/ private Response doInvoke(Request request, HttpResponseHandler> responseHandler, ExecutionContext executionContext, URI discoveredEndpoint, URI uriFromEndpointTrait) { if (discoveredEndpoint != null) { request.setEndpoint(discoveredEndpoint); request.getOriginalRequest().getRequestClientOptions().appendUserAgent("endpoint-discovery"); } else if (uriFromEndpointTrait != null) { request.setEndpoint(uriFromEndpointTrait); } else { request.setEndpoint(endpoint); } request.setTimeOffset(timeOffset); HttpResponseHandler errorResponseHandler = protocolFactory.createErrorResponseHandler(new JsonErrorResponseMetadata()); return client.execute(request, responseHandler, errorResponseHandler, executionContext); } @com.amazonaws.annotation.SdkInternalApi static com.amazonaws.protocol.json.SdkJsonProtocolFactory getProtocolFactory() { return protocolFactory; } @Override public void shutdown() { super.shutdown(); } }