Publicar mensagens em um tópico do Amazon SNS com o Step Functions
Saiba como usar o Step Functions para publicar mensagens em um tópico do Amazon SNS. Esta página lista as ações de API aceitas do Amazon SNS e fornece exemplos de estado Task para publicar mensagens no Amazon SNS.
Para saber mais sobre a integração com serviços da AWS no Step Functions, consulte Integração de produtos da e Transmitir parâmetros a uma API de serviço no Step Functions.
Principais recursos da integração otimizada ao Amazon SNS
Não há otimizações específicas para os padrões de integração Resposta de solicitação ou Aguardar um retorno de chamada com um token de tarefa.
Veja a seguir um estado Task que publica em um tópico do Amazon Simple Notification Service (Amazon SNS).
{
"StartAt": "Publish to SNS",
"States": {
"Publish to SNS": {
"Type": "Task",
"Resource": "arn:aws:states:::sns:publish",
"Arguments": {
"TopicArn": "arn:aws:sns:region:account-id:myTopic",
"Message": "{% states.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
}
}
}Aprovação de valores dinâmicos. Você pode modificar o exemplo acima para aprovar dinamicamente um atributo dessa carga JSON:
{ "message": "Hello world", "SNSDetails": { "attribute1": "some value", "attribute2": "some other value", } }
O seguinte define valores usando expressões JSONata para os campos StringValue:
"MessageAttributes": { "my_attribute_no_1": { "DataType": "String", "StringValue": "{% $states.input.SNSDetails.attribute1 %}" }, "my_attribute_no_2": { "DataType": "String", "StringValue": "{% $states.input.SNSDetails.attribute2 %}" }
Veja a seguir um estado Task que publica em um tópico do Amazon SNS e aguarda o retorno do token da tarefa. Consulte Aguardar um retorno de chamada com um token de tarefa.
{
"StartAt":"Send message to SNS",
"States":{
"Send message to SNS":{
"Type":"Task",
"Resource":"arn:aws:states:::sns:publish.waitForTaskToken",
"Arguments":{
"TopicArn":"arn:aws:sns:region:account-id:myTopic",
"Message":{
"Input":"{% states.input.message %}",
"TaskToken": "{% $states.context.Task.Token %}"
}
},
"End":true
}
}
}
APIs otimizadas do Amazon SNS
Os parâmetros no Step Functions são expressos em PascalCase
Mesmo que a API do serviço nativo esteja em camelCase (por exemplo, a ação de API startSyncExecution), é necessário especificar os parâmetros em PascalCase, como StateMachineArn.
Cota para dados de entrada ou resultado
Ao enviar ou receber dados entre serviços, o máximo de entrada ou resultado de uma tarefa é 256 KiB de dados como uma string codificada em UTF-8. Consulte Cotas relacionadas a execuções de máquina de estado.
Políticas do IAM para chamar o Amazon SNS
Os modelos de exemplo a seguir mostram como o AWS Step Functions gera políticas do IAM com base nos recursos da definição da máquina de estado. Para obter mais informações, consulte Como o Step Functions gera políticas do IAM para serviços integrados e Descobrir padrões de integração de serviços no Step Functions.
Recursos estáticos
-
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sns:Publish" ], "Resource": [ "arn:aws:sns:us-east-1:123456789012:myTopicName" ] } ] }
Recursos com base em um caminho ou que publicam em TargetArn ou PhoneNumber
-
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sns:Publish" ], "Resource": "*" } ] }