

# Integrating services with Step Functions
Integrating services

Learn how to integrate AWS services and call HTTPS APIs with Step Functions. With service integrations, your workflows can coordinate resources and orchestrate your business processes. 

Depending on workflow type and availability, your workflows call services using one of three service integration patterns:
+ Request a Response (default) - wait for HTTP response, then go to the next state
+ Run a Job (`.sync`) - wait for the job to complete
+ Wait for Callback (`.waitForTaskToken`) - pause a workflow until a task token is returned

To learn more, see [Service integration patterns](connect-to-resource.md). And to learn more about controlling the flow of data to your integrated services, see [Passing parameters to a service API in Step Functions](connect-parameters.md).

## AWS SDK integrations


AWS SDK integrations work exactly like an API call using the AWS SDK.

Using [AWS SDK integrations](supported-services-awssdk.md), your state machines can call over nine thousand API actions for over two hundred AWS services.

**Example integrations you might use:**  
+ Invoke a AWS Lambda function.
+ Run an AWS Batch job and take different actions based on the results.
+ Retrieve or updated items in Amazon DynamoDB.
+ Run an Amazon Elastic Container Service (Amazon ECS) task and wait for it to complete.
+ Publish to a topic in Amazon Simple Notification Service (Amazon SNS).
+ Send a message in Amazon Simple Queue Service (Amazon SQS).
+ Manage a job for AWS Glue or Amazon SageMaker AI.
+ Build workflows for executing Amazon EMR jobs.
+ Launch another AWS Step Functions workflow execution.

## Optimized integrations


In addition to standard integrations, Step Functions provides optimized integrations which provide enhanced functionality. Optimized integrations have been customized by Step Functions to provide an improved developer experience when integrating the service in a workflow context.

For example, the optimized [Lambda `Invoke`](connect-lambda.md) automatically converts API output from escaped JSON to a JSON object which you can more easily use. Another example is how [AWS Batch`SubmitJob`](connect-batch.md) can pause execution until the batch job completes, which is a common scenario.

When possible, we **recommend** using the optimized integrations.

For the full list of optimized integrations, see the dedicated chapter for [Integrating optimized services with Step Functions](integrate-optimized.md)

## Call HTTPS APIs


An HTTP Task is a type of [Task workflow state](state-task.md) state that you can use to call HTTPS APIs in your workflows. The API can be public, such as third-party SaaS applications like Stripe or Salesforce. You can also call private API, such as HTTPS-based applications in an Amazon Virtual Private Cloud.

For more information, see [Call HTTPS APIs in Step Functions workflows](call-https-apis.md).

# Learning to use AWS service SDK integrations in Step Functions
AWS SDK integrations

With Step Functions' AWS SDK integration, your workflows can call almost any AWS service's API actions. The services or SDKs that are not available might be recently released, require customized configuration, or are not suitable for use in a workflow, such as SDKs for streaming audio or video.

**Topics**
+ [Using service integrations](#use-awssdk-integ)
+ [Supported service integrations](#supported-services-awssdk-list)
+ [Deprecated service integrations](#deprecated-aws-sdk-integ)

## Using AWS SDK service integrations
Using service integrations

To use AWS SDK integrations, you specify the service name and API call and, optionally, a service integration pattern (For more information, see [Service integration patterns](connect-to-resource.md).

**API naming conventions**  
Parameters in Step Functions are expressed in PascalCase, even if the native service API is in camelCase. For example, you could use the Step Functions API action `startSyncExecution` and specify its parameter as `StateMachineArn`.
For API actions that accept enumerated parameters, such as the `[DescribeLaunchTemplateVersions](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeLaunchTemplateVersions.html)` API action for Amazon EC2, specify a plural version of the parameter name. For example, specify `Filters` for the `Filter.N` parameter of the `DescribeLaunchTemplateVersions` API action.
To work with certain language naming convention requirements, API fields for **equals** will be referred to in your state machines as: **EqualsValue**.

You can call AWS SDK services directly from the Amazon States Language in the `Resource` field of a task state. To do this, use the following syntax:

`arn:aws:states:::aws-sdk:serviceName:apiAction.[serviceIntegrationPattern]`

For example, you might use `arn:aws:states:::aws-sdk:ec2:describeInstances` to return output as defined for the [Amazon EC2 describeInstances](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeInstances.html#API_DescribeInstances_ResponseElements) API call.

If an AWS SDK integration encounters an error, the resulting Error field will be composed of the service name and the error name, separated by a period: `ServiceName.ErrorName`. Both the service name and error name are in Pascal case. You can also see the service name in the Task state's Resource field in lowercase. The target service's API reference documentation lists the potential error names.

Consider an example where you might use the AWS SDK integration `arn:aws:states:::aws-sdk:acmpca:deleteCertificateAuthority`. The [AWS Private Certificate Authority API Reference](https://docs.aws.amazon.com/privateca/latest/APIReference/API_DeleteCertificateAuthority.html#API_DeleteCertificateAuthority_Errors) indicates that the `DeleteCertificateAuthority` API action can result in an error named `ResourceNotFoundException`. To handle this error you would specify the Error `AcmPca.ResourceNotFoundException` in your Task state's Retriers or Catchers.

**Note**  
Some AWS services don't include the *Exception* suffix in the The API Reference documentation. Despite this alternate naming convention, always include the *Exception* suffix for the potential error names in your AWS Step Functions integration. Do so even when the suffix is not already part of the error name provided by the service. 

Consider another error name, this time the [CreateBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html) action. The *Amazon Simple Storage Service API Reference* lists the error `BucketAlreadyExists`. Note that it doesn't have the *Exception* suffix. To handle this error in Step Functions, refer to it as `S3.BucketAlreadyExistsException`. The S3 service error naming convention differs from the errors in the previously mentioned [AWS Private Certificate Authority API Reference](https://docs.aws.amazon.com/privateca/latest/APIReference/API_DeleteCertificateAuthority.html#API_DeleteCertificateAuthority_Errors). Regardless, in both cases you must include the *Exception* suffix for potential errors in the Step Functions integration.

For more information about error handling, see [Handling errors in Step Functions workflows](concepts-error-handling.md).

Step Functions cannot autogenerate IAM policies for AWS SDK integrations. After you create your state machine, you will need to navigate to the IAM console and configure your role policies. See [How Step Functions generates IAM policies for integrated services](service-integration-iam-templates.md) for more information.

See the [Gather Amazon S3 bucket info using AWS SDK service integrations](tutorial-gather-s3-info.md) tutorial for an example of how to use AWS SDK integrations.

## Supported AWS SDK service integrations
Supported service integrations

 The *Task state resource* (Resource) shows the syntax to call a specific API action for the service. The *Exception prefix* is present in the exceptions that are generated when you erroneously perform an AWS SDK service integration with Step Functions.

**Important**  
New actions and updates to already supported actions, such as new parameters, will not be immediately available after service SDK updates.

**Amazon A2I**  
Task state resource: `arn:aws:states:::aws-sdk:sagemakera2iruntime:[apiAction]`  
Exception prefix: `SageMakerA2IRuntime`

**Amazon AI Operations**  
Task state resource: `arn:aws:states:::aws-sdk:aiops:[apiAction]`  
Exception prefix: `AiOps`

**API Gateway V1**  
Task state resource: `arn:aws:states:::aws-sdk:apigateway:[apiAction]`  
Exception prefix: `ApiGateway`

**API Gateway V2**  
Task state resource: `arn:aws:states:::aws-sdk:apigatewayv2:[apiAction]`  
Exception prefix: `ApiGatewayV2`

**AWS Account Management**  
Task state resource: `arn:aws:states:::aws-sdk:account:[apiAction]`  
Exception prefix: `Account`

**AWS Amplify**  
Task state resource: `arn:aws:states:::aws-sdk:amplify:[apiAction]`  
Exception prefix: `Amplify`

**Amplify Backend**  
Task state resource: `arn:aws:states:::aws-sdk:amplifybackend:[apiAction]`  
Exception prefix: `AmplifyBackend`

**Amplify UI Builder**  
Task state resource: `arn:aws:states:::aws-sdk:amplifyuibuilder:[apiAction]`  
Exception prefix: `AmplifyUiBuilder`

**AWS App Mesh**  
Task state resource: `arn:aws:states:::aws-sdk:appmesh:[apiAction]`  
Exception prefix: `AppMesh`

**AWS App Runner**  
Task state resource: `arn:aws:states:::aws-sdk:apprunner:[apiAction]`  
Exception prefix: `AppRunner`

**AWS AppConfig**  
Task state resource: `arn:aws:states:::aws-sdk:appconfig:[apiAction]`  
Exception prefix: `AppConfig`

**AWS AppConfig Data**  
Task state resource: `arn:aws:states:::aws-sdk:appconfigdata:[apiAction]`  
Exception prefix: `AppConfigData`

**AWS AppFabric**  
Task state resource: `arn:aws:states:::aws-sdk:appfabric:[apiAction]`  
Exception prefix: `AppFabric`

**AppIntegrations**  
Task state resource: `arn:aws:states:::aws-sdk:appintegrations:[apiAction]`  
Exception prefix: `AppIntegrations`

**Amazon AppStream**  
Task state resource: `arn:aws:states:::aws-sdk:appstream:[apiAction]`  
Exception prefix: `AppStream`

**AWS AppSync**  
Task state resource: `arn:aws:states:::aws-sdk:appsync:[apiAction]`  
Exception prefix: `AppSync`

**Amazon Appflow**  
Task state resource: `arn:aws:states:::aws-sdk:appflow:[apiAction]`  
Exception prefix: `Appflow`

**Application Auto Scaling**  
Task state resource: `arn:aws:states:::aws-sdk:applicationautoscaling:[apiAction]`  
Exception prefix: `ApplicationAutoScaling`

**Application Cost Profiler**  
Task state resource: `arn:aws:states:::aws-sdk:applicationcostprofiler:[apiAction]`  
Exception prefix: `ApplicationCostProfiler`

**Application Discovery Service**  
Task state resource: `arn:aws:states:::aws-sdk:applicationdiscovery:[apiAction]`  
Exception prefix: `ApplicationDiscovery`  
**Unsupported operations:** `DescribeExportConfigurations`, `ExportConfigurations`

**Application Migration Service**  
Task state resource: `arn:aws:states:::aws-sdk:mgn:[apiAction]`  
Exception prefix: `Mgn`

**Amazon Athena**  
Task state resource: `arn:aws:states:::aws-sdk:athena:[apiAction]`  
Exception prefix: `Athena`

**Audit Manager**  
Task state resource: `arn:aws:states:::aws-sdk:auditmanager:[apiAction]`  
Exception prefix: `AuditManager`

**Amazon Aurora DSQL**  
Task state resource: `arn:aws:states:::aws-sdk:dsql:[apiAction]`  
Exception prefix: `Dsql`  
**Unsupported operations:** `CreateMultiRegionClusters`, `DeleteMultiRegionClusters`

**AWS Auto Scaling**  
Task state resource: `arn:aws:states:::aws-sdk:autoscalingplans:[apiAction]`  
Exception prefix: `AutoScalingPlans`

**B2B Data Interchange**  
Task state resource: `arn:aws:states:::aws-sdk:b2bi:[apiAction]`  
Exception prefix: `B2Bi`

**AWS Backup**  
Task state resource: `arn:aws:states:::aws-sdk:backup:[apiAction]`  
Exception prefix: `Backup`

**AWS Backup Gateway**  
Task state resource: `arn:aws:states:::aws-sdk:backupgateway:[apiAction]`  
Exception prefix: `BackupGateway`

**AWS Backup Search**  
Task state resource: `arn:aws:states:::aws-sdk:backupsearch:[apiAction]`  
Exception prefix: `BackupSearch`

**AWS Batch**  
Task state resource: `arn:aws:states:::aws-sdk:batch:[apiAction]`  
Exception prefix: `Batch`

**Amazon Bedrock**  
Task state resource: `arn:aws:states:::aws-sdk:bedrock:[apiAction]`  
Exception prefix: `Bedrock`

**Amazon Bedrock AgentCore**  
Task state resource: `arn:aws:states:::aws-sdk:bedrockagentcore:[apiAction]`  
Exception prefix: `BedrockAgentCore`  
**Unsupported operations:** `InvokeCodeInterpreter`

**Amazon Bedrock AgentCore Control Plane**  
Task state resource: `arn:aws:states:::aws-sdk:bedrockagentcorecontrol:[apiAction]`  
Exception prefix: `BedrockAgentCoreControl`

**Amazon Bedrock Agents**  
Task state resource: `arn:aws:states:::aws-sdk:bedrockagent:[apiAction]`  
Exception prefix: `BedrockAgent`

**Amazon Bedrock Runtime**  
Task state resource: `arn:aws:states:::aws-sdk:bedrockruntime:[apiAction]`  
Exception prefix: `BedrockRuntime`  
**Unsupported operations:** `InvokeModelWithResponseStream`, `ConverseStream`, `InvokeModelWithBidirectionalStream`

**Amazon Bedrock Runtime Agents**  
Task state resource: `arn:aws:states:::aws-sdk:bedrockagentruntime:[apiAction]`  
Exception prefix: `BedrockAgentRuntime`  
**Unsupported operations:** `InvokeAgent`, `InvokeFlow`, `InvokeInlineAgent`, `OptimizePrompt`, `RetrieveAndGenerateStream`

**AWS Billing**  
Task state resource: `arn:aws:states:::aws-sdk:billing:[apiAction]`  
Exception prefix: `Billing`

**AWS Billing Conductor**  
Task state resource: `arn:aws:states:::aws-sdk:billingconductor:[apiAction]`  
Exception prefix: `Billingconductor`

**AWS Billing and Cost Management Dashboards**  
Task state resource: `arn:aws:states:::aws-sdk:bcmdashboards:[apiAction]`  
Exception prefix: `BcmDashboards`

**AWS Billing and Cost Management Pricing Calculator**  
Task state resource: `arn:aws:states:::aws-sdk:bcmpricingcalculator:[apiAction]`  
Exception prefix: `BcmPricingCalculator`

**AWS Billing and Cost Management Recommended Actions**  
Task state resource: `arn:aws:states:::aws-sdk:bcmrecommendedactions:[apiAction]`  
Exception prefix: `BcmRecommendedActions`

**Amazon Braket**  
Task state resource: `arn:aws:states:::aws-sdk:braket:[apiAction]`  
Exception prefix: `Braket`

**AWS Budgets**  
Task state resource: `arn:aws:states:::aws-sdk:budgets:[apiAction]`  
Exception prefix: `Budgets`

**Certificate Manager**  
Task state resource: `arn:aws:states:::aws-sdk:acm:[apiAction]`  
Exception prefix: `Acm`

**Certificate Manager PCA**  
Task state resource: `arn:aws:states:::aws-sdk:acmpca:[apiAction]`  
Exception prefix: `AcmPca`

**Amazon Chime**  
Task state resource: `arn:aws:states:::aws-sdk:chime:[apiAction]`  
Exception prefix: `Chime`

**Amazon Chime Identity**  
Task state resource: `arn:aws:states:::aws-sdk:chimesdkidentity:[apiAction]`  
Exception prefix: `ChimeSdkIdentity`

**Amazon Chime Media Pipelines**  
Task state resource: `arn:aws:states:::aws-sdk:chimesdkmediapipelines:[apiAction]`  
Exception prefix: `ChimeSdkMediaPipelines`

**Amazon Chime Meetings**  
Task state resource: `arn:aws:states:::aws-sdk:chimesdkmeetings:[apiAction]`  
Exception prefix: `ChimeSdkMeetings`

**Amazon Chime Messaging**  
Task state resource: `arn:aws:states:::aws-sdk:chimesdkmessaging:[apiAction]`  
Exception prefix: `ChimeSdkMessaging`

**Amazon Chime Voice**  
Task state resource: `arn:aws:states:::aws-sdk:chimesdkvoice:[apiAction]`  
Exception prefix: `ChimeSdkVoice`

**AWS Clean Rooms**  
Task state resource: `arn:aws:states:::aws-sdk:cleanrooms:[apiAction]`  
Exception prefix: `CleanRooms`

**AWS Clean Rooms ML**  
Task state resource: `arn:aws:states:::aws-sdk:cleanroomsml:[apiAction]`  
Exception prefix: `CleanRoomsMl`

**AWS Cloud Control**  
Task state resource: `arn:aws:states:::aws-sdk:cloudcontrol:[apiAction]`  
Exception prefix: `CloudControl`

**Cloud Directory**  
Task state resource: `arn:aws:states:::aws-sdk:clouddirectory:[apiAction]`  
Exception prefix: `CloudDirectory`

**AWS Cloud Map**  
Task state resource: `arn:aws:states:::aws-sdk:servicediscovery:[apiAction]`  
Exception prefix: `ServiceDiscovery`

**AWS Cloud9**  
Task state resource: `arn:aws:states:::aws-sdk:cloud9:[apiAction]`  
Exception prefix: `Cloud9`

**CloudFormation**  
Task state resource: `arn:aws:states:::aws-sdk:cloudformation:[apiAction]`  
Exception prefix: `CloudFormation`

**CloudFront**  
Task state resource: `arn:aws:states:::aws-sdk:cloudfront:[apiAction]`  
Exception prefix: `CloudFront`

**Amazon CloudFront KeyValueStore**  
Task state resource: `arn:aws:states:::aws-sdk:cloudfrontkeyvaluestore:[apiAction]`  
Exception prefix: `CloudFrontKeyValueStore`

**CloudHSM V1**  
Task state resource: `arn:aws:states:::aws-sdk:cloudhsm:[apiAction]`  
Exception prefix: `CloudHsm`

**CloudHSM V2**  
Task state resource: `arn:aws:states:::aws-sdk:cloudhsmv2:[apiAction]`  
Exception prefix: `CloudHsmV2`

**CloudSearch**  
Task state resource: `arn:aws:states:::aws-sdk:cloudsearch:[apiAction]`  
Exception prefix: `CloudSearch`

**CloudTrail**  
Task state resource: `arn:aws:states:::aws-sdk:cloudtrail:[apiAction]`  
Exception prefix: `CloudTrail`

**CloudTrail Data**  
Task state resource: `arn:aws:states:::aws-sdk:cloudtraildata:[apiAction]`  
Exception prefix: `CloudTrailData`

**CloudWatch**  
Task state resource: `arn:aws:states:::aws-sdk:cloudwatch:[apiAction]`  
Exception prefix: `CloudWatch`

**CloudWatch Application Insights**  
Task state resource: `arn:aws:states:::aws-sdk:applicationinsights:[apiAction]`  
Exception prefix: `ApplicationInsights`

**Amazon CloudWatch Application Signals**  
Task state resource: `arn:aws:states:::aws-sdk:applicationsignals:[apiAction]`  
Exception prefix: `ApplicationSignals`

**CloudWatch Internet Monitor**  
Task state resource: `arn:aws:states:::aws-sdk:internetmonitor:[apiAction]`  
Exception prefix: `InternetMonitor`

**CloudWatch Logs**  
Task state resource: `arn:aws:states:::aws-sdk:cloudwatchlogs:[apiAction]`  
Exception prefix: `CloudWatchLogs`  
**Unsupported operations:** `StartLiveTail`, `GetLogObject`

**CloudWatch Observability Access Manager**  
Task state resource: `arn:aws:states:::aws-sdk:oam:[apiAction]`  
Exception prefix: `Oam`

**CloudWatch Observability Admin Service**  
Task state resource: `arn:aws:states:::aws-sdk:observabilityadmin:[apiAction]`  
Exception prefix: `ObservabilityAdmin`

**CloudWatch RUM**  
Task state resource: `arn:aws:states:::aws-sdk:rum:[apiAction]`  
Exception prefix: `Rum`

**CloudWatch Synthetics**  
Task state resource: `arn:aws:states:::aws-sdk:synthetics:[apiAction]`  
Exception prefix: `Synthetics`

**CodeArtifact**  
Task state resource: `arn:aws:states:::aws-sdk:codeartifact:[apiAction]`  
Exception prefix: `Codeartifact`

**CodeBuild**  
Task state resource: `arn:aws:states:::aws-sdk:codebuild:[apiAction]`  
Exception prefix: `CodeBuild`

**Amazon CodeCatalyst**  
Task state resource: `arn:aws:states:::aws-sdk:codecatalyst:[apiAction]`  
Exception prefix: `CodeCatalyst`

**CodeCommit**  
Task state resource: `arn:aws:states:::aws-sdk:codecommit:[apiAction]`  
Exception prefix: `CodeCommit`

**AWS CodeConnections**  
Task state resource: `arn:aws:states:::aws-sdk:codeconnections:[apiAction]`  
Exception prefix: `CodeConnections`

**CodeDeploy**  
Task state resource: `arn:aws:states:::aws-sdk:codedeploy:[apiAction]`  
Exception prefix: `CodeDeploy`  
**Unsupported operations:** `BatchGetDeploymentInstances`, `GetDeploymentInstance`, `ListDeploymentInstances`, `SkipWaitTimeForInstanceTermination`

**CodeGuru Profiler**  
Task state resource: `arn:aws:states:::aws-sdk:codeguruprofiler:[apiAction]`  
Exception prefix: `CodeGuruProfiler`

**CodeGuru Reviewer**  
Task state resource: `arn:aws:states:::aws-sdk:codegurureviewer:[apiAction]`  
Exception prefix: `CodeGuruReviewer`

**CodeGuru Security**  
Task state resource: `arn:aws:states:::aws-sdk:codegurusecurity:[apiAction]`  
Exception prefix: `CodeGuruSecurity`

**CodePipeline**  
Task state resource: `arn:aws:states:::aws-sdk:codepipeline:[apiAction]`  
Exception prefix: `CodePipeline`

**AWS CodeStar Connections**  
Task state resource: `arn:aws:states:::aws-sdk:codestarconnections:[apiAction]`  
Exception prefix: `CodeStarConnections`

**AWS CodeStar Notifications**  
Task state resource: `arn:aws:states:::aws-sdk:codestarnotifications:[apiAction]`  
Exception prefix: `CodestarNotifications`

**Cognito Identity Pools**  
Task state resource: `arn:aws:states:::aws-sdk:cognitoidentity:[apiAction]`  
Exception prefix: `CognitoIdentity`

**Cognito Sync**  
Task state resource: `arn:aws:states:::aws-sdk:cognitosync:[apiAction]`  
Exception prefix: `CognitoSync`

**Cognito User Pools**  
Task state resource: `arn:aws:states:::aws-sdk:cognitoidentityprovider:[apiAction]`  
Exception prefix: `CognitoIdentityProvider`

**Amazon Comprehend**  
Task state resource: `arn:aws:states:::aws-sdk:comprehend:[apiAction]`  
Exception prefix: `Comprehend`

**Amazon Comprehend Medical**  
Task state resource: `arn:aws:states:::aws-sdk:comprehendmedical:[apiAction]`  
Exception prefix: `ComprehendMedical`  
**Unsupported operations:** `DetectEntities`

**Compute Optimizer**  
Task state resource: `arn:aws:states:::aws-sdk:computeoptimizer:[apiAction]`  
Exception prefix: `ComputeOptimizer`

**Compute Optimizer Automation**  
Task state resource: `arn:aws:states:::aws-sdk:computeoptimizerautomation:[apiAction]`  
Exception prefix: `ComputeOptimizerAutomation`

**AWS Config**  
Task state resource: `arn:aws:states:::aws-sdk:config:[apiAction]`  
Exception prefix: `Config`

**Amazon Connect**  
Task state resource: `arn:aws:states:::aws-sdk:connect:[apiAction]`  
Exception prefix: `Connect`

**Amazon Connect Campaigns**  
Task state resource: `arn:aws:states:::aws-sdk:connectcampaigns:[apiAction]`  
Exception prefix: `ConnectCampaigns`

**Amazon Connect Campaigns V2**  
Task state resource: `arn:aws:states:::aws-sdk:connectcampaignsv2:[apiAction]`  
Exception prefix: `ConnectCampaignsV2`

**Amazon Connect Cases**  
Task state resource: `arn:aws:states:::aws-sdk:connectcases:[apiAction]`  
Exception prefix: `ConnectCases`

**Amazon Connect Contact Lens**  
Task state resource: `arn:aws:states:::aws-sdk:connectcontactlens:[apiAction]`  
Exception prefix: `ConnectContactLens`

**Amazon Connect Customer Profiles**  
Task state resource: `arn:aws:states:::aws-sdk:customerprofiles:[apiAction]`  
Exception prefix: `CustomerProfiles`

**Amazon Connect Health**  
Task state resource: `arn:aws:states:::aws-sdk:connecthealth:[apiAction]`  
Exception prefix: `ConnectHealth`  
**Unsupported operations:** `StartMedicalScribeListeningSession`

**Amazon Connect Participant**  
Task state resource: `arn:aws:states:::aws-sdk:connectparticipant:[apiAction]`  
Exception prefix: `ConnectParticipant`

**Amazon Connect Voice ID**  
Task state resource: `arn:aws:states:::aws-sdk:voiceid:[apiAction]`  
Exception prefix: `VoiceId`

**Amazon Connect Wisdom**  
Task state resource: `arn:aws:states:::aws-sdk:wisdom:[apiAction]`  
Exception prefix: `Wisdom`

**AWS Control Catalog**  
Task state resource: `arn:aws:states:::aws-sdk:controlcatalog:[apiAction]`  
Exception prefix: `ControlCatalog`

**AWS Control Tower**  
Task state resource: `arn:aws:states:::aws-sdk:controltower:[apiAction]`  
Exception prefix: `ControlTower`

**AWS Cost Explorer**  
Task state resource: `arn:aws:states:::aws-sdk:costexplorer:[apiAction]`  
Exception prefix: `CostExplorer`

**Cost Optimization Hub**  
Task state resource: `arn:aws:states:::aws-sdk:costoptimizationhub:[apiAction]`  
Exception prefix: `CostOptimizationHub`

**AWS Cost and Usage Report**  
Task state resource: `arn:aws:states:::aws-sdk:costandusagereport:[apiAction]`  
Exception prefix: `CostAndUsageReport`

**Data Automation for Amazon Bedrock**  
Task state resource: `arn:aws:states:::aws-sdk:bedrockdataautomation:[apiAction]`  
Exception prefix: `BedrockDataAutomation`

**AWS Data Exchange**  
Task state resource: `arn:aws:states:::aws-sdk:dataexchange:[apiAction]`  
Exception prefix: `DataExchange`  
**Unsupported operations:** `SendApiAsset`

**AWS Data Exports**  
Task state resource: `arn:aws:states:::aws-sdk:bcmdataexports:[apiAction]`  
Exception prefix: `BcmDataExports`

**Amazon Data Lifecycle Manager**  
Task state resource: `arn:aws:states:::aws-sdk:dlm:[apiAction]`  
Exception prefix: `Dlm`

**Data Pipeline**  
Task state resource: `arn:aws:states:::aws-sdk:datapipeline:[apiAction]`  
Exception prefix: `DataPipeline`

**DataSync**  
Task state resource: `arn:aws:states:::aws-sdk:datasync:[apiAction]`  
Exception prefix: `DataSync`

**Amazon DataZone**  
Task state resource: `arn:aws:states:::aws-sdk:datazone:[apiAction]`  
Exception prefix: `DataZone`

**AWS Database Migration Service**  
Task state resource: `arn:aws:states:::aws-sdk:databasemigration:[apiAction]`  
Exception prefix: `DatabaseMigration`

**AWS Deadline Cloud**  
Task state resource: `arn:aws:states:::aws-sdk:deadline:[apiAction]`  
Exception prefix: `Deadline`

**Detective**  
Task state resource: `arn:aws:states:::aws-sdk:detective:[apiAction]`  
Exception prefix: `Detective`

**DevOps Guru**  
Task state resource: `arn:aws:states:::aws-sdk:devopsguru:[apiAction]`  
Exception prefix: `DevOpsGuru`

**Device Farm**  
Task state resource: `arn:aws:states:::aws-sdk:devicefarm:[apiAction]`  
Exception prefix: `DeviceFarm`

**Direct Connect**  
Task state resource: `arn:aws:states:::aws-sdk:directconnect:[apiAction]`  
Exception prefix: `DirectConnect`  
**Unsupported operations:** `AllocateConnectionOnInterconnect`, `DescribeConnectionLoa`, `DescribeConnectionsOnInterconnect`, `DescribeInterconnectLoa`

**Directory Service**  
Task state resource: `arn:aws:states:::aws-sdk:directory:[apiAction]`  
Exception prefix: `Directory`

**AWS Directory Service Data**  
Task state resource: `arn:aws:states:::aws-sdk:directoryservicedata:[apiAction]`  
Exception prefix: `DirectoryServiceData`

**Amazon DocumentDB**  
Task state resource: `arn:aws:states:::aws-sdk:docdb:[apiAction]`  
Exception prefix: `DocDb`

**Amazon DocumentDB Elastic Clusters**  
Task state resource: `arn:aws:states:::aws-sdk:docdbelastic:[apiAction]`  
Exception prefix: `DocDbElastic`

**DynamoDB**  
Task state resource: `arn:aws:states:::aws-sdk:dynamodb:[apiAction]`  
Exception prefix: `DynamoDb`

**DynamoDB Accelerator**  
Task state resource: `arn:aws:states:::aws-sdk:dax:[apiAction]`  
Exception prefix: `Dax`

**DynamoDB Streams**  
Task state resource: `arn:aws:states:::aws-sdk:dynamodbstreams:[apiAction]`  
Exception prefix: `DynamoDbStreams`

**Amazon EBS**  
Task state resource: `arn:aws:states:::aws-sdk:ebs:[apiAction]`  
Exception prefix: `Ebs`

**Amazon EC2**  
Task state resource: `arn:aws:states:::aws-sdk:ec2:[apiAction]`  
Exception prefix: `Ec2`

**EC2 Auto Scaling**  
Task state resource: `arn:aws:states:::aws-sdk:autoscaling:[apiAction]`  
Exception prefix: `AutoScaling`

**EC2 Image Builder**  
Task state resource: `arn:aws:states:::aws-sdk:imagebuilder:[apiAction]`  
Exception prefix: `Imagebuilder`

**AWS EC2 Instance Connect**  
Task state resource: `arn:aws:states:::aws-sdk:ec2instanceconnect:[apiAction]`  
Exception prefix: `Ec2InstanceConnect`

**Amazon ECR**  
Task state resource: `arn:aws:states:::aws-sdk:ecr:[apiAction]`  
Exception prefix: `Ecr`

**Amazon ECR Public**  
Task state resource: `arn:aws:states:::aws-sdk:ecrpublic:[apiAction]`  
Exception prefix: `EcrPublic`

**Amazon ECS**  
Task state resource: `arn:aws:states:::aws-sdk:ecs:[apiAction]`  
Exception prefix: `Ecs`

**Amazon EFS**  
Task state resource: `arn:aws:states:::aws-sdk:efs:[apiAction]`  
Exception prefix: `Efs`  
**Unsupported operations:** `CreateTags`

**Amazon EKS**  
Task state resource: `arn:aws:states:::aws-sdk:eks:[apiAction]`  
Exception prefix: `Eks`

**Amazon EKS Auth**  
Task state resource: `arn:aws:states:::aws-sdk:eksauth:[apiAction]`  
Exception prefix: `EksAuth`

**Amazon EMR**  
Task state resource: `arn:aws:states:::aws-sdk:emr:[apiAction]`  
Exception prefix: `Emr`  
**Unsupported operations:** `DescribeJobFlows`

**Amazon EMR Containers**  
Task state resource: `arn:aws:states:::aws-sdk:emrcontainers:[apiAction]`  
Exception prefix: `EmrContainers`

**Amazon EMR Serverless**  
Task state resource: `arn:aws:states:::aws-sdk:emrserverless:[apiAction]`  
Exception prefix: `EmrServerless`

**ElastiCache**  
Task state resource: `arn:aws:states:::aws-sdk:elasticache:[apiAction]`  
Exception prefix: `ElastiCache`

**Elastic Beanstalk**  
Task state resource: `arn:aws:states:::aws-sdk:elasticbeanstalk:[apiAction]`  
Exception prefix: `ElasticBeanstalk`

**Elastic Disaster Recovery**  
Task state resource: `arn:aws:states:::aws-sdk:drs:[apiAction]`  
Exception prefix: `Drs`

**Elastic Inference**  
Task state resource: `arn:aws:states:::aws-sdk:elasticinference:[apiAction]`  
Exception prefix: `ElasticInference`

**Elastic Load Balancing V1**  
Task state resource: `arn:aws:states:::aws-sdk:elasticloadbalancing:[apiAction]`  
Exception prefix: `ElasticLoadBalancing`

**Elastic Load Balancing V2**  
Task state resource: `arn:aws:states:::aws-sdk:elasticloadbalancingv2:[apiAction]`  
Exception prefix: `ElasticLoadBalancingV2`

**Amazon ElasticSearch**  
Task state resource: `arn:aws:states:::aws-sdk:elasticsearch:[apiAction]`  
Exception prefix: `Elasticsearch`

**AWS Elemental Inference**  
Task state resource: `arn:aws:states:::aws-sdk:elementalinference:[apiAction]`  
Exception prefix: `ElementalInference`

**AWS End User Messaging Social**  
Task state resource: `arn:aws:states:::aws-sdk:socialmessaging:[apiAction]`  
Exception prefix: `SocialMessaging`

**AWS Entity Resolution**  
Task state resource: `arn:aws:states:::aws-sdk:entityresolution:[apiAction]`  
Exception prefix: `EntityResolution`

**Amazon EventBridge**  
Task state resource: `arn:aws:states:::aws-sdk:eventbridge:[apiAction]`  
Exception prefix: `EventBridge`

**EventBridge Pipes**  
Task state resource: `arn:aws:states:::aws-sdk:pipes:[apiAction]`  
Exception prefix: `Pipes`

**EventBridge Scheduler**  
Task state resource: `arn:aws:states:::aws-sdk:scheduler:[apiAction]`  
Exception prefix: `Scheduler`

**EventBridge Schema Registry**  
Task state resource: `arn:aws:states:::aws-sdk:schemas:[apiAction]`  
Exception prefix: `Schemas`

**AWS FIS**  
Task state resource: `arn:aws:states:::aws-sdk:fis:[apiAction]`  
Exception prefix: `Fis`

**Amazon FSx**  
Task state resource: `arn:aws:states:::aws-sdk:fsx:[apiAction]`  
Exception prefix: `FSx`

**FinSpace Data**  
Task state resource: `arn:aws:states:::aws-sdk:finspacedata:[apiAction]`  
Exception prefix: `FinspaceData`

**FinSpace Management**  
Task state resource: `arn:aws:states:::aws-sdk:finspace:[apiAction]`  
Exception prefix: `Finspace`

**Firewall Manager**  
Task state resource: `arn:aws:states:::aws-sdk:fms:[apiAction]`  
Exception prefix: `Fms`

**Amazon Forecast**  
Task state resource: `arn:aws:states:::aws-sdk:forecast:[apiAction]`  
Exception prefix: `Forecast`

**Amazon Forecast Query**  
Task state resource: `arn:aws:states:::aws-sdk:forecastquery:[apiAction]`  
Exception prefix: `Forecastquery`

**Amazon Fraud Detector**  
Task state resource: `arn:aws:states:::aws-sdk:frauddetector:[apiAction]`  
Exception prefix: `FraudDetector`

**AWS Free Tier**  
Task state resource: `arn:aws:states:::aws-sdk:freetier:[apiAction]`  
Exception prefix: `FreeTier`

**Amazon GameLift**  
Task state resource: `arn:aws:states:::aws-sdk:gamelift:[apiAction]`  
Exception prefix: `GameLift`

**Amazon GameLift Streams**  
Task state resource: `arn:aws:states:::aws-sdk:gameliftstreams:[apiAction]`  
Exception prefix: `GameLiftStreams`

**AWS Glue**  
Task state resource: `arn:aws:states:::aws-sdk:glue:[apiAction]`  
Exception prefix: `Glue`

**AWS Glue DataBrew**  
Task state resource: `arn:aws:states:::aws-sdk:databrew:[apiAction]`  
Exception prefix: `DataBrew`

**AWS Ground Station**  
Task state resource: `arn:aws:states:::aws-sdk:groundstation:[apiAction]`  
Exception prefix: `GroundStation`

**Amazon GuardDuty**  
Task state resource: `arn:aws:states:::aws-sdk:guardduty:[apiAction]`  
Exception prefix: `GuardDuty`

**AWS Health**  
Task state resource: `arn:aws:states:::aws-sdk:health:[apiAction]`  
Exception prefix: `Health`

**AWS Health Imaging**  
Task state resource: `arn:aws:states:::aws-sdk:medicalimaging:[apiAction]`  
Exception prefix: `MedicalImaging`

**Amazon HealthLake**  
Task state resource: `arn:aws:states:::aws-sdk:healthlake:[apiAction]`  
Exception prefix: `HealthLake`

**Amazon Honeycode**  
Task state resource: `arn:aws:states:::aws-sdk:honeycode:[apiAction]`  
Exception prefix: `Honeycode`

**IAM**  
Task state resource: `arn:aws:states:::aws-sdk:iam:[apiAction]`  
Exception prefix: `Iam`

**IAM Access Analyzer**  
Task state resource: `arn:aws:states:::aws-sdk:accessanalyzer:[apiAction]`  
Exception prefix: `AccessAnalyzer`

**IAM Roles Anywhere**  
Task state resource: `arn:aws:states:::aws-sdk:rolesanywhere:[apiAction]`  
Exception prefix: `RolesAnywhere`

**Amazon IVS**  
Task state resource: `arn:aws:states:::aws-sdk:ivs:[apiAction]`  
Exception prefix: `Ivs`

**Amazon IVS Chat**  
Task state resource: `arn:aws:states:::aws-sdk:ivschat:[apiAction]`  
Exception prefix: `Ivschat`

**Amazon IVS RealTime**  
Task state resource: `arn:aws:states:::aws-sdk:ivsrealtime:[apiAction]`  
Exception prefix: `IvsRealTime`

**Incident Manager**  
Task state resource: `arn:aws:states:::aws-sdk:ssmincidents:[apiAction]`  
Exception prefix: `SsmIncidents`

**Incident Manager Contacts**  
Task state resource: `arn:aws:states:::aws-sdk:ssmcontacts:[apiAction]`  
Exception prefix: `SsmContacts`

**Amazon Inspector Scan**  
Task state resource: `arn:aws:states:::aws-sdk:inspectorscan:[apiAction]`  
Exception prefix: `InspectorScan`

**Amazon Inspector V1**  
Task state resource: `arn:aws:states:::aws-sdk:inspector:[apiAction]`  
Exception prefix: `Inspector`

**Amazon Inspector V2**  
Task state resource: `arn:aws:states:::aws-sdk:inspector2:[apiAction]`  
Exception prefix: `Inspector2`

**AWS Invoicing**  
Task state resource: `arn:aws:states:::aws-sdk:invoicing:[apiAction]`  
Exception prefix: `Invoicing`

**AWS IoT**  
Task state resource: `arn:aws:states:::aws-sdk:iot:[apiAction]`  
Exception prefix: `Iot`  
**Unsupported operations:** `AttachPrincipalPolicy`, `ListPrincipalPolicies`, `DetachPrincipalPolicy`, `ListPolicyPrincipals`, `DetachPrincipalPolicy`

**AWS IoT Analytics**  
Task state resource: `arn:aws:states:::aws-sdk:iotanalytics:[apiAction]`  
Exception prefix: `IoTAnalytics`

**AWS IoT Device Advisor**  
Task state resource: `arn:aws:states:::aws-sdk:iotdeviceadvisor:[apiAction]`  
Exception prefix: `IotDeviceAdvisor`  
**Unsupported operations:** `ListTestCases`

**AWS IoT Events**  
Task state resource: `arn:aws:states:::aws-sdk:iotevents:[apiAction]`  
Exception prefix: `IotEvents`

**AWS IoT Events Data**  
Task state resource: `arn:aws:states:::aws-sdk:ioteventsdata:[apiAction]`  
Exception prefix: `IotEventsData`

**AWS IoT Fleet Hub**  
Task state resource: `arn:aws:states:::aws-sdk:iotfleethub:[apiAction]`  
Exception prefix: `IoTFleetHub`

**AWS IoT FleetWise**  
Task state resource: `arn:aws:states:::aws-sdk:iotfleetwise:[apiAction]`  
Exception prefix: `IoTFleetWise`

**AWS IoT Greengrass V1**  
Task state resource: `arn:aws:states:::aws-sdk:greengrass:[apiAction]`  
Exception prefix: `Greengrass`

**AWS IoT Greengrass V2**  
Task state resource: `arn:aws:states:::aws-sdk:greengrassv2:[apiAction]`  
Exception prefix: `GreengrassV2`

**AWS IoT Jobs Data**  
Task state resource: `arn:aws:states:::aws-sdk:iotjobsdataplane:[apiAction]`  
Exception prefix: `IotJobsDataPlane`

**AWS IoT Managed Integrations**  
Task state resource: `arn:aws:states:::aws-sdk:iotmanagedintegrations:[apiAction]`  
Exception prefix: `IotManagedIntegrations`

**AWS IoT Secure Tunneling**  
Task state resource: `arn:aws:states:::aws-sdk:iotsecuretunneling:[apiAction]`  
Exception prefix: `IoTSecureTunneling`

**AWS IoT SiteWise**  
Task state resource: `arn:aws:states:::aws-sdk:iotsitewise:[apiAction]`  
Exception prefix: `IoTSiteWise`  
**Unsupported operations:** `InvokeAssistant`

**AWS IoT Things Graph**  
Task state resource: `arn:aws:states:::aws-sdk:iotthingsgraph:[apiAction]`  
Exception prefix: `IoTThingsGraph`

**AWS IoT TwinMaker**  
Task state resource: `arn:aws:states:::aws-sdk:iottwinmaker:[apiAction]`  
Exception prefix: `IoTTwinMaker`

**AWS IoT Wireless**  
Task state resource: `arn:aws:states:::aws-sdk:iotwireless:[apiAction]`  
Exception prefix: `IotWireless`

**AWS KMS**  
Task state resource: `arn:aws:states:::aws-sdk:kms:[apiAction]`  
Exception prefix: `Kms`

**Amazon Kendra**  
Task state resource: `arn:aws:states:::aws-sdk:kendra:[apiAction]`  
Exception prefix: `Kendra`

**Amazon Kendra Intelligent Ranking**  
Task state resource: `arn:aws:states:::aws-sdk:kendraranking:[apiAction]`  
Exception prefix: `KendraRanking`

**Amazon Keyspaces**  
Task state resource: `arn:aws:states:::aws-sdk:keyspaces:[apiAction]`  
Exception prefix: `Keyspaces`

**Amazon Keyspaces CDC Streams**  
Task state resource: `arn:aws:states:::aws-sdk:keyspacesstreams:[apiAction]`  
Exception prefix: `KeyspacesStreams`

**Kinesis Data Analytics V1**  
Task state resource: `arn:aws:states:::aws-sdk:kinesisanalytics:[apiAction]`  
Exception prefix: `KinesisAnalytics`

**Kinesis Data Analytics V2**  
Task state resource: `arn:aws:states:::aws-sdk:kinesisanalyticsv2:[apiAction]`  
Exception prefix: `KinesisAnalyticsV2`

**Kinesis Data Firehose**  
Task state resource: `arn:aws:states:::aws-sdk:firehose:[apiAction]`  
Exception prefix: `Firehose`

**Kinesis Data Streams**  
Task state resource: `arn:aws:states:::aws-sdk:kinesis:[apiAction]`  
Exception prefix: `Kinesis`  
**Unsupported operations:** `SubscribeToShard`

**Kinesis Video Signaling Channels**  
Task state resource: `arn:aws:states:::aws-sdk:kinesisvideosignaling:[apiAction]`  
Exception prefix: `KinesisVideoSignaling`

**Kinesis Video Streams**  
Task state resource: `arn:aws:states:::aws-sdk:kinesisvideo:[apiAction]`  
Exception prefix: `KinesisVideo`

**Kinesis Video Streams Archived Media**  
Task state resource: `arn:aws:states:::aws-sdk:kinesisvideoarchivedmedia:[apiAction]`  
Exception prefix: `KinesisVideoArchivedMedia`

**Kinesis Video Streams Media**  
Task state resource: `arn:aws:states:::aws-sdk:kinesisvideomedia:[apiAction]`  
Exception prefix: `KinesisVideoMedia`

**Kinesis Video WebRTC Storage**  
Task state resource: `arn:aws:states:::aws-sdk:kinesisvideowebrtcstorage:[apiAction]`  
Exception prefix: `KinesisVideoWebRtcStorage`

**AWS Lake Formation**  
Task state resource: `arn:aws:states:::aws-sdk:lakeformation:[apiAction]`  
Exception prefix: `LakeFormation`

**AWS Lambda**  
Task state resource: `arn:aws:states:::aws-sdk:lambda:[apiAction]`  
Exception prefix: `Lambda`  
**Unsupported operations:** `InvokeAsync`, `InvokeWithResponseStream`

**AWS Launch Wizard**  
Task state resource: `arn:aws:states:::aws-sdk:launchwizard:[apiAction]`  
Exception prefix: `LaunchWizard`

**Amazon Lex Model Building V1**  
Task state resource: `arn:aws:states:::aws-sdk:lexmodelbuilding:[apiAction]`  
Exception prefix: `LexModelBuilding`

**Amazon Lex Model Building V2**  
Task state resource: `arn:aws:states:::aws-sdk:lexmodelsv2:[apiAction]`  
Exception prefix: `LexModelsV2`

**Amazon Lex Runtime V1**  
Task state resource: `arn:aws:states:::aws-sdk:lexruntime:[apiAction]`  
Exception prefix: `LexRuntime`

**Amazon Lex Runtime V2**  
Task state resource: `arn:aws:states:::aws-sdk:lexruntimev2:[apiAction]`  
Exception prefix: `LexRuntimeV2`  
**Unsupported operations:** `StartConversation`

**AWS License Manager**  
Task state resource: `arn:aws:states:::aws-sdk:licensemanager:[apiAction]`  
Exception prefix: `LicenseManager`

**License Manager Linux Subscriptions**  
Task state resource: `arn:aws:states:::aws-sdk:licensemanagerlinuxsubscriptions:[apiAction]`  
Exception prefix: `LicenseManagerLinuxSubscriptions`

**License Manager User Subscriptions**  
Task state resource: `arn:aws:states:::aws-sdk:licensemanagerusersubscriptions:[apiAction]`  
Exception prefix: `LicenseManagerUserSubscriptions`

**Amazon Lightsail**  
Task state resource: `arn:aws:states:::aws-sdk:lightsail:[apiAction]`  
Exception prefix: `Lightsail`

**Amazon Location**  
Task state resource: `arn:aws:states:::aws-sdk:location:[apiAction]`  
Exception prefix: `Location`

**Amazon Location Service Maps V2**  
Task state resource: `arn:aws:states:::aws-sdk:geomaps:[apiAction]`  
Exception prefix: `GeoMaps`

**Amazon Location Service Places V2**  
Task state resource: `arn:aws:states:::aws-sdk:geoplaces:[apiAction]`  
Exception prefix: `GeoPlaces`

**Amazon Location Service Routes V2**  
Task state resource: `arn:aws:states:::aws-sdk:georoutes:[apiAction]`  
Exception prefix: `GeoRoutes`

**Lookout for Equipment**  
Task state resource: `arn:aws:states:::aws-sdk:lookoutequipment:[apiAction]`  
Exception prefix: `LookoutEquipment`

**Lookout for Vision**  
Task state resource: `arn:aws:states:::aws-sdk:lookoutvision:[apiAction]`  
Exception prefix: `LookoutVision`

**Amazon MQ**  
Task state resource: `arn:aws:states:::aws-sdk:mq:[apiAction]`  
Exception prefix: `Mq`

**Amazon MSK**  
Task state resource: `arn:aws:states:::aws-sdk:kafka:[apiAction]`  
Exception prefix: `Kafka`

**Amazon MSK Connect**  
Task state resource: `arn:aws:states:::aws-sdk:kafkaconnect:[apiAction]`  
Exception prefix: `KafkaConnect`

**Amazon MWAA**  
Task state resource: `arn:aws:states:::aws-sdk:mwaa:[apiAction]`  
Exception prefix: `Mwaa`

**Amazon MWAA Serverless**  
Task state resource: `arn:aws:states:::aws-sdk:mwaaserverless:[apiAction]`  
Exception prefix: `MwaaServerless`

**Amazon Macie V2**  
Task state resource: `arn:aws:states:::aws-sdk:macie2:[apiAction]`  
Exception prefix: `Macie2`

**MailManager**  
Task state resource: `arn:aws:states:::aws-sdk:mailmanager:[apiAction]`  
Exception prefix: `MailManager`

**AWS Mainframe Modernization**  
Task state resource: `arn:aws:states:::aws-sdk:m2:[apiAction]`  
Exception prefix: `M2`

**Managed Blockchain**  
Task state resource: `arn:aws:states:::aws-sdk:managedblockchain:[apiAction]`  
Exception prefix: `ManagedBlockchain`

**Managed Blockchain Query**  
Task state resource: `arn:aws:states:::aws-sdk:managedblockchainquery:[apiAction]`  
Exception prefix: `ManagedBlockchainQuery`

**Amazon Managed Grafana**  
Task state resource: `arn:aws:states:::aws-sdk:grafana:[apiAction]`  
Exception prefix: `Grafana`

**AWS Marketplace Catalog**  
Task state resource: `arn:aws:states:::aws-sdk:marketplacecatalog:[apiAction]`  
Exception prefix: `MarketplaceCatalog`

**AWS Marketplace Commerce Analytics**  
Task state resource: `arn:aws:states:::aws-sdk:marketplacecommerceanalytics:[apiAction]`  
Exception prefix: `MarketplaceCommerceAnalytics`

**AWS Marketplace Entitlement Service**  
Task state resource: `arn:aws:states:::aws-sdk:marketplaceentitlement:[apiAction]`  
Exception prefix: `MarketplaceEntitlement`

**AWS Marketplace Metering**  
Task state resource: `arn:aws:states:::aws-sdk:marketplacemetering:[apiAction]`  
Exception prefix: `MarketplaceMetering`

**AWS Marketplace Reporting Service**  
Task state resource: `arn:aws:states:::aws-sdk:marketplacereporting:[apiAction]`  
Exception prefix: `MarketplaceReporting`

**Amazon Mechanical Turk**  
Task state resource: `arn:aws:states:::aws-sdk:mturk:[apiAction]`  
Exception prefix: `MTurk`

**MediaConnect**  
Task state resource: `arn:aws:states:::aws-sdk:mediaconnect:[apiAction]`  
Exception prefix: `MediaConnect`

**MediaConvert**  
Task state resource: `arn:aws:states:::aws-sdk:mediaconvert:[apiAction]`  
Exception prefix: `MediaConvert`

**MediaLive**  
Task state resource: `arn:aws:states:::aws-sdk:medialive:[apiAction]`  
Exception prefix: `MediaLive`

**MediaPackage V1**  
Task state resource: `arn:aws:states:::aws-sdk:mediapackage:[apiAction]`  
Exception prefix: `MediaPackage`  
**Unsupported operations:** `RotateChannelCredentials`

**MediaPackage V2**  
Task state resource: `arn:aws:states:::aws-sdk:mediapackagev2:[apiAction]`  
Exception prefix: `MediaPackageV2`

**MediaPackage VOD**  
Task state resource: `arn:aws:states:::aws-sdk:mediapackagevod:[apiAction]`  
Exception prefix: `MediaPackageVod`

**MediaStore**  
Task state resource: `arn:aws:states:::aws-sdk:mediastore:[apiAction]`  
Exception prefix: `MediaStore`

**MediaTailor**  
Task state resource: `arn:aws:states:::aws-sdk:mediatailor:[apiAction]`  
Exception prefix: `MediaTailor`

**Amazon MemoryDB**  
Task state resource: `arn:aws:states:::aws-sdk:memorydb:[apiAction]`  
Exception prefix: `MemoryDb`

**Migration Hub**  
Task state resource: `arn:aws:states:::aws-sdk:migrationhub:[apiAction]`  
Exception prefix: `MigrationHub`

**Migration Hub Home Region**  
Task state resource: `arn:aws:states:::aws-sdk:migrationhubconfig:[apiAction]`  
Exception prefix: `MigrationHubConfig`

**Migration Hub Orchestrator**  
Task state resource: `arn:aws:states:::aws-sdk:migrationhuborchestrator:[apiAction]`  
Exception prefix: `MigrationHubOrchestrator`

**Migration Hub Refactor Spaces**  
Task state resource: `arn:aws:states:::aws-sdk:migrationhubrefactorspaces:[apiAction]`  
Exception prefix: `MigrationHubRefactorSpaces`

**Migration Hub Strategy Recommendations**  
Task state resource: `arn:aws:states:::aws-sdk:migrationhubstrategy:[apiAction]`  
Exception prefix: `MigrationHubStrategy`

**Multi-party Approval**  
Task state resource: `arn:aws:states:::aws-sdk:mpa:[apiAction]`  
Exception prefix: `Mpa`

**Amazon Neptune**  
Task state resource: `arn:aws:states:::aws-sdk:neptune:[apiAction]`  
Exception prefix: `Neptune`

**Amazon Neptune Graph**  
Task state resource: `arn:aws:states:::aws-sdk:neptunegraph:[apiAction]`  
Exception prefix: `NeptuneGraph`

**Network Firewall**  
Task state resource: `arn:aws:states:::aws-sdk:networkfirewall:[apiAction]`  
Exception prefix: `NetworkFirewall`

**Network Flow Monitor**  
Task state resource: `arn:aws:states:::aws-sdk:networkflowmonitor:[apiAction]`  
Exception prefix: `NetworkFlowMonitor`

**Network Manager**  
Task state resource: `arn:aws:states:::aws-sdk:networkmanager:[apiAction]`  
Exception prefix: `NetworkManager`

**Network Monitor**  
Task state resource: `arn:aws:states:::aws-sdk:networkmonitor:[apiAction]`  
Exception prefix: `NetworkMonitor`

**Amazon Nova Act**  
Task state resource: `arn:aws:states:::aws-sdk:novaact:[apiAction]`  
Exception prefix: `NovaAct`

**Amazon Omics**  
Task state resource: `arn:aws:states:::aws-sdk:omics:[apiAction]`  
Exception prefix: `Omics`

**Amazon OpenSearch**  
Task state resource: `arn:aws:states:::aws-sdk:opensearch:[apiAction]`  
Exception prefix: `OpenSearch`

**Amazon OpenSearch Ingestion**  
Task state resource: `arn:aws:states:::aws-sdk:osis:[apiAction]`  
Exception prefix: `Osis`

**OpenSearch Serverless**  
Task state resource: `arn:aws:states:::aws-sdk:opensearchserverless:[apiAction]`  
Exception prefix: `OpenSearchServerless`

**OpsWorks CM**  
Task state resource: `arn:aws:states:::aws-sdk:opsworkscm:[apiAction]`  
Exception prefix: `OpsWorksCm`

**Oracle Database@AWS**  
Task state resource: `arn:aws:states:::aws-sdk:odb:[apiAction]`  
Exception prefix: `Odb`

**AWS Organizations**  
Task state resource: `arn:aws:states:::aws-sdk:organizations:[apiAction]`  
Exception prefix: `Organizations`

**AWS Outposts**  
Task state resource: `arn:aws:states:::aws-sdk:outposts:[apiAction]`  
Exception prefix: `Outposts`

**AWS Panorama**  
Task state resource: `arn:aws:states:::aws-sdk:panorama:[apiAction]`  
Exception prefix: `Panorama`

**AWS Parallel Computing Service**  
Task state resource: `arn:aws:states:::aws-sdk:pcs:[apiAction]`  
Exception prefix: `Pcs`

**Partner Central Account**  
Task state resource: `arn:aws:states:::aws-sdk:partnercentralaccount:[apiAction]`  
Exception prefix: `PartnerCentralAccount`

**Partner Central Benefits**  
Task state resource: `arn:aws:states:::aws-sdk:partnercentralbenefits:[apiAction]`  
Exception prefix: `PartnerCentralBenefits`

**Partner Central Channel**  
Task state resource: `arn:aws:states:::aws-sdk:partnercentralchannel:[apiAction]`  
Exception prefix: `PartnerCentralChannel`

**Partner Central Selling API**  
Task state resource: `arn:aws:states:::aws-sdk:partnercentralselling:[apiAction]`  
Exception prefix: `PartnerCentralSelling`

**Payment Cryptography**  
Task state resource: `arn:aws:states:::aws-sdk:paymentcryptography:[apiAction]`  
Exception prefix: `PaymentCryptography`

**Payment Cryptography Data**  
Task state resource: `arn:aws:states:::aws-sdk:paymentcryptographydata:[apiAction]`  
Exception prefix: `PaymentCryptographyData`

**Amazon Personalize**  
Task state resource: `arn:aws:states:::aws-sdk:personalize:[apiAction]`  
Exception prefix: `Personalize`

**Amazon Personalize Events**  
Task state resource: `arn:aws:states:::aws-sdk:personalizeevents:[apiAction]`  
Exception prefix: `PersonalizeEvents`

**Amazon Personalize Runtime**  
Task state resource: `arn:aws:states:::aws-sdk:personalizeruntime:[apiAction]`  
Exception prefix: `PersonalizeRuntime`

**Amazon Pinpoint**  
Task state resource: `arn:aws:states:::aws-sdk:pinpoint:[apiAction]`  
Exception prefix: `Pinpoint`

**Amazon Pinpoint Email Service**  
Task state resource: `arn:aws:states:::aws-sdk:pinpointemail:[apiAction]`  
Exception prefix: `PinpointEmail`

**Amazon Pinpoint SMS and Voice V1**  
Task state resource: `arn:aws:states:::aws-sdk:pinpointsmsvoice:[apiAction]`  
Exception prefix: `PinpointSmsVoice`

**Amazon Pinpoint SMS and Voice V2**  
Task state resource: `arn:aws:states:::aws-sdk:pinpointsmsvoicev2:[apiAction]`  
Exception prefix: `PinpointSmsVoiceV2`

**Amazon Polly**  
Task state resource: `arn:aws:states:::aws-sdk:polly:[apiAction]`  
Exception prefix: `Polly`

**AWS Price List**  
Task state resource: `arn:aws:states:::aws-sdk:pricing:[apiAction]`  
Exception prefix: `Pricing`

**AWS Private 5G**  
Task state resource: `arn:aws:states:::aws-sdk:privatenetworks:[apiAction]`  
Exception prefix: `PrivateNetworks`

**Private CA Connector for Active Directory**  
Task state resource: `arn:aws:states:::aws-sdk:pcaconnectorad:[apiAction]`  
Exception prefix: `PcaConnectorAd`

**Private CA Connector for SCEP**  
Task state resource: `arn:aws:states:::aws-sdk:pcaconnectorscep:[apiAction]`  
Exception prefix: `PcaConnectorScep`

**Amazon Prometheus**  
Task state resource: `arn:aws:states:::aws-sdk:amp:[apiAction]`  
Exception prefix: `Amp`

**AWS Proton**  
Task state resource: `arn:aws:states:::aws-sdk:proton:[apiAction]`  
Exception prefix: `Proton`

**Amazon Q Apps**  
Task state resource: `arn:aws:states:::aws-sdk:qapps:[apiAction]`  
Exception prefix: `QApps`

**Amazon Q Business**  
Task state resource: `arn:aws:states:::aws-sdk:qbusiness:[apiAction]`  
Exception prefix: `QBusiness`  
**Unsupported operations:** `Chat`

**Amazon Q Connect**  
Task state resource: `arn:aws:states:::aws-sdk:qconnect:[apiAction]`  
Exception prefix: `QConnect`

**Amazon QuickSight**  
Task state resource: `arn:aws:states:::aws-sdk:quicksight:[apiAction]`  
Exception prefix: `QuickSight`

**Amazon RDS**  
Task state resource: `arn:aws:states:::aws-sdk:rds:[apiAction]`  
Exception prefix: `Rds`

**Amazon RDS Data**  
Task state resource: `arn:aws:states:::aws-sdk:rdsdata:[apiAction]`  
Exception prefix: `RdsData`  
**Unsupported operations:** `ExecuteSql`

**Amazon RDS Performance Insights**  
Task state resource: `arn:aws:states:::aws-sdk:pi:[apiAction]`  
Exception prefix: `Pi`

**AWS RTB Fabric**  
Task state resource: `arn:aws:states:::aws-sdk:rtbfabric:[apiAction]`  
Exception prefix: `RtbFabric`

**Recycle Bin for EBS**  
Task state resource: `arn:aws:states:::aws-sdk:rbin:[apiAction]`  
Exception prefix: `Rbin`

**Amazon Redshift**  
Task state resource: `arn:aws:states:::aws-sdk:redshift:[apiAction]`  
Exception prefix: `Redshift`

**Amazon Redshift Data**  
Task state resource: `arn:aws:states:::aws-sdk:redshiftdata:[apiAction]`  
Exception prefix: `RedshiftData`

**Amazon Redshift Serverless**  
Task state resource: `arn:aws:states:::aws-sdk:redshiftserverless:[apiAction]`  
Exception prefix: `RedshiftServerless`

**Amazon Rekognition**  
Task state resource: `arn:aws:states:::aws-sdk:rekognition:[apiAction]`  
Exception prefix: `Rekognition`

**Resilience Hub**  
Task state resource: `arn:aws:states:::aws-sdk:resiliencehub:[apiAction]`  
Exception prefix: `Resiliencehub`

**AWS Resource Access Manager**  
Task state resource: `arn:aws:states:::aws-sdk:ram:[apiAction]`  
Exception prefix: `Ram`

**AWS Resource Explorer**  
Task state resource: `arn:aws:states:::aws-sdk:resourceexplorer2:[apiAction]`  
Exception prefix: `ResourceExplorer2`

**Resource Groups**  
Task state resource: `arn:aws:states:::aws-sdk:resourcegroups:[apiAction]`  
Exception prefix: `ResourceGroups`

**Resource Groups Tagging**  
Task state resource: `arn:aws:states:::aws-sdk:resourcegroupstaggingapi:[apiAction]`  
Exception prefix: `ResourceGroupsTaggingApi`

**Route 53**  
Task state resource: `arn:aws:states:::aws-sdk:route53:[apiAction]`  
Exception prefix: `Route53`

**Route 53 ARC Region Switch**  
Task state resource: `arn:aws:states:::aws-sdk:arcregionswitch:[apiAction]`  
Exception prefix: `ArcRegionSwitch`

**Route 53 ARC Zonal Shift**  
Task state resource: `arn:aws:states:::aws-sdk:arczonalshift:[apiAction]`  
Exception prefix: `ArcZonalShift`

**Route 53 Domains**  
Task state resource: `arn:aws:states:::aws-sdk:route53domains:[apiAction]`  
Exception prefix: `Route53Domains`

**Route 53 Global Resolver**  
Task state resource: `arn:aws:states:::aws-sdk:route53globalresolver:[apiAction]`  
Exception prefix: `Route53GlobalResolver`

**Route 53 Profiles**  
Task state resource: `arn:aws:states:::aws-sdk:route53profiles:[apiAction]`  
Exception prefix: `Route53Profiles`

**Route 53 Recovery Control Config**  
Task state resource: `arn:aws:states:::aws-sdk:route53recoverycontrolconfig:[apiAction]`  
Exception prefix: `Route53RecoveryControlConfig`

**Route 53 Recovery Readiness**  
Task state resource: `arn:aws:states:::aws-sdk:route53recoveryreadiness:[apiAction]`  
Exception prefix: `Route53RecoveryReadiness`

**Route 53 Resolver**  
Task state resource: `arn:aws:states:::aws-sdk:route53resolver:[apiAction]`  
Exception prefix: `Route53Resolver`

**Route 53 Routing Control**  
Task state resource: `arn:aws:states:::aws-sdk:route53recoverycluster:[apiAction]`  
Exception prefix: `Route53RecoveryCluster`

**Runtime for Amazon Bedrock Data Automation**  
Task state resource: `arn:aws:states:::aws-sdk:bedrockdataautomationruntime:[apiAction]`  
Exception prefix: `BedrockDataAutomationRuntime`

**Amazon S3**  
Task state resource: `arn:aws:states:::aws-sdk:s3:[apiAction]`  
Exception prefix: `S3`  
**Unsupported operations:** `SelectObjectContent`

**Amazon S3 Control**  
Task state resource: `arn:aws:states:::aws-sdk:s3control:[apiAction]`  
Exception prefix: `S3Control`  
**Unsupported operations:** `SelectObjectContent`

**Amazon S3 Glacier**  
Task state resource: `arn:aws:states:::aws-sdk:glacier:[apiAction]`  
Exception prefix: `Glacier`

**Amazon S3 Tables**  
Task state resource: `arn:aws:states:::aws-sdk:s3tables:[apiAction]`  
Exception prefix: `S3Tables`

**Amazon S3 Vectors**  
Task state resource: `arn:aws:states:::aws-sdk:s3vectors:[apiAction]`  
Exception prefix: `S3Vectors`

**Amazon S3 on Outposts**  
Task state resource: `arn:aws:states:::aws-sdk:s3outposts:[apiAction]`  
Exception prefix: `S3Outposts`

**Amazon SES V1**  
Task state resource: `arn:aws:states:::aws-sdk:ses:[apiAction]`  
Exception prefix: `Ses`

**Amazon SES V2**  
Task state resource: `arn:aws:states:::aws-sdk:sesv2:[apiAction]`  
Exception prefix: `SesV2`

**Amazon SNS**  
Task state resource: `arn:aws:states:::aws-sdk:sns:[apiAction]`  
Exception prefix: `Sns`

**Amazon SQS**  
Task state resource: `arn:aws:states:::aws-sdk:sqs:[apiAction]`  
Exception prefix: `Sqs`

**AWS SSO**  
Task state resource: `arn:aws:states:::aws-sdk:identitystore:[apiAction]`  
Exception prefix: `Identitystore`

**AWS SSO**  
Task state resource: `arn:aws:states:::aws-sdk:sso:[apiAction]`  
Exception prefix: `Sso`

**AWS SSO Admin**  
Task state resource: `arn:aws:states:::aws-sdk:ssoadmin:[apiAction]`  
Exception prefix: `SsoAdmin`

**AWS SSO OIDC**  
Task state resource: `arn:aws:states:::aws-sdk:ssooidc:[apiAction]`  
Exception prefix: `SsoOidc`

**Amazon SWF**  
Task state resource: `arn:aws:states:::aws-sdk:swf:[apiAction]`  
Exception prefix: `Swf`

**SageMaker**  
Task state resource: `arn:aws:states:::aws-sdk:sagemaker:[apiAction]`  
Exception prefix: `SageMaker`

**SageMaker Feature Store**  
Task state resource: `arn:aws:states:::aws-sdk:sagemakerfeaturestoreruntime:[apiAction]`  
Exception prefix: `SageMakerFeatureStoreRuntime`

**SageMaker Geospatial**  
Task state resource: `arn:aws:states:::aws-sdk:sagemakergeospatial:[apiAction]`  
Exception prefix: `SageMakerGeospatial`

**SageMaker Metrics**  
Task state resource: `arn:aws:states:::aws-sdk:sagemakermetrics:[apiAction]`  
Exception prefix: `SageMakerMetrics`

**SageMaker Runtime**  
Task state resource: `arn:aws:states:::aws-sdk:sagemakerruntime:[apiAction]`  
Exception prefix: `SageMakerRuntime`  
**Unsupported operations:** `InvokeEndpointWithResponseStream`

**Amazon SageMaker Runtime HTTP2**  
Task state resource: `arn:aws:states:::aws-sdk:sagemakerruntimehttp2:[apiAction]`  
Exception prefix: `SageMakerRuntimeHttp2`  
**Unsupported operations:** `InvokeEndpointWithBidirectionalStream`

**AWS Savings Plans**  
Task state resource: `arn:aws:states:::aws-sdk:savingsplans:[apiAction]`  
Exception prefix: `Savingsplans`

**AWS Secrets Manager**  
Task state resource: `arn:aws:states:::aws-sdk:secretsmanager:[apiAction]`  
Exception prefix: `SecretsManager`

**AWS Security Hub**  
Task state resource: `arn:aws:states:::aws-sdk:securityhub:[apiAction]`  
Exception prefix: `SecurityHub`  
**Unsupported operations:** `ConnectorRegistrationsV2`

**Security Incident Response**  
Task state resource: `arn:aws:states:::aws-sdk:securityir:[apiAction]`  
Exception prefix: `SecurityIr`

**Amazon Security Lake**  
Task state resource: `arn:aws:states:::aws-sdk:securitylake:[apiAction]`  
Exception prefix: `SecurityLake`  
**Unsupported operations:** `GetDatalake`, `GetDatalakeAutoEnable`, `GetDatalakeExceptionsExpiry`, `GetDatalakeExceptionsSubscription`, `GetDatalakeStatus`, `CreateSubscriptionNotificationConfiguration`, `CreateDatalake`, `CreateDatalakeAutoEnable`, `CreateDatalakeDelegatedAdmin`, `CreateDatalakeExceptionsSubscription`, `DeleteDatalake`, `UpdateDatalake`, `UpdateSubscriptionNotificationConfiguration`, `UpdateDatalakeExceptionsExpiry`, `UpdateDatalakeExceptionsSubscription`, `DeleteDatalakeAutoEnable`, `DeleteDatalakeDelegatedAdmin`, `DeleteDatalakeExceptionsSubscription`, `DeleteSubscriptionNotificationConfiguration`, `ListDatalakeExceptions`

**AWS Security Token Service**  
Task state resource: `arn:aws:states:::aws-sdk:sts:[apiAction]`  
Exception prefix: `Sts`  
**Unsupported operations:** `AssumeRole`, `AssumeRoleWithSAML`, `AssumeRoleWithWebIdentity`

**AWS Server Migration Service**  
Task state resource: `arn:aws:states:::aws-sdk:sms:[apiAction]`  
Exception prefix: `Sms`

**AWS Serverless Application Repository**  
Task state resource: `arn:aws:states:::aws-sdk:serverlessapplicationrepository:[apiAction]`  
Exception prefix: `ServerlessApplicationRepository`

**AWS Service Catalog**  
Task state resource: `arn:aws:states:::aws-sdk:servicecatalog:[apiAction]`  
Exception prefix: `ServiceCatalog`

**AWS Service Catalog App Registry**  
Task state resource: `arn:aws:states:::aws-sdk:servicecatalogappregistry:[apiAction]`  
Exception prefix: `ServiceCatalogAppRegistry`

**Service Quotas**  
Task state resource: `arn:aws:states:::aws-sdk:servicequotas:[apiAction]`  
Exception prefix: `ServiceQuotas`

**AWS Shield**  
Task state resource: `arn:aws:states:::aws-sdk:shield:[apiAction]`  
Exception prefix: `Shield`  
**Unsupported operations:** `DeleteSubscription`

**AWS Sign-In Service**  
Task state resource: `arn:aws:states:::aws-sdk:signin:[apiAction]`  
Exception prefix: `Signin`

**AWS Signer**  
Task state resource: `arn:aws:states:::aws-sdk:signer:[apiAction]`  
Exception prefix: `Signer`

**AWS Signer Data Plane**  
Task state resource: `arn:aws:states:::aws-sdk:signerdata:[apiAction]`  
Exception prefix: `SignerData`

**AWS SimSpace Weaver**  
Task state resource: `arn:aws:states:::aws-sdk:simspaceweaver:[apiAction]`  
Exception prefix: `SimSpaceWeaver`

**AWS Snow Device Management**  
Task state resource: `arn:aws:states:::aws-sdk:snowdevicemanagement:[apiAction]`  
Exception prefix: `SnowDeviceManagement`

**AWS Snowball**  
Task state resource: `arn:aws:states:::aws-sdk:snowball:[apiAction]`  
Exception prefix: `Snowball`

**AWS Step Functions**  
Task state resource: `arn:aws:states:::aws-sdk:sfn:[apiAction]`  
Exception prefix: `Sfn`

**AWS Storage Gateway**  
Task state resource: `arn:aws:states:::aws-sdk:storagegateway:[apiAction]`  
Exception prefix: `StorageGateway`

**AWS Supply Chain**  
Task state resource: `arn:aws:states:::aws-sdk:supplychain:[apiAction]`  
Exception prefix: `SupplyChain`

**AWS Support**  
Task state resource: `arn:aws:states:::aws-sdk:support:[apiAction]`  
Exception prefix: `Support`

**AWS Support App**  
Task state resource: `arn:aws:states:::aws-sdk:supportapp:[apiAction]`  
Exception prefix: `SupportApp`

**Systems Manager**  
Task state resource: `arn:aws:states:::aws-sdk:ssm:[apiAction]`  
Exception prefix: `Ssm`

**Systems Manager GUI Connect**  
Task state resource: `arn:aws:states:::aws-sdk:ssmguiconnect:[apiAction]`  
Exception prefix: `SsmGuiConnect`

**AWS Systems Manager QuickSetup**  
Task state resource: `arn:aws:states:::aws-sdk:ssmquicksetup:[apiAction]`  
Exception prefix: `SsmQuickSetup`

**Systems Manager for SAP**  
Task state resource: `arn:aws:states:::aws-sdk:ssmsap:[apiAction]`  
Exception prefix: `SsmSap`

**Tax Settings**  
Task state resource: `arn:aws:states:::aws-sdk:taxsettings:[apiAction]`  
Exception prefix: `TaxSettings`

**AWS Telco Network Builder**  
Task state resource: `arn:aws:states:::aws-sdk:tnb:[apiAction]`  
Exception prefix: `Tnb`

**Amazon Textract**  
Task state resource: `arn:aws:states:::aws-sdk:textract:[apiAction]`  
Exception prefix: `Textract`

**Timestream InfluxDB**  
Task state resource: `arn:aws:states:::aws-sdk:timestreaminfluxdb:[apiAction]`  
Exception prefix: `TimestreamInfluxDb`

**Amazon Timestream Query**  
Task state resource: `arn:aws:states:::aws-sdk:timestreamquery:[apiAction]`  
Exception prefix: `TimestreamQuery`

**Amazon Timestream Write**  
Task state resource: `arn:aws:states:::aws-sdk:timestreamwrite:[apiAction]`  
Exception prefix: `TimestreamWrite`

**Amazon Transcribe**  
Task state resource: `arn:aws:states:::aws-sdk:transcribe:[apiAction]`  
Exception prefix: `Transcribe`

**AWS Transfer Family**  
Task state resource: `arn:aws:states:::aws-sdk:transfer:[apiAction]`  
Exception prefix: `Transfer`

**Amazon Translate**  
Task state resource: `arn:aws:states:::aws-sdk:translate:[apiAction]`  
Exception prefix: `Translate`

**Trusted Advisor**  
Task state resource: `arn:aws:states:::aws-sdk:trustedadvisor:[apiAction]`  
Exception prefix: `TrustedAdvisor`

**AWS User Notifications Contacts**  
Task state resource: `arn:aws:states:::aws-sdk:notificationscontacts:[apiAction]`  
Exception prefix: `NotificationsContacts`

**Amazon VPC Lattice**  
Task state resource: `arn:aws:states:::aws-sdk:vpclattice:[apiAction]`  
Exception prefix: `VpcLattice`

**Verified Permissions**  
Task state resource: `arn:aws:states:::aws-sdk:verifiedpermissions:[apiAction]`  
Exception prefix: `VerifiedPermissions`

**AWS WAF V1**  
Task state resource: `arn:aws:states:::aws-sdk:waf:[apiAction]`  
Exception prefix: `Waf`

**AWS WAF V1 Regional**  
Task state resource: `arn:aws:states:::aws-sdk:wafregional:[apiAction]`  
Exception prefix: `WafRegional`

**AWS WAF V2**  
Task state resource: `arn:aws:states:::aws-sdk:wafv2:[apiAction]`  
Exception prefix: `Wafv2`

**AWS Well-Architected Tool**  
Task state resource: `arn:aws:states:::aws-sdk:wellarchitected:[apiAction]`  
Exception prefix: `WellArchitected`

**AWS Wickr**  
Task state resource: `arn:aws:states:::aws-sdk:wickr:[apiAction]`  
Exception prefix: `Wickr`

**Amazon WorkDocs**  
Task state resource: `arn:aws:states:::aws-sdk:workdocs:[apiAction]`  
Exception prefix: `WorkDocs`

**Amazon WorkMail**  
Task state resource: `arn:aws:states:::aws-sdk:workmail:[apiAction]`  
Exception prefix: `WorkMail`

**Amazon WorkMail Message Flow**  
Task state resource: `arn:aws:states:::aws-sdk:workmailmessageflow:[apiAction]`  
Exception prefix: `WorkMailMessageFlow`

**Amazon WorkSpaces**  
Task state resource: `arn:aws:states:::aws-sdk:workspaces:[apiAction]`  
Exception prefix: `WorkSpaces`

**Amazon WorkSpaces Instances**  
Task state resource: `arn:aws:states:::aws-sdk:workspacesinstances:[apiAction]`  
Exception prefix: `WorkspacesInstances`

**Amazon WorkSpaces Thin Client**  
Task state resource: `arn:aws:states:::aws-sdk:workspacesthinclient:[apiAction]`  
Exception prefix: `WorkSpacesThinClient`

**Amazon WorkSpaces Web**  
Task state resource: `arn:aws:states:::aws-sdk:workspacesweb:[apiAction]`  
Exception prefix: `WorkSpacesWeb`

**AWS X-Ray**  
Task state resource: `arn:aws:states:::aws-sdk:xray:[apiAction]`  
Exception prefix: `XRay`

**re:Post Private**  
Task state resource: `arn:aws:states:::aws-sdk:repostspace:[apiAction]`  
Exception prefix: `Repostspace`

## Deprecated AWS SDK service integrations
Deprecated service integrations

The following AWS SDK service integrations are now deprecated:
+ AWS Mobile
+ Amazon Macie
+ AWS IoT RoboRunner

# Discover service integration patterns in Step Functions
Service integration patterns

For service integrations, you can specify various integration patterns to control how your state machine interacts with the integrated AWS services :
+ [Request Response](#connect-default) - Call a service and Step Functions will progress to the next state immediately after it receives an HTTP response.
+ [Run a Job (.sync)](#connect-sync) - Call a service and have Step Functions wait for a job to complete.
+ [Wait for a Callback with Task Token](#connect-wait-token) - Call a service with a task token and have Step Functions wait until that token is returned with a payload.

Each of these service integration patterns is controlled by how you create a URI in the `"Resource"` field of your [task definition](state-task.md). 

An ASL Resource value in Step Functions is a unique name (URI) which conforms to [ARN format](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html#arns-syntax), but typically does not identify an actual *Resource* in your account. The prefix "`arn:aws:states:`" sets up a namespace that Step Functions uses for integrations. The `:::` portion of the value denotes empty `region` and `account-id` fields which are unnecessary because both are inferred from the region and account in which the workflow runs.

Legacy integrations to AWS Lambda are the one exception where the Resource value specifies an actual Lambda function resource. The Step Functions console will display these legacy Resources, but you cannot create or edit such resources in the present day graphical UI, unless you choose to edit the ASL code directly.

## Integration pattern support


Standard Workflows and Express Workflows support the same **integrations** but not the same **integration patterns**. 
+  **Standard Workflows** support *Request Response* integrations. Certain services support *Run a Job (.sync)*, or *Wait for Callback (.waitForTaskToken)* , and both in some cases. See the following optimized integrations table for details. 
+  **Express Workflows** only support *Request Response* integrations. 

 To help decide between the two types, see [Choosing workflow type in Step Functions](choosing-workflow-type.md). 



**AWS SDK integrations in Step Functions**


| Integrated service | Request Response | Run a Job - *.sync* | Wait for Callback - *.waitForTaskToken* | 
| --- | --- | --- | --- | 
| [Over two hundred services](supported-services-awssdk.md#supported-services-awssdk-list) | Standard & Express | Not supported | Standard | 

**Optimized integrations in Step Functions**


| Integrated service | Request Response | Run a Job - *.sync* | Wait for Callback - *.waitForTaskToken* | 
| --- | --- | --- | --- | 
| [Amazon API Gateway](connect-api-gateway.md) | Standard & Express | Not supported | Standard | 
| [Amazon Athena](connect-athena.md) | Standard & Express | Standard | Not supported | 
| [AWS Batch](connect-batch.md) | Standard & Express | Standard | Not supported | 
| [Amazon Bedrock](connect-bedrock.md) | Standard & Express | Standard | Standard | 
| [AWS CodeBuild](connect-codebuild.md) | Standard & Express | Standard | Not supported | 
| [Amazon DynamoDB](connect-ddb.md) | Standard & Express | Not supported | Not supported | 
| [Amazon ECS/Fargate](connect-ecs.md) | Standard & Express | Standard | Standard | 
| [Amazon EKS](connect-eks.md) | Standard & Express | Standard | Standard | 
| [Amazon EMR](connect-emr.md) | Standard & Express | Standard | Not supported | 
| [Amazon EMR on EKS](connect-emr-eks.md) | Standard & Express | Standard | Not supported | 
| [Amazon EMR Serverless](connect-emr-serverless.md) | Standard & Express | Standard | Not supported | 
| [Amazon EventBridge](connect-eventbridge.md) | Standard & Express | Not supported | Standard | 
| [AWS Glue](connect-glue.md) | Standard & Express | Standard | Not supported | 
| [AWS Glue DataBrew](connect-databrew.md) | Standard & Express | Standard | Not supported | 
| [AWS Lambda](connect-lambda.md) | Standard & Express | Not supported | Standard | 
| [AWS Elemental MediaConvert](connect-mediaconvert.md) | Standard & Express | Standard | Not supported | 
| [Amazon SageMaker AI](connect-sagemaker.md) | Standard & Express | Standard | Not supported | 
| [Amazon SNS](connect-sns.md) | Standard & Express | Not supported | Standard | 
| [Amazon SQS](connect-sqs.md) | Standard & Express | Not supported | Standard | 
| [AWS Step Functions](connect-stepfunctions.md) | Standard & Express | Standard | Standard | 

## Request Response


When you specify a service in the `"Resource"` string of your task state, and you *only* provide the resource, Step Functions will wait for an HTTP response and then progress to the next state. Step Functions will not wait for a job to complete.

The following example shows how you can publish an Amazon SNS topic.

```
"Send message to SNS": {
    "Type":"Task",
    "Resource":"arn:aws:states:::sns:publish",
    "Parameters": {
        "TopicArn":"arn:aws:sns:region:123456789012:myTopic",
        "Message":"Hello from Step Functions!"
    },
    "Next":"NEXT_STATE"
}
```

This example references the [Publish](https://docs.aws.amazon.com/sns/latest/api/API_Publish.html) API of Amazon SNS. The workflow progresses to the next state after calling the `Publish` API.

**Tip**  
To deploy a sample workflow that uses the Request Response service integration pattern, see [Integrate a service](getting-started.md#step-4-integrate-a-service) in the getting started tutorial in this guide, or in the [Request Response module](https://catalog.workshops.aws/stepfunctions/integrating-services/1-request-response) in *The AWS Step Functions Workshop*.

## Run a Job (.sync)


For integrated services such as AWS Batch and Amazon ECS, Step Functions can wait for a request to complete before progressing to the next state. To have Step Functions wait, specify the `"Resource"` field in your task state definition with the `.sync` suffix appended after the resource URI. 

For example, when submitting an AWS Batch job, use the `"Resource"` field in the state machine definition as shown in this example.

```
"Manage Batch task": {
    "Type": "Task",
    "Resource": "arn:aws:states:::batch:submitJob.sync",
    "Parameters": {
        "JobDefinition": "arn:aws:batch:us-east-2:123456789012:job-definition/testJobDefinition",
        "JobName": "testJob",
        "JobQueue": "arn:aws:batch:us-east-2:123456789012:job-queue/testQueue"
    },
    "Next": "NEXT_STATE"
}
```

Having the `.sync` portion appended to the resource Amazon Resource Name (ARN) means that Step Functions waits for the job to complete. After calling AWS Batch `submitJob`, the workflow pauses. When the job is complete, Step Functions progresses to the next state. For more information, see the AWS Batch sample project: [Manage a batch job with AWS Batch and Amazon SNS](batch-job-notification.md). 

If a task using this (`.sync`) service integration pattern is aborted, and Step Functions is unable to cancel the task, you might incur additional charges from the integrated service. A task can be aborted if:
+ The state machine execution is stopped.
+ A different branch of a Parallel state fails with an uncaught error.
+ An iteration of a Map state fails with an uncaught error.

Step Functions will make a best-effort attempt to cancel the task. For example, if a Step Functions `states:startExecution.sync` task is aborted, it will call the Step Functions `StopExecution` API action. However, it is possible that Step Functions will be unable to cancel the task. Reasons for this include, but are not limited to: 
+ Your IAM execution role lacks permission to make the corresponding API call.
+ A temporary service outage occurred.

When you use the `.sync` service integration pattern, Step Functions uses polling that consumes your assigned quota and events to monitor a job's status. For `.sync` invocations within the same account, Step Functions uses EventBridge events and polls the APIs that you specify in the `Task` state. For [cross-account](concepts-access-cross-acct-resources.md) `.sync` invocations, Step Functions only uses polling. For example, for `states:StartExecution.sync`, Step Functions performs polling on the [DescribeExecution](https://docs.aws.amazon.com/step-functions/latest/apireference/API_DescribeExecution.html) API and uses your assigned quota.

**Tip**  
To deploy an example workflow that uses the .sync integration pattern, see [Run a Job (.sync)](https://catalog.workshops.aws/stepfunctions/integrating-services/2-sync-job) in *The AWS Step Functions Workshop*.

To see a list of what integrated services support waiting for a job to complete (`.sync`), see [Integrating services with Step Functions](integrate-optimized.md).

**Note**  
Service integrations that use the `.sync` or `.waitForTaskToken` patterns require additional IAM permissions. For more information, see [How Step Functions generates IAM policies for integrated services](service-integration-iam-templates.md).

In some cases, you may want Step Functions to continue your workflow before the job is fully complete. You can achieve this in the same way as when using the [Wait for a Callback with Task Token](#connect-wait-token) service integration pattern. To do this, pass a task token to your job, then return it using a [https://docs.aws.amazon.com/step-functions/latest/apireference/API_SendTaskSuccess.html](https://docs.aws.amazon.com/step-functions/latest/apireference/API_SendTaskSuccess.html) or [https://docs.aws.amazon.com/step-functions/latest/apireference/API_SendTaskFailure.html](https://docs.aws.amazon.com/step-functions/latest/apireference/API_SendTaskFailure.html) API call. Step Functions will use the data you provide in that call to complete the task, stop monitoring the job, and continue the workflow.

## Wait for a Callback with Task Token
Wait for Callback

Callback tasks provide a way to pause a workflow until a task token is returned. A task might need to wait for a human approval, integrate with a third party, or call legacy systems. For tasks like these, you can pause Step Functions until the workflow execution reaches the one year service quota (see, [Quotas related to state throttling](service-quotas.md#service-limits-api-state-throttling)), and wait for an external process or workflow to complete. For these situations Step Functions allows you to pass a task token to the AWS SDK service integrations, and also to some Optimized service integrations. The task will pause until it receives that task token back with a [https://docs.aws.amazon.com/step-functions/latest/apireference/API_SendTaskSuccess.html](https://docs.aws.amazon.com/step-functions/latest/apireference/API_SendTaskSuccess.html) or [https://docs.aws.amazon.com/step-functions/latest/apireference/API_SendTaskFailure.html](https://docs.aws.amazon.com/step-functions/latest/apireference/API_SendTaskFailure.html) call.

If a `Task` state using the callback task token times out, a new random token is generated. You can access the task tokens from the [Context object](input-output-contextobject.md#contextobject-access).

To use `.waitForTaskToken` with an AWS SDK integration, the API you use must have a parameter field in which to place the task token.

**Note**  
You must pass task tokens from principals within the same AWS account. The tokens won't work if you send them from principals in a different AWS account.

**Tip**  
To deploy an example workflow that uses a callback task token integration pattern, see [Callback with Task Token](https://catalog.workshops.aws/stepfunctions/integrating-services/3-callback-token) in *The AWS Step Functions Workshop*.

To see a list of what integrated services support waiting for a task token (`.waitForTaskToken`), see [Integrating services with Step Functions](integrate-optimized.md).

**Topics**
+ [

### Task Token Example
](#connect-wait-example)
+ [

### Get a Token from the Context object
](#wait-token-contextobject)
+ [

### Configure a Heartbeat Timeout for a Waiting Task
](#wait-token-hearbeat)

### Task Token Example


In this example, a Step Functions workflow needs to integrate with an external microservice to perform a credit check as a part of an approval workflow. Step Functions publishes an Amazon SQS message that includes a task token as a part of the message. An external system integrates with Amazon SQS, and pulls the message off the queue. When that's finished, it returns the result and the original task token. Step Functions then continues with its workflow.

![\[SQS task waiting for a task token to be returned\]](http://docs.aws.amazon.com/step-functions/latest/dg/images/wait-for-task-token.png)


The `"Resource"` field of the task definition that references Amazon SQS includes `.waitForTaskToken` appended to the end.

```
"Send message to SQS": {
    "Type": "Task",
    "Resource": "arn:aws:states:::sqs:sendMessage.waitForTaskToken",
    "Parameters": {
        "QueueUrl": "https://sqs.us-east-2.amazonaws.com/123456789012/myQueue",
        "MessageBody": {
            "Message": "Hello from Step Functions!",
            "TaskToken.$": "$$.Task.Token"
        }
    },
    "Next": "NEXT_STATE"
}
```

This tells Step Functions to pause and wait for the task token. When you specify a resource using `.waitForTaskToken`, the task token can be accessed in the `"Parameters"` field of your state definition with a special path designation (`$$.Task.Token`). The initial `$$.` designates that the path accesses the [Context object](#wait-token-contextobject), and gets the task token for the current task in a running execution.

When it's complete, the external service calls [https://docs.aws.amazon.com/step-functions/latest/apireference/API_SendTaskSuccess.html](https://docs.aws.amazon.com/step-functions/latest/apireference/API_SendTaskSuccess.html) or [https://docs.aws.amazon.com/step-functions/latest/apireference/API_SendTaskFailure.html](https://docs.aws.amazon.com/step-functions/latest/apireference/API_SendTaskFailure.html) with the `taskToken` included. Only then does the workflow continue to the next state. 

**Note**  
To avoid waiting indefinitely if a process fails to send the task token with `SendTaskSuccess` or `SendTaskFailure`, see [Configure a Heartbeat Timeout for a Waiting Task](#wait-token-hearbeat).

### Get a Token from the Context object


The Context object is an internal JSON object that contains information about your execution. Like state input, it can be accessed with a path from the `"Parameters"` field during an execution. When accessed from within a task definition, it includes information about the specific execution, including the task token.

```
{
    "Execution": {
        "Id": "arn:aws:states:region:account-id:execution:stateMachineName:executionName",
        "Input": {
            "key": "value"
        },
        "Name": "executionName",
        "RoleArn": "arn:aws:iam::account-id:role...",
        "StartTime": "2019-03-26T20:14:13.192Z"
    },
    "State": {
        "EnteredTime": "2019-03-26T20:14:13.192Z",
        "Name": "Test",
        "RetryCount": 3
    },
    "StateMachine": {
        "Id": "arn:aws:states:region:account-id:stateMachine:stateMachineName",
        "Name": "name"
    },
    "Task": {
        "Token": "h7XRiCdLtd/83p1E0dMccoxlzFhglsdkzpK9mBVKZsp7d9yrT1W"
    }
}
```

You can access the task token by using a special path from inside the `"Parameters"` field of your task definition. To access the input or the Context object, you first specify that the parameter will be a path by appending a `.$` to the parameter name. The following specifies nodes from both the input and the Context object in a `"Parameters"` specification.

```
"Parameters": {
    "Input.$": "$",
    "TaskToken.$": "$$.Task.Token"
},
```

In both cases, appending `.$` to the parameter name tells Step Functions to expect a path. In the first case, `"$"` is a path that includes the entire input. In the second case, `$$.` specifies that the path will access the Context object, and `$$.Task.Token` sets the parameter to the value of the task token in the Context object of a running execution.

In the Amazon SQS example, `.waitForTaskToken` in the `"Resource"` field tells Step Functions to wait for the task token to be returned. The `"TaskToken.$": "$$.Task.Token"` parameter passes that token as a part of the Amazon SQS message.

```
"Send message to SQS": {
    "Type": "Task",
    "Resource": "arn:aws:states:::sqs:sendMessage.waitForTaskToken",
    "Parameters": {
        "QueueUrl": "https://sqs.us-east-2.amazonaws.com/123456789012/myQueue",
        "MessageBody": {
            "Message": "Hello from Step Functions!",
            "TaskToken.$": "$$.Task.Token"
        }
    },
    "Next": "NEXT_STATE"
}
```

For more information about the Context object, see [Accessing execution data from the Context object in Step Functions](input-output-contextobject.md) in the [Processing input and output](concepts-input-output-filtering.md) section in this guide. 

### Configure a Heartbeat Timeout for a Waiting Task


A task that is waiting for a task token will wait until the execution reaches the one year service quota (see, [Quotas related to state throttling](service-quotas.md#service-limits-api-state-throttling)). To avoid stuck executions you can configure a heartbeat timeout interval in your state machine definition. Use the [`HeartbeatSeconds`](state-task.md) field to specify the timeout interval.

```
{
    "StartAt": "Push to SQS",
        "States": {
        "Push to SQS": {
            "Type": "Task",
                "Resource": "arn:aws:states:::sqs:sendMessage.waitForTaskToken",
                    "HeartbeatSeconds": 600,
            "Parameters": {
                "MessageBody": { "myTaskToken.$": "$$.Task.Token" },
                "QueueUrl": "https://sqs.us-east-1.amazonaws.com/123456789012/push-based-queue"
            },
            "ResultPath": "$.SQS",
                "End": true
        }
    }
}
```

In this state machine definition, a task pushes a message to Amazon SQS and waits for an external process to call back with the provided task token. The `"HeartbeatSeconds": 600` field sets the heartbeat timeout interval to 10 minutes. The task will wait for the task token to be returned with one of these API actions:
+ [https://docs.aws.amazon.com/step-functions/latest/apireference/API_SendTaskSuccess.html](https://docs.aws.amazon.com/step-functions/latest/apireference/API_SendTaskSuccess.html) 
+ [https://docs.aws.amazon.com/step-functions/latest/apireference/API_SendTaskFailure.html](https://docs.aws.amazon.com/step-functions/latest/apireference/API_SendTaskFailure.html)
+ [https://docs.aws.amazon.com/step-functions/latest/apireference/API_SendTaskHeartbeat.html](https://docs.aws.amazon.com/step-functions/latest/apireference/API_SendTaskHeartbeat.html)

If the waiting task doesn't receive a valid task token within that 10-minute period, the task fails with a `States.Timeout` error name.

For more information, see the callback task sample project [Create a callback pattern example with Amazon SQS, Amazon SNS, and Lambda](callback-task-sample-sqs.md).

# Call HTTPS APIs in Step Functions workflows
Call HTTPS APIs

An HTTP Task is a type of [Task workflow state](state-task.md) state that you can use to call HTTPS APIs in your workflows. The API can be public, such as third-party SaaS applications like Stripe or Salesforce. You can also call private API, such as HTTPS-based applications in an Amazon Virtual Private Cloud.

For authorization and network connectivity, an HTTP Task requires an EventBridge connection. 

To call an HTTPS API, use the [Task](state-task.md) state with the `arn:aws:states:::http:invoke` resource. Then, provide the API endpoint configuration details, such as the API URL, method you want to use, and [connection](#http-task-authentication) details.

If you use [Workflow Studio](workflow-studio.md) to build your state machine that contains an HTTP Task, Workflow Studio automatically generates an execution role with IAM policies for the HTTP Task. For more information, see [Role for testing HTTP Tasks in Workflow Studio](manage-state-machine-permissions.md#test-state-role-http).

**Note**  
HTTP Task currently only supports public domain names with publicly trusted certificates for HTTPS endpoints when using private APIs. HTTP Task does not support mutual TLS (mTLS).

**Topics**
+ [

## Connectivity for an HTTP Task
](#http-task-authentication)
+ [

## HTTP Task definition
](#connect-http-task-definition)
+ [

## HTTP Task fields
](#connect-http-task-fields)
+ [

## Merging EventBridge connection and HTTP Task definition data
](#http-task-data-merge)
+ [

## Applying URL-encoding on request body
](#url-encode-request-body)
+ [

## IAM permissions to run an HTTP Task
](#connect-http-task-permissions)
+ [

## HTTP Task example
](#connect-http-task-example)
+ [

## Testing an HTTP Task
](#http-task-test)
+ [

## Unsupported HTTP Task responses
](#unsupported-http-task-responses)
+ [Connection errors](#connect-http-task-errors)

## Connectivity for an HTTP Task


An HTTP Task requires an [EventBridge connection](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-target-connection.html), which securely manages the authentication credentials of an API provider. A *connection* defines the authorization method and credentials to use in connecting to a given API. If you are connecting to a private API, such as a private API in an Amazon Virtual Private Cloud (Amazon VPC), you can also use the connection to define secure point-to-point network connectivity. Using a connection helps you avoid hard-coding secrets, such as API keys, into your state machine definition. An EventBridge connection supports the Basic, OAuth, and API Key authorization schemes.

When you create an EventBridge connection, you provide your authorization and network connectivity details. You can also include the header, body, and query parameters that are required for authorization with an API. You must include the connection ARN in any HTTP Task that calls an HTTPS API.

When you create a connection, EventBridge creates a [https://docs.aws.amazon.com/secretsmanager/latest/userguide/managing-secrets.html](https://docs.aws.amazon.com/secretsmanager/latest/userguide/managing-secrets.html) in AWS Secrets Manager. In this secret, EventBridge stores the connection and authorization parameters in an encrypted form. To successfully create or update a connection, you must use an AWS account that has permission to use Secrets Manager. For more information about the IAM permissions your state machine needs to access an EventBridge connection, see [IAM permissions to run an HTTP Task](#connect-http-task-permissions).

The following image shows how Step Functions handles authorization for HTTPS API calls using an EventBridge connection. The EventBridge connection manages credentials of an HTTPS API provider. EventBridge creates a [https://docs.aws.amazon.com/secretsmanager/latest/userguide/managing-secrets.html](https://docs.aws.amazon.com/secretsmanager/latest/userguide/managing-secrets.html) in Secrets Manager to store the connection and authorization parameters in an encrypted form. In the case of private APIs, EventBridge also stores network connectivity configurations.

**Timeouts for connections**  
HTTP task requests will timeout after 60 seconds.

![\[Step Functions uses authorization and network configuration in EventBridge connections for calls to HTTPS endpoints.\]](http://docs.aws.amazon.com/step-functions/latest/dg/images/connections-overview_step-functions_conceptual.png)


## HTTP Task definition


The [ASL definition](concepts-amazon-states-language.md) represents an HTTP Task with `http:invoke` resource. The following HTTP Task definition invokes a public Stripe API that returns a list of all customers.

```
"Call HTTPS API": {
  "Type": "Task",
  "Resource": "arn:aws:states:::http:invoke",
  "Parameters": {
    "ApiEndpoint": "https://api.stripe.com/v1/customers",
    "Authentication": {
      "ConnectionArn": "arn:aws:events:region:account-id:connection/Stripe/81210c42-8af1-456b-9c4a-6ff02fc664ac"
    },
    "Method": "GET"
  },
  "End": true
}
```

## HTTP Task fields


An HTTP Task includes the following fields in its definition.

**`Resource` (Required)**  
To specify a [task type](state-task.md#task-types), provide its ARN in the `Resource` field. For an HTTP Task, you specify the `Resource` field as follows.  

```
"Resource": "arn:aws:states:::http:invoke"
```

**`Parameters` (Required)**  
Contains the `ApiEndpoint`, `Method`, and `ConnectionArn` fields that provide information about the HTTPS API you want to call. `Parameters` also contains optional fields, such as `Headers` and `QueryParameters`.  
You can specify a combination of static JSON and [JsonPath](https://datatracker.ietf.org/wg/jsonpath/about/) syntax as `Parameters` in the `Parameters` field. For more information, see [Passing parameters to a service API in Step Functions](connect-parameters.md).  
To specify the EventBridge connection, use either the `Authentication` *or* `InvocationConfig` field.    
`ApiEndpoint` **(Required)**  
Specifies the URL of the HTTPS API you want to call. To append query parameters to the URL, use the `QueryParameters` field. The following example shows how you can call a Stripe API to fetch the list of all customers.  

```
"ApiEndpoint":"https://api.stripe.com/v1/customers"
```
You can also specify a [reference path](amazon-states-language-paths.md#amazon-states-language-reference-paths) using the [JsonPath](https://datatracker.ietf.org/wg/jsonpath/about/) syntax to select the JSON node that contains the HTTPS API URL. For example, say you want to call one of Stripe’s APIs using a specific customer ID. Imagine that you've provided the following state input.  

```
{
    "customer_id": "1234567890",
    "name": "John Doe"
}
```
To retrieve the details of this customer ID using a Stripe API, specify the `ApiEndpoint` as shown in the following example. This example uses an [intrinsic function](intrinsic-functions.md) and a reference path.  

```
"ApiEndpoint.$":"States.Format('https://api.stripe.com/v1/customers/{}', $.customer_id)"
```
At runtime, Step Functions resolves the value of `ApiEndpoint` as follows.  

```
https://api.stripe.com/v1/customers/1234567890
```  
`Method` **(Required)**  
Specifies the HTTP method you want to use for calling an HTTPS API. You can specify one of these methods in your HTTP Task: GET, POST, PUT, DELETE, PATCH, OPTIONS, or HEAD.  
For example, to use the GET method, specify the `Method` field as follows.  

```
"Method": "GET"
```
You can also use a [reference path](amazon-states-language-paths.md#amazon-states-language-reference-paths) to specify the method at runtime. For example, **"Method.\$1": "\$1.myHTTPMethod"**.  
`Authentication` **(Conditional)**  
*We recommend using `InvocationConfig` over `Authentication` for both public and private HTTPS API calls.*  
Existing `Authentication` references are maintained for backwards compatibility. Within the field, you must specify a `ConnectionArn` field that specifies a connection resource of Amazon EventBridge to connect to the `ApiEndpoint`.  
`InvocationConfig` **(Conditional)**  
Contains the authorization and network connectivity configuration for **both** public and private HTTPS API calls.  
Step Functions handles the connection for a specified `ApiEndpoint` using the connection resource of Amazon EventBridge. For more information, see [Connecting to private APIs](https://docs.aws.amazon.com/eventbridge/latest/userguide/connection-private.html) in the *Amazon EventBridge User Guide*.    
`ConnectionArn` **(Required)**  
Specifies the EventBridge connection ARN.  
An HTTP Task requires an [EventBridge connection](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-target-connection.html), which securely manages the authorization credentials of an API provider. A *connection* specifies the authorization type and credentials to use for authorizing an HTTPS API. For private APIs, the connection also defines secure point-to-point network connectivity. Using a connection helps you avoid hard-coding secrets, such as API keys, into your state machine definition. In a connection, you can also specify `Headers`, `QueryParameters`, and `RequestBody` parameters.  
For more information, see [Connectivity for an HTTP Task](#http-task-authentication).
The following example shows the format of `InvocationConfig` in an HTTP Task:  

```
"InvocationConfig": {
  "ConnectionArn": "arn:aws:events:region:account-id:connection/connection-id"
}
```  
`Headers` (Optional)  
Provides additional context and metadata to the API endpoint. You can specify headers as a string or JSON array.  
You can specify headers in the EventBridge connection and the `Headers` field in an HTTP Task. We recommend that you do not include authentication details to your API providers in the `Headers` field. We recommend that you include these details into your EventBridge connection.  
Step Functions adds the headers that you specify in the EventBridge connection to the headers that you specify in the HTTP Task definition. If the same header keys are present in the definition and connection, Step Functions uses the corresponding values specified in the EventBridge connection for those headers. For more information about how Step Functions performs data merging, see [Merging EventBridge connection and HTTP Task definition data](#http-task-data-merge).  
The following example specifies a header that will be included in an HTTPS API call: `content-type`.  

```
"Headers": {
  "content-type": "application/json"
}
```
You can also use a [reference path](amazon-states-language-paths.md#amazon-states-language-reference-paths) to specify the headers at runtime. For example, **"Headers.\$1": "\$1.myHTTPHeaders"**.  
Step Functions sets the `User-Agent`, `Range`, and `Host` headers. Step Functions sets the value of the `Host` header based on the API you're calling. The following is an example of these headers.  

```
User-Agent: Amazon|StepFunctions|HttpInvoke|region,
Range: bytes=0-262144,
Host: api.stripe.com
```
You can't use the following headers in your HTTP Task definition. If you use these headers, the HTTP Task fails with the `States.Runtime` error.  
+ A-IM
+ Accept-Charset
+ Accept-Datetime
+ Accept-Encoding
+ Authorization
+ Cache-Control
+ Connection
+ Content-Encoding
+ Content-MD5
+ Date
+ Expect
+ Forwarded
+ From
+ Host
+ HTTP2-Settings
+ If-Match
+ If-Modified-Since
+ If-None-Match
+ If-Range
+ If-Unmodified-Since
+ Max-Forwards
+ Origin
+ Pragma
+ Proxy-Authorization
+ Referer
+ Server
+ TE
+ Trailer
+ Transfer-Encoding
+ Upgrade
+ Via
+ Warning
+ x-forwarded-\$1
+ x-amz-\$1
+ x-amzn-\$1  
`QueryParameters` (Optional)  
Inserts key-value pairs at the end of an API URL. You can specify query parameters as a string, JSON array, or a JSON object. Step Functions automatically URL-encodes query parameters when it calls an HTTPS API.  
For example, say that you want to call the Stripe API to search for customers that do their transactions in US dollars (USD). Imagine that you've provided the following `QueryParameters` as state input.  

```
"QueryParameters": {
  "currency": "usd"
}
```
At runtime, Step Functions appends the `QueryParameters` to the API URL as follows.  

```
https://api.stripe.com/v1/customers/search?currency=usd
```
You can also use a [reference path](amazon-states-language-paths.md#amazon-states-language-reference-paths) to specify the query parameters at runtime. For example, **"QueryParameters.\$1": "\$1.myQueryParameters"**.  
If you’ve specified query parameters in your EventBridge connection, Step Functions adds these query parameters to the query parameters that you specify in the HTTP Task definition. If the same query parameters keys are present in the definition and connection, Step Functions uses the corresponding values specified in the EventBridge connection for those headers. For more information about how Step Functions performs data merging, see [Merging EventBridge connection and HTTP Task definition data](#http-task-data-merge).  
`Transform` (Optional)  
Contains the `RequestBodyEncoding` and `RequestEncodingOptions` fields. By default, Step Functions sends the request body as JSON data to an API endpoint.  
If your API provider accepts `form-urlencoded` request bodies, use the `Transform` field to specify URL-encoding for the request bodies. You must also specify the `content-type` header as `application/x-www-form-urlencoded`. Step Functions then automatically URL-encodes your request body.    
`RequestBodyEncoding`  
Specifies URL-encoding of your request body. You can specify one these values: `NONE` or `URL_ENCODED`.  
+ `NONE` – The HTTP request body will be the serialized JSON of the `RequestBody` field. This is the default value.
+ `URL_ENCODED` – The HTTP request body will be the URL-encoded form data of the `RequestBody` field.  
`RequestEncodingOptions`  
Determines the encoding option to use for arrays in your request body if you set `RequestBodyEncoding` to `URL_ENCODED`.  
Step Functions supports the following array encoding options. For more information about these options and their examples, see [Applying URL-encoding on request body](#url-encode-request-body).  
+ `INDICES` – Encodes arrays using the index value of array elements. By default, Step Functions uses this encoding option.
+ `REPEAT` – Repeats a key for each item in an array.
+ `COMMAS` – Encodes all the values in a key as a comma-delimited list of values.
+ `BRACKETS` – Repeats a key for each item in an array and appends a bracket, [], to the key to indicate that it is an array.
The following example sets URL-encoding for the request body data. It also specifies to use the `COMMAS` encoding option for arrays in the request body.  

```
"Transform": {
  "RequestBodyEncoding": "URL_ENCODED",
  "RequestEncodingOptions": {
    "ArrayFormat": "COMMAS"
  }
}
```  
`RequestBody` (Optional)  
Accepts JSON data that you provide in the state input. In `RequestBody`, you can specify a combination of static JSON and [JsonPath](https://datatracker.ietf.org/wg/jsonpath/about/) syntax. For example, say that you provide the following state input:  

```
{
    "CardNumber": "1234567890",
    "ExpiryDate": "09/25"
}
```
To use these values of `CardNumber` and `ExpiryDate` in your request body at runtime, you can specify the following JSON data in your request body.  

```
"RequestBody": {
  "Card": {
    "Number.$": "$.CardNumber",
    "Expiry.$": "$.ExpiryDate",
    "Name": "John Doe",
    "Address": "123 Any Street, Any Town, USA"
  }
}
```
If the HTTPS API you want to call requires `form-urlencoded` request bodies, you must specify URL-encoding for your request body data. For more information, see [Applying URL-encoding on request body](#url-encode-request-body).

## Merging EventBridge connection and HTTP Task definition data


When you invoke an HTTP Task, you can specify data in your EventBridge connection and your HTTP Task definition. This data includes `Headers`, `QueryParameters`, and `RequestBody` parameters. Before calling an HTTPS API, Step Functions merges the request body with the connection body parameters in all cases except if your request body is a string and the connection body parameters is non-empty. In this case, the HTTP Task fails with the `States.Runtime` error.

If there are any duplicate keys specified in the HTTP Task definition and the EventBridge connection, Step Functions overwrites the values in the HTTP Task with the values in the connection.

The following list describes how Step Functions merges data before calling an HTTPS API:
+ **Headers** – Step Functions adds any headers you specified in the connection to the headers in the `Headers` field of the HTTP Task. If there is a conflict between the header keys, Step Functions uses the values specified in the connection for those headers. For example, if you specified the `content-type` header in both the HTTP Task definition and EventBridge connection, Step Functions uses the `content-type` header value specified in the connection.
+ **Query parameters** – Step Functions adds any query parameters you specified in the connection to the query parameters in the `QueryParameters` field of the HTTP Task. If there is a conflict between the query parameter keys, Step Functions uses the values specified in the connection for those query parameters. For example, if you specified the `maxItems` query parameter in both the HTTP Task definition and EventBridge connection, Step Functions uses the `maxItems` query parameter value specified in the connection.
+ **Body parameters**
  + Step Functions adds any request body values specified in the connection to the request body in the `RequestBody` field of the HTTP Task. If there is a conflict between the request body keys, Step Functions uses the values specified in the connection for the request body. For example, say that you specified a `Mode` field in the `RequestBody` of both the HTTP Task definition and EventBridge connection. Step Functions uses the `Mode` field value you specified in the connection.
  + If you specify the request body as a string instead of a JSON object, and the EventBridge connection also contains request body, Step Functions can't merge the request body specified in both these places. It fails the HTTP Task with the `States.Runtime` error.

  Step Functions applies all transformations and serializes the request body after it completes the merging of the request body.

The following example sets the `Headers`, `QueryParameters`, and `RequestBody` fields in both the HTTP Task and EventBridge connection.

**HTTP Task definition**

```
{
  "Comment": "Data merging example for HTTP Task and EventBridge connection",
  "StartAt": "ListCustomers",
  "States": {
    "ListCustomers": {
      "Type": "Task",
      "Resource": "arn:aws:states:::http:invoke",
      "Parameters": {
        "Authentication": {
          "ConnectionArn": "arn:aws:events:region:account-id:connection/Example/81210c42-8af1-456b-9c4a-6ff02fc664ac"
        },
        "ApiEndpoint": "https:/example.com/path",
        "Method": "GET",
        "Headers": {
          "Request-Id": "my_request_id",
          "Header-Param": "state_machine_header_param"
        },
        "RequestBody": {
          "Job": "Software Engineer",
          "Company": "AnyCompany",
          "BodyParam": "state_machine_body_param"
        },
        "QueryParameters": {
          "QueryParam": "state_machine_query_param"
        }
      }
    }
  }
}
```

**EventBridge connection**

```
{
  "AuthorizationType": "API_KEY",
  "AuthParameters": {
    "ApiKeyAuthParameters": {
      "ApiKeyName": "ApiKey",
      "ApiKeyValue": "key_value"
    },
    "InvocationHttpParameters": {
      "BodyParameters": [
        {
          "Key": "BodyParam",
          "Value": "connection_body_param"
        }
      ],
      "HeaderParameters": [
        {
          "Key": "Header-Param",
          "Value": "connection_header_param"
        }
      ],
      "QueryStringParameters": [
        {
          "Key": "QueryParam",
          "Value": "connection_query_param"
        }
      ]
    }
  }
}
```

In this example, duplicate keys are specified in the HTTP Task and EventBridge connection. Therefore, Step Functions overwrites the values in the HTTP Task with the values in the connection. The following code snippet shows the HTTP request that Step Functions sends to the HTTPS API.

```
POST /path?QueryParam=connection_query_param HTTP/1.1
Apikey: key_value
Content-Length: 79
Content-Type: application/json; charset=UTF-8
Header-Param: connection_header_param
Host: example.com
Range: bytes=0-262144
Request-Id: my_request_id
User-Agent: Amazon|StepFunctions|HttpInvoke|region

{"Job":"Software Engineer","Company":"AnyCompany","BodyParam":"connection_body_param"}
```

## Applying URL-encoding on request body


By default, Step Functions sends the request body as JSON data to an API endpoint. If your HTTPS API provider requires `form-urlencoded` request bodies, you must specify URL-encoding for the request bodies. Step Functions then automatically URL-encodes the request body based on the URL-encoding option you select.

You specify URL-encoding using the `Transform` field. This field contains the `RequestBodyEncoding` field that specifies whether or not you want to apply URL-encoding for your request bodies. When you specify the `RequestBodyEncoding` field, Step Functions converts your JSON request body to `form-urlencoded` request body before calling the HTTPS API. You must also specify the `content-type` header as `application/x-www-form-urlencoded` because APIs that accept URL-encoded data expect the `content-type` header.

To encode arrays in your request body, Step Functions provides the following array encoding options. 
+ `INDICES` – Repeats a key for each item in an array and appends a bracket, [], to the key to indicate that it is an array. This bracket contains the index of the array element. Adding the index helps you specify the order of the array elements. By default, Step Functions uses this encoding option.

  For example, if your request body contains the following array.

  ```
  {"array": ["a","b","c","d"]}
  ```

  Step Functions encodes this array to the following string.

  ```
  array[0]=a&array[1]=b&array[2]=c&array[3]=d
  ```
+ `REPEAT` – Repeats a key for each item in an array.

  For example, if your request body contains the following array.

  ```
  {"array": ["a","b","c","d"]}
  ```

  Step Functions encodes this array to the following string.

  ```
  array=a&array=b&array=c&array=d
  ```
+ `COMMAS` – Encodes all the values in a key as a comma-delimited list of values.

  For example, if your request body contains the following array.

  ```
  {"array": ["a","b","c","d"]}
  ```

  Step Functions encodes this array to the following string.

  ```
  array=a,b,c,d
  ```
+ `BRACKETS` – Repeats a key for each item in an array and appends a bracket, [], to the key to indicate that it is an array.

  For example, if your request body contains the following array.

  ```
  {"array": ["a","b","c","d"]}
  ```

  Step Functions encodes this array to the following string.

  ```
  array[]=a&array[]=b&array[]=c&array[]=d
  ```

## IAM permissions to run an HTTP Task


Your state machine execution role must have the following permissions for an HTTP Task to call an HTTPS API: 
+ `states:InvokeHTTPEndpoint`
+ `events:RetrieveConnectionCredentials`
+ `secretsmanager:GetSecretValue`
+ `secretsmanager:DescribeSecret`

The following IAM policy example grants the least privileges required to your state machine role for calling Stripe APIs. This IAM policy also grants permission to the state machine role to access a specific EventBridge connection, including the secret for this connection that is stored in Secrets Manager.

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Statement1",
            "Effect": "Allow",
            "Action": "states:InvokeHTTPEndpoint",
            "Resource": "arn:aws:states:us-east-2:123456789012:stateMachine:myStateMachine",
            "Condition": {
                "StringEquals": {
                    "states:HTTPMethod": "GET"
                },
                "StringLike": {
                    "states:HTTPEndpoint": "https://api.stripe.com/*"
                }
            }
        },
        {
            "Sid": "Statement2",
            "Effect": "Allow",
            "Action": [
                "events:RetrieveConnectionCredentials"
            ],
            "Resource": "arn:aws:events:us-east-2:123456789012:connection/oauth_connection/aeabd89e-d39c-4181-9486-9fe03e6f286a"
        },
        {
            "Sid": "Statement3",
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetSecretValue",
                "secretsmanager:DescribeSecret"
            ],
            "Resource": "arn:aws:secretsmanager:*:*:secret:events!connection/*"
        }
    ]
}
```

## HTTP Task example


The following state machine definition shows an HTTP Task that includes the `Headers`, `QueryParameters`, `Transform`, and `RequestBody` parameters. The HTTP Task calls a Stripe API, https://api.stripe.com/v1/invoices, to generate an invoice. The HTTP Task also specifies URL-encoding for the request body using the `INDICES` encoding option.

Make sure that you've created an EventBridge connection. The following example shows a connection created using BASIC auth type.

```
{
    "Type": "BASIC",
    "AuthParameters": { 
        "BasicAuthParameters": { 
            "Password": "myPassword",
            "Username": "myUsername"
         },
    }
}
```

Remember to replace the *italicized* text with your resource-specific information.

```
{
  "Comment": "A state machine that uses HTTP Task",
  "StartAt": "CreateInvoiceAPI",
  "States": {
    "CreateInvoiceAPI": {
      "Type": "Task",
      "Resource": "arn:aws:states:::http:invoke",
      "Parameters": {
        "ApiEndpoint": "https://api.stripe.com/v1/invoices",
        "Method": "POST",
        "Authentication": {
          "ConnectionArn": ""arn:aws:events:region:account-id:connection/Stripe/81210c42-8af1-456b-9c4a-6ff02fc664ac"
        },
        "Headers": {
          "Content-Type": "application/x-www-form-urlencoded"
        },
        "RequestBody": {
          "customer.$": "$.customer_id",
          "description": "Monthly subscription",
          "metadata": {
            "order_details": "monthly report data"
          }
        },
        "Transform": {
          "RequestBodyEncoding": "URL_ENCODED",
          "RequestEncodingOptions": {
            "ArrayFormat": "INDICES"
          }
        }
      },
      "Retry": [
        {
          "ErrorEquals": [
            "States.Http.StatusCode.429",
            "States.Http.StatusCode.503",
            "States.Http.StatusCode.504",
            "States.Http.StatusCode.502"
          ],
          "BackoffRate": 2,
          "IntervalSeconds": 1,
          "MaxAttempts": 3,
          "JitterStrategy": "FULL"
        }
      ],
      "Catch": [
        {
          "ErrorEquals": [
            "States.Http.StatusCode.404",
            "States.Http.StatusCode.400",
            "States.Http.StatusCode.401",
            "States.Http.StatusCode.409",
            "States.Http.StatusCode.500"
          ],
          "Comment": "Handle all non 200 ",
          "Next": "HandleInvoiceFailure"
        }
      ],
      "End": true
    }
  }
}
```

To run this state machine, provide the customer ID as the input as shown in the following example:

```
{
    "customer_id": "1234567890"
}
```

The following example shows the HTTP request that Step Functions sends to the Stripe API.

```
POST /v1/invoices HTTP/1.1
Authorization: Basic <base64 of username and password>
Content-Type: application/x-www-form-urlencoded
Host: api.stripe.com
Range: bytes=0-262144
Transfer-Encoding: chunked
User-Agent: Amazon|StepFunctions|HttpInvoke|region

description=Monthly%20subscription&metadata%5Border_details%5D=monthly%20report%20data&customer=1234567890
```

## Testing an HTTP Task


You can use the [TestState](https://docs.aws.amazon.com/step-functions/latest/apireference/API_TestState.html) API through the console, SDK, or the AWS CLI to [test](test-state-isolation.md) an HTTP Task. The following procedure describes how to use the TestState API in the Step Functions console. You can iteratively test the API request, response, and authentication details until your HTTP Task is working as expected.

**Test an HTTP Task state in Step Functions console**

1. Open the [Step Functions console](https://console.aws.amazon.com/states/home?region=us-east-1#/).

1. Choose **Create state machine** to start creating a state machine or choose an existing state machine that contains an HTTP Task.

   Refer Step 4 if you're testing the task in an existing state machine.

1. In the [Design mode](workflow-studio.md#wfs-interface-design-mode) of Workflow Studio, configure an HTTP Task visually. Or choose the Code mode to copy-paste the state machine definition from your local development environment.

1. In Design mode, choose **Test state** in the [Inspector panel](workflow-studio.md#workflow-studio-components-formdefinition) panel of Workflow Studio.

1. In the **Test state** dialog box, do the following:

   1. For **Execution role**, choose an execution role to test the state. If you don't have a role with [sufficient permissions](#connect-http-task-permissions) for an HTTP Task, see [Role for testing HTTP Tasks in Workflow Studio](manage-state-machine-permissions.md#test-state-role-http) to create a role.

   1. (Optional) Provide any JSON input that your selected state needs for the test.

   1. For **Inspection level**, keep the default selection of **INFO**. This level shows you the status of the API call and the state output. This is useful for quickly checking the API response.

   1. Choose **Start test**.

   1. If the test succeeds, the state output appears on the right side of the **Test state** dialog box. If the test fails, an error appears.

      In the **State details** tab of the dialog box, you can see the state definition and a link to your [EventBridge connection](#http-task-authentication).

   1. Change the **Inspection level** to **TRACE**. This level shows you the raw HTTP request and response, and is useful for verifying headers, query parameters, and other API-specific details.

   1. Choose the **Reveal secrets** checkbox. In combination with **TRACE**, this setting lets you see the sensitive data that the EventBridge connection inserts, such as API keys. The IAM user identity that you use to access the console must have permission to perform the `states:RevealSecrets` action. Without this permission, Step Functions throws an access denied error when you start the test. For an example of an IAM policy that sets the `states:RevealSecrets` permission, see [IAM permissions for using TestState API](test-state-isolation.md#test-state-permissions).

      The following image shows a test for an HTTP Task that succeeds. The **Inspection level** for this state is set to **TRACE**. The **HTTP request & response** tab in the following image shows the result of the HTTPS API call.  
![\[Output of a selected state which succeeds the test for the TRACE level.\]](http://docs.aws.amazon.com/step-functions/latest/dg/images/test-state-trace-success.png)

   1. Choose **Start test**.

   1. If the test succeeds, you can see your HTTP details under the **HTTP request & response** tab.

## Unsupported HTTP Task responses


An HTTP Task fails with the `States.Runtime` error if one of the following conditions is true for the response returned:
+ The response contains a content-type header of `application/octet-stream`, `image/*`, `video/*`, or `audio/*`.
+ The response can't be read as a valid string. For example, binary or image data.

## Connection errors
Connection errors

If EventBridge encounters an issue when connecting to the specified API during workflow execution, Step Functions raises the error in your workflow. Connection errors are prefixed with `Events.ConnectionResource.`.

These errors include:
+ `Events.ConnectionResource.InvalidConnectionState`
+ `Events.ConnectionResource.InvalidPrivateConnectionState`
+ `Events.ConnectionResource.AccessDenied`
+ `Events.ConnectionResource.ResourceNotFound`
+ `Events.ConnectionResource.AuthInProgress`
+ `Events.ConnectionResource.ConcurrentModification`
+ `Events.ConnectionResource.InternalError`

# Passing parameters to a service API in Step Functions
Pass parameters

**Managing state and transforming data**  
Learn about [Passing data between states with variables](workflow-variables.md) and [Transforming data with JSONata](transforming-data.md).

Use the `Parameters` field in a `Task` state to control what parameters are passed to a service API.

Inside the `Parameters` field, you must use the plural form of the array parameters in an API action. For example, if you use the [Filter](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeSnapshots.html#API_DescribeSnapshots_RequestParameters) field of the `DescribeSnapshots` API action for integrating with Amazon EC2, you must define the field as `Filters`. If you don't use the plural form, Step Functions returns the following error:

```
The field Filter is not supported by Step Functions.
```

## Pass static JSON as parameters


You can include a JSON object directly in your state machine definition to pass as a parameter to a resource.

For example, to set the `RetryStrategy` parameter for the `SubmitJob` API for AWS Batch, you could include the following in your parameters.

```
"RetryStrategy": {
  "attempts": 5
}
```

You can also pass multiple parameters with static JSON. As a more complete example, the following are the `Resource` and `Parameters` fields of the specification of a task that publishes to an Amazon SNS topic named `myTopic`.

```
"Resource": "arn:aws:states:::sns:publish",
  "Parameters": {
     "TopicArn": "arn:aws:sns:us-east-2:account-id:myTopic",
     "Message": "test message",
     "MessageAttributes": {
       "my attribute no 1": {
         "DataType": "String",
         "StringValue": "value of my attribute no 1"
       },
       "my attribute no 2": {
         "DataType": "String",
         "StringValue": "value of my attribute no 2"
       }
     }
  },
```

## Pass state input as parameters using Paths


You can pass portions of the state input as parameters by using [paths](amazon-states-language-paths.md). A path is a string, beginning with `$`, that's used to identify components within JSON text. Step Functions paths use [JsonPath](https://datatracker.ietf.org/wg/jsonpath/about/) syntax.

To specify that a parameter use a path, end the parameter name with `.$`. For example, if your state input contains text within a node named `message`, you could pass that text as a parameter using a path.

Consider the following state input:

```
{
  "comment": "A message in the state input",
  "input": {
    "message": "foo",
    "otherInfo": "bar"
  },
  "data": "example"
}
```

To pass the value of the node named `message` as a parameter named `myMessage`, specify the following syntax:

```
"Parameters": {"myMessage.$": "$.input.message"},
```

Step Functions then passes the value `foo` as a parameter.

For more information about using parameters in Step Functions, see the following:
+ [Processing input and output](concepts-input-output-filtering.md)
+ [Manipulate parameters in Step Functions workflows](input-output-inputpath-params.md)

## Pass Context object nodes as parameters


In addition to static content, and nodes from the state input, you can pass nodes from the Context object as parameters. The Context object is dynamic JSON data that exists during a state machine execution. It includes information about your state machine and the current execution. You can access the Context object using a path in the `Parameters` field of a state definition.



For more information about the Context object and how to access that data from a `"Parameters"` field, see the following:
+ [Accessing execution data from the Context object in Step Functions](input-output-contextobject.md)
+ [Accessing the Context object](input-output-contextobject.md#contextobject-access)
+ [Get a Token from the Context object](connect-to-resource.md#wait-token-contextobject)