Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Después de crear un tema de Amazon SNS y suscribir un punto de enlace a él, puede publicar mensajes en un tema. Cuando se publica un mensaje, Amazon SNS intenta entregar el mensaje al punto de enlace suscrito.
Para publicar mensajes en temas de Amazon SNS mediante la AWS Management Console, siga estos pasos:
Inicie sesión en la consola de Amazon SNS
. -
En el panel de navegación izquierdo, elija Topics (Temas).
-
En la página Temas, seleccione un tema y, a continuación, elija Publicar en tema.
En la consola, se abre la página Publicar mensaje en un tema.
-
En la sección Detalles básicos, haga lo siguiente:
-
(Opcional) Ingrese un asunto para el mensaje.
-
En el caso de un tema FIFO, ingrese un ID de grupo de mensajes. Los mensajes del mismo grupo de mensajes se entregan en el orden en que se publican.
-
En el caso de un tema FIFO, escriba un ID de desduplicación de mensajes. Este ID es opcional si ha habilitado la configuración Desduplicación de mensajes en función del contenido para el tema.
-
(Opcional) En el caso de las notificaciones push en móviles, ingrese un valor de período de vida (TTL) en segundos. Esta es la cantidad de tiempo que un servicio de notificaciones push, como Apple Push Notification Service (APNs) o Firebase Cloud Messaging (FCM), tiene para entregar el mensaje al punto final.
-
-
En la sección Message body (Cuerpo del mensaje), realice alguna de las siguientes acciones:
-
Elija Carga idéntica para todos los protocolos de entrega y, a continuación, ingrese el mensaje.
-
Elija Carga personalizada para cada protocolo de entrega y, a continuación, ingrese un objeto JSON para definir el mensaje que se envía a cada protocolo.
Para obtener más información, consulte Publicación de notificaciones de Amazon SNS con cargas útiles específicas de la plataforma.
-
-
En la sección Atributos del mensaje, agregue cualquier atributo que quiera que Amazon SNS haga coincidir con el atributo
FilterPolicy
de la suscripción y, de esta manera, poder decidir si el punto de enlace suscrito tiene interés en el mensaje publicado.-
En Tipo, elija un tipo de atributo, como Matriz.Cadena.
nota
Para el tipo de atributo Matriz.Cadena, incluya la matriz entre corchetes (
[]
). Dentro de la matriz, delimite los valores de cadena con comillas dobles. No es necesario usar comillas con los números ni con las palabras clavetrue
,false
ynull
. -
Ingrese un nombre para el atributo, como, por ejemplo,
customer_interests
. -
Ingrese un valor para el atributo, como, por ejemplo,
["soccer", "rugby", "hockey"]
.
Si el tipo de atributo es String (Cadena), String.Array (Matriz.Cadena) o Number (Número), Amazon SNS evalúa el atributo del mensaje con la filter policy (política de filtrado) de una suscripción (si existe), antes de enviar el mensaje a la suscripción cuyo ámbito de políticas de filtrado proporcionado no esté establecido explícitamente en
MessageBody
.Para obtener más información, consulte Atributos de mensajes de Amazon SNS.
-
-
Elija Publish message (Publicar mensaje).
El mensaje se publica en el tema. Además, en la consola, se abre la página Detalles.
Para publicar un mensaje en un tema mediante la AWS , siga estos pasos:
Para usar un AWS SDK, debe configurarlo con sus credenciales. Para obtener más información, consulte Los archivos de configuración y credenciales compartidos en la Guía de referencia de herramientas AWS SDKs y herramientas.
Los siguientes ejemplos de código muestran cómo utilizar Publish
.
- SDK para .NET
-
nota
Hay más información al respecto GitHub. Busque el ejemplo completo y aprenda a configurar y ejecutar en el Repositorio de ejemplos de código de AWS
. Publique un mensaje en un tema
using System; using System.Threading.Tasks; using Amazon.SimpleNotificationService; using Amazon.SimpleNotificationService.Model; /// <summary> /// This example publishes a message to an Amazon Simple Notification /// Service (Amazon SNS) topic. /// </summary> public class PublishToSNSTopic { public static async Task Main() { string topicArn = "arn:aws:sns:us-east-2:000000000000:ExampleSNSTopic"; string messageText = "This is an example message to publish to the ExampleSNSTopic."; IAmazonSimpleNotificationService client = new AmazonSimpleNotificationServiceClient(); await PublishToTopicAsync(client, topicArn, messageText); } /// <summary> /// Publishes a message to an Amazon SNS topic. /// </summary> /// <param name="client">The initialized client object used to publish /// to the Amazon SNS topic.</param> /// <param name="topicArn">The ARN of the topic.</param> /// <param name="messageText">The text of the message.</param> public static async Task PublishToTopicAsync( IAmazonSimpleNotificationService client, string topicArn, string messageText) { var request = new PublishRequest { TopicArn = topicArn, Message = messageText, }; var response = await client.PublishAsync(request); Console.WriteLine($"Successfully published message ID: {response.MessageId}"); } }
Publique un mensaje en un tema con opciones de grupo, duplicación y atributo
/// <summary> /// Publish messages using user settings. /// </summary> /// <returns>Async task.</returns> public static async Task PublishMessages() { Console.WriteLine("Now we can publish messages."); var keepSendingMessages = true; string? deduplicationId = null; string? toneAttribute = null; while (keepSendingMessages) { Console.WriteLine(); var message = GetUserResponse("Enter a message to publish.", "This is a sample message"); if (_useFifoTopic) { Console.WriteLine("Because you are using a FIFO topic, you must set a message group ID." + "\r\nAll messages within the same group will be received in the order " + "they were published."); Console.WriteLine(); var messageGroupId = GetUserResponse("Enter a message group ID for this message:", "1"); if (!_useContentBasedDeduplication) { Console.WriteLine("Because you are not using content-based deduplication, " + "you must enter a deduplication ID."); Console.WriteLine("Enter a deduplication ID for this message."); deduplicationId = GetUserResponse("Enter a deduplication ID for this message.", "1"); } if (GetYesNoResponse("Add an attribute to this message?")) { Console.WriteLine("Enter a number for an attribute."); for (int i = 0; i < _tones.Length; i++) { Console.WriteLine($"\t{i + 1}. {_tones[i]}"); } var selection = GetUserResponse("", "1"); int.TryParse(selection, out var selectionNumber); if (selectionNumber > 0 && selectionNumber < _tones.Length) { toneAttribute = _tones[selectionNumber - 1]; } } var messageID = await SnsWrapper.PublishToTopicWithAttribute( _topicArn, message, "tone", toneAttribute, deduplicationId, messageGroupId); Console.WriteLine($"Message published with id {messageID}."); } keepSendingMessages = GetYesNoResponse("Send another message?", false); } }
Aplique las selecciones del usuario a la acción de publicación.
/// <summary> /// Publish a message to a topic with an attribute and optional deduplication and group IDs. /// </summary> /// <param name="topicArn">The ARN of the topic.</param> /// <param name="message">The message to publish.</param> /// <param name="attributeName">The optional attribute for the message.</param> /// <param name="attributeValue">The optional attribute value for the message.</param> /// <param name="deduplicationId">The optional deduplication ID for the message.</param> /// <param name="groupId">The optional group ID for the message.</param> /// <returns>The ID of the message published.</returns> public async Task<string> PublishToTopicWithAttribute( string topicArn, string message, string? attributeName = null, string? attributeValue = null, string? deduplicationId = null, string? groupId = null) { var publishRequest = new PublishRequest() { TopicArn = topicArn, Message = message, MessageDeduplicationId = deduplicationId, MessageGroupId = groupId }; if (attributeValue != null) { // Add the string attribute if it exists. publishRequest.MessageAttributes = new Dictionary<string, MessageAttributeValue> { { attributeName!, new MessageAttributeValue() { StringValue = attributeValue, DataType = "String"} } }; } var publishResponse = await _amazonSNSClient.PublishAsync(publishRequest); return publishResponse.MessageId; }
-
Para obtener detalles sobre la API, consulte Publish en la Referencia de la API de AWS SDK para .NET .
-