Publicar mensagens em um tópico do Amazon SNS com o Step Functions - AWS Step Functions

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": "*" } ] }