本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Step Functions 將消息發佈到 Amazon SNS 主題
了解如何使用 Step Functions 將訊息發佈到 Amazon SNS 主題。此頁面列出支援的 Amazon SNS API 動作,並提供將訊息發佈到 Amazon 的範例Task
狀態SNS。
若要瞭解如何整合 AWS 服務在 Step Functions 中,請參閱整合 服務和。將參數傳遞給 Step Functions 數API中的服務
優化 Amazon SNS 集成的主要功能
請求回應或使用任務令牌等待回調整合模式沒有最佳化。
以下內容包括發佈到 Amazon 簡單通知服務 (AmazonSNS) 主題的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 KB 的資料,以 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": "*"
}
]
}