View a markdown version of this page

使用 Step Functions 傳送訊息至 Amazon SQS 佇列 - AWS Step Functions

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Step Functions 傳送訊息至 Amazon SQS 佇列

您可以使用下列 Amazon SQS API 動作和 Step Functions 工作流程的範例Task狀態碼,將訊息傳送至 Amazon SQS 佇列。

若要了解如何在 Step Functions 中整合 AWS 服務,請參閱 整合 服務和 在 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 APIs

中的參數Step Functions以 PascalCase 表示

即使原生服務 API 位於 camelCase 中,例如 API 動作 startSyncExecution,您也可以在 PascalCase 中指定參數,例如:StateMachineArn。

輸入或結果資料的配額

在服務之間傳送或接收資料時,任務的最大輸入或結果為 256 KiB 的資料,做為 UTF-8 編碼字串。請參閱 狀態機器執行的相關配額。

呼叫 Amazon SQS 的 IAM 政策

下列範例範本顯示 如何根據狀態機器定義中的資源 AWS 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": "*" } ] }