本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 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]]
"
]
}
]
}
以路徑為基礎的資源,或發佈至 TargetArn
或 PhoneNumber
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sns:Publish"
],
"Resource": "*"
}
]
}