使用 Step Functions 將訊息發佈至 Amazon SNS 主題 - AWS Step Functions

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

使用 Step Functions 將訊息發佈至 Amazon SNS 主題

了解如何使用 Step Functions 將訊息發佈至 Amazon SNS 主題。此頁面列出支援的 Amazon SNS API 動作,並提供範例Task狀態以將訊息發佈至 Amazon SNS。

若要了解如何在 Step Functions 中整合 AWS 服務,請參閱 整合 服務在 Step Functions 中將參數傳遞至服務 API

Optimized Amazon SNS 整合的主要功能

請求回應使用任務權杖等待回呼整合模式沒有最佳化。

下列包含發佈至 Amazon Simple Notification Service (Amazon SNS) 主題Task的狀態。

{ "StartAt": "Publish to SNS", "States": { "Publish to SNS": { "Type": "Task", "Resource": "arn:aws:states:::sns:publish", "Parameters": { "TopicArn": "arn:aws:sns:us-east-1:123456789012:myTopic", "Message.$": "$.input.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" } } }, "End": true } } }

傳遞動態值。您可以修改上述範例,從此 JSON 承載動態傳遞屬性:

{ "input": { "message": "Hello world" }, "SNSDetails": { "attribute1": "some value", "attribute2": "some other value", } }

將 附加.$StringValue 欄位:

"MessageAttributes": { "my_attribute_no_1": { "DataType": "String", "StringValue.$": "$.SNSDetails.attribute1" }, "my_attribute_no_2": { "DataType": "String", "StringValue.$": "$.SNSDetails.attribute2" }

下列包含發佈至 Amazon SNS 主題,然後等待任務權杖傳回Task的狀態。請參閱 使用任務權杖等待回呼

{ "StartAt":"Send message to SNS", "States":{ "Send message to SNS":{ "Type":"Task", "Resource":"arn:aws:states:::sns:publish.waitForTaskToken", "Parameters":{ "TopicArn":"arn:aws:sns:us-east-1:123456789012:myTopic", "Message":{ "Input.$":"$", "TaskToken.$":"$$.Task.Token" } }, "End":true } } }

最佳化 Amazon SNS APIs

中的參數Step Functions以 PascalCase 表示

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

注意

Step Functions 中任務的最大輸入或結果資料大小有配額。當您向另一個 服務傳送或接收資料時,這會限制您將 256 KiB 的資料做為 UTF-8 編碼字串。請參閱 狀態機器執行的相關配額

呼叫 Amazon SNS 的 IAM 政策

下列範例範本顯示 如何根據您狀態機器定義中的資源 AWS Step Functions 產生 IAM 政策。如需詳細資訊,請參閱 Step Functions 如何為整合服務產生 IAM 政策探索 Step Functions 中的服務整合模式

靜態資源

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sns:Publish" ], "Resource": [ "arn:aws:sns:[[region]]:[[accountId]]:[[topicName]]" ] } ] }

以路徑為基礎的資源,或發佈至 TargetArnPhoneNumber

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