本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
了解如何使用 Step Functions 將訊息發佈至 Amazon SNS主題。此頁面列出支援的 Amazon SNSAPI動作,並提供範例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 編碼字串。請參閱 狀態機器執行的相關配額。
IAM 用於呼叫 Amazon 的政策 SNS
下列範例範本顯示 如何根據您狀態機器定義中的資源 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": "*"
}
]
}