Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Une fois que vous avez créé une rubrique Amazon SNS et y avez abonné un point de terminaison, vous pouvez y publier des messages. Lorsqu'un message est publié, Amazon SNS tente de le remettre aux points de terminaison abonnés.
Pour publier des messages dans une rubrique Amazon SNS à l'aide de la AWS Management Console
Connectez-vous à la console Amazon SNS
. -
Dans le panneau de navigation de gauche, choisissez Rubriques.
-
Sur la page Rubriques, sélectionnez une rubrique, puis choisissez Publier un message.
La console ouvre la fenêtre Publier un message sur une rubrique.
-
Dans la section Détails de base, procédez comme suit :
-
(Facultatif) Saisissez un message dans le champ Objet.
-
Pour une rubrique FIFO, saisissez une valeur d'ID de groupe de messages. Les messages du même groupe de messages sont remis dans l'ordre dans lequel ils sont publiés.
-
Pour une rubrique FIFO, saisissez un ID de déduplication de message. Cet ID est facultatif si vous avez activé l'option Déduplication des messages basée sur le contenu pour la rubrique.
-
(Facultatif) Pour notifications push mobile, saisissez une valeur de Durée de vie (TTL) en secondes. Il s'agit du délai dont dispose un service de notification push, tel que Apple Push Notification Service (APNs) ou Firebase Cloud Messaging (FCM), pour transmettre le message au terminal.
-
-
Dans la section Message body (Corps du messages), effectuez l'une des actions suivantes :
-
Choisissez Charge utile identique pour tous les protocoles de livraison, puis saisissez un message.
-
Choisissez Charge utile personnalisée pour chaque protocole de distribution, puis utilisez un objet JSON pour définir le message à envoyer à chaque protocole.
Pour de plus amples informations, veuillez consulter Publication de notifications Amazon SNS avec des charges utiles spécifiques à la plate-forme.
-
-
Dans la section Attributs du message, ajoutez tous les attributs que vous souhaitez qu'Amazon SNS associe à l'attribut d'abonnement
FilterPolicy
afin de déterminer si le point de terminaison abonné est intéressé par le message publié.-
Pour Type, choisissez un type d'attribut, tel que String.Array.
Note
Pour le type d'attribut String.Array, placez le tableau entre crochets (
[]
). Dans le tableau, placez les chaînes entre guillemets. Vous n'avez pas besoin de guillemets pour les chiffres ou les mots-cléstrue
,false
etnull
. -
Saisissez un attribut Nom, comme
customer_interests
. -
Saisissez un attribut Valeur, comme
["soccer", "rugby", "hockey"]
.
Si le type d'attribut est String, String.Array ou Number, Amazon SNS évalue l'attribut du message par rapport à la politique de filtre d'un abonnement, le cas échéant, avant d'envoyer le message à cet abonnement, étant donné que l'étendue de la politique de filtre n'est pas explicitement définie sur
MessageBody
.Pour de plus amples informations, veuillez consulter Attributs de message Amazon SNS.
-
-
Choisissez Publier le message.
Le message est publié dans la rubrique et la console ouvre la page Détails de la rubrique.
Pour publier un message dans une rubrique à l'aide d'un kit SDK AWS
Pour utiliser un AWS SDK, vous devez le configurer avec vos informations d'identification. Pour plus d'informations, consultez la section Les fichiers de configuration et d'identification partagés dans le guide de référence des outils AWS SDKs et des outils.
Les exemples de code suivants illustrent comment utiliser Publish
.
- SDK for .NET
-
Note
Il y en a plus à ce sujet GitHub. Trouvez l’exemple complet et découvrez comment le configurer et l’exécuter dans le référentiel d’exemples de code AWS
. Publier un message dans une rubrique
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}"); } }
Publiez un message dans une rubrique avec des options de groupe, de duplication et d'attribut.
/// <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); } }
Appliquez les sélections de l'utilisateur à l'action de publication.
/// <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; }
-
Pour de plus amples informations sur l’API, consultez Publier dans AWS SDK for .NET Référence de l’API.
-