使用 Step Functions 向 Amazon SQS 队列发送消息 - Amazon Step Functions
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 Step Functions 向 Amazon SQS 队列发送消息

您可以使用以下 Amazon SQS API 操作和 Step Functions 工作流的 Task 状态代码示例,向 Amazon SQS 队列发送消息。

要了解如何在 Step Functions 中与 Amazon 服务集成,请参阅集成 服务在 Step Functions 中将参数传递给服务 API

要了解有关在 Amazon SQS 中接收消息的更多信息,请参阅《Amazon Simple Queue Service 开发商指南》中的接收和删除消息

以下示例包括一个 Task 状态(JSONata),该状态发送一条带有可选 MessageAttributes 的 Amazon Simple Queue Service(Amazon SQS)消息:

{ "StartAt": "Send to SQS", "States": { "Send to SQS": { "Type": "Task", "Resource": "arn:aws:states:::sqs:sendMessage", "Arguments": { "QueueUrl": "https://sqs.us-east-1.amazonaws.com/account-id/myQueue", "MessageBody": "{% $states.input.message %}", "MessageAttributes": { "my_attribute_no_1": { "DataType": "String", "StringValue": "attribute1" }, "my_attribute_no_2": { "DataType": "String", "StringValue": "attribute2" } } }, "End": true } } }

以下状态机包含一个发布到 Amazon SQS 队列,然后等待返回任务令牌的 Task 状态。请参阅等待具有任务令牌的回调

{ "StartAt":"Send message to SQS", "States":{ "Send message to SQS":{ "Type":"Task", "Resource":"arn:aws:states:::sqs:sendMessage.waitForTaskToken", "Arguments":{ "QueueUrl":"https://sqs.us-east-1.amazonaws.com/account-id/myQueue", "MessageBody":{ "Input" : "{% $states.input.message %}", "MyTaskToken" : "{% $states.context.Task.Token %}" } }, "End":true } } }

经优化的 Amazon SQS API

Step Functions 中的参数以 PascalCase 表示

即使原生服务 API 采用 camelCase(例如 API 操作 startSyncExecution),也可以采用 PascalCase 指定参数,例如:StateMachineArn

输入或结果数据的配额

在服务之间发送或接收数据时,任务的最大输入或结果为 256 KiB,且需以 UTF-8 编码字符串形式呈现。请参阅与状态机执行相关的配额

用于调用 Amazon SQS 的 IAM 策略

以下示例模板展示了 Amazon Step Functions 如何根据状态机定义中的资源生成 IAM 策略。有关更多信息,请参阅Step Functions 如何为集成服务生成 IAM 策略探索 Step Functions 中的服务集成模式

静态资源

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sqs:SendMessage" ], "Resource": [ "arn:aws:sqs:us-east-1:123456789012:myQueueName" ] } ] }

动态资源

{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sqs:SendMessage" ], "Resource": "*" } ] }