Aprenda a usar Step Functions para publicar mensajes en un tema de Amazon SNS. En esta página se enumeran las acciones de la API de Amazon SNS compatibles y se proporcionan estados Task
de ejemplo para publicar mensajes en Amazon SNS.
Para obtener más información sobre la integración con los servicios de AWS en Step Functions, consulte Integración de los servicios de y Cómo pasar parámetros a una API de servicio en Step Functions.
Características clave de la integración optimizada de Amazon SNS
No hay optimizaciones para los patrones de integración Respuesta de la solicitud o Cómo esperar una devolución de llamada con el token de tarea.
El ejemplo siguiente incluye un estado Task
que publica en un tema de Amazon Simple Notification Service (Amazon SNS).
{
"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
}
}
}
Pasar valores dinámicos. Puede modificar el ejemplo anterior para pasar dinámicamente un atributo de esta carga de JSON:
{
"input": {
"message": "Hello world"
},
"SNSDetails": {
"attribute1": "some value",
"attribute2": "some other value",
}
}
Anexa .$
al campo StringValue
:
"MessageAttributes": {
"my_attribute_no_1": {
"DataType": "String",
"StringValue.$": "$.SNSDetails.attribute1"
},
"my_attribute_no_2": {
"DataType": "String",
"StringValue.$": "$.SNSDetails.attribute2"
}
El siguiente ejemplo incluye un estado Task
que publica en un tema de Amazon SNS y, a continuación, espera a que se devuelva el token de tarea. Consulte Cómo esperar una devolución de llamada con el token de tarea.
{
"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
}
}
}
API admitidas de Amazon SNS
Los parámetros en Step Functions se expresan en PascalCase
Incluso si la API del servicio nativo está en CamelCase, por ejemplo, la acción startSyncExecution
de la API, se especifican parámetros en PascalCase, como: StateMachineArn
.
nota
Hay una cuota para el tamaño máximo de los datos de entrada o resultado para una tarea en Step Functions. Esto limita a 256 KB de datos como cadena codificada en UTF-8 al enviar o recibir datos de otro servicio. Consulte Cuotas relacionadas con ejecuciones de máquinas de estado.
Políticas de IAM para llamar a Amazon SNS
En estas plantillas de ejemplo, se muestra cómo AWS Step Functions genera políticas de IAM basadas en los recursos de la definición de la máquina de estado. Para obtener más información, consulte Cómo Step Functions genera políticas de IAM para servicios integrados y Descubrimiento de los patrones de integración de servicios en Step Functions.
Recursos estáticos
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sns:Publish"
],
"Resource": [
"arn:aws:sns:[[region]]
:[[accountId]]
:[[topicName]]
"
]
}
]
}
Recursos basados en una ruta o publicación en TargetArn
o PhoneNumber
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"sns:Publish"
],
"Resource": "*"
}
]
}