

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

# 使用 Step Functions 傳送訊息至 Amazon SQS 佇列
<a name="connect-sqs"></a>

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

若要了解如何在 Step Functions 中整合 AWS 服務，請參閱 [整合 服務](integrate-services.md)和 [在 Step Functions 中將參數傳遞至服務 API](connect-parameters.md)。

若要進一步了解如何在 Amazon SQS 中接收訊息，請參閱《*Amazon Simple Queue Service 開發人員指南*》中的[接收和刪除您的訊息](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/step-receive-delete-message.html)。

下列範例包含 `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`的狀態。請參閱 [使用任務字符等待回呼](connect-to-resource.md#connect-wait-token)。

```
{  
   "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
<a name="connect-sqs-api"></a>
+ [https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/APIReference/API_SendMessage.html)

**中的參數Step Functions以 PascalCase 表示**  
即使原生服務 API 位於 camelCase 中，例如 API 動作 `startSyncExecution`，您也可以在 PascalCase 中指定參數，例如：`StateMachineArn`。

**輸入或結果資料的配額**  
在服務之間傳送或接收資料時，任務的最大輸入或結果為 256 KiB 的資料，做為 UTF-8 編碼字串。請參閱 [狀態機器執行的相關配額](service-quotas.md#service-limits-state-machine-executions)。

## 呼叫 Amazon SQS 的 IAM 政策
<a name="sqs-iam"></a>

下列範例範本顯示 如何根據狀態機器定義中的資源 AWS Step Functions 產生 IAM 政策。如需詳細資訊，請參閱[Step Functions 如何為整合服務產生 IAM 政策](service-integration-iam-templates.md)及[探索 Step Functions 中的服務整合模式](connect-to-resource.md)。

*靜態資源*

****  

```
{
    "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": "*"
        }
    ]
}
```