Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Nachdem Sie ein Amazon-SNS-Thema erstellt haben und ein Endpunkt dieses abonniert hat, können Sie Nachrichten zu einem Thema veröffentlichen. Wenn eine Nachricht veröffentlicht wird, versucht Amazon SNS, die Nachricht an die abonnierte Endpunkte auszuliefern.
Um Nachrichten in Amazon-SNS-Themen mithilfe von AWS Management Console zu veröffentlichen
Melden Sie sich bei der Amazon-SNS-Konsole
an. -
Wählen Sie im linken Navigationsbereich Topics (Themen).
-
Klicken Sie auf der Seite Topics ein Thema aus und dann Publish to topic.
Die Konsole öffnet die Nachricht im Thema veröffentlichenSeite
-
Gehen Sie im Abschnitt Basic details (Grundlegende Details) wie folgt vor:
-
(Optional) Geben Sie den Betreff einer Nachricht ein.
-
Für ein FIFO-Thema geben Sie eine Nachrichtengruppen-IDein. Nachrichten in derselben Nachrichtengruppe werden in der Reihenfolge zugestellt, in der sie veröffentlicht werden.
-
Geben Sie für ein FIFO-Thema eine Nachrichtendeduplizierungs-IDein. Diese ID ist optional, wenn Sie die Inhaltsbasierte Nachrichtendeduplizierung-Einstellung für das Thema aktiviert haben.
-
(Optional) Für Mobile Push-Benachrichtigungen geben Sie einen Lebenszeitwert (TTL) in Sekunden ein. Dies ist die Zeit, die ein Push-Benachrichtigungsdienst — wie Apple Push Notification Service (APNs) oder Firebase Cloud Messaging (FCM) — benötigt, um die Nachricht an den Endpunkt zu übermitteln.
-
-
Führen Sie im Abschnitt Message body (Nachrichtentext) eine der folgenden Aktionen aus:
-
Wählen Sie Identical payload for all delivery protocols (Identische Nutzlast für alle Bereitstellungsprotokolle) und geben Sie anschließend die Nachricht ein.
-
Wählen Sie Custom payload for each delivery protocol (Benutzerdefinierte Nutzlast für die einzelnen Bereitstellungsprotokolle) und verwenden Sie anschließend ein JSON-Objekt, um die Nachricht zu definieren, die an die einzelnen Protokolle gesendet werden soll.
Weitere Informationen finden Sie unter Veröffentlichen von Amazon SNS SNS-Benachrichtigungen mit plattformspezifischen Payloads.
-
-
Fügen Sie im Abschnitt Message attributes (Nachrichtenattribute) die gewünschten Attribute hinzu, die Amazon SNS mit dem Abonnementattribut
FilterPolicy
abgleichen soll, um zu entscheiden, ob der abonnierte Endpunkt an der veröffentlichten Nachricht interessiert ist.-
Als Typ wählen Sie einen Attributtyp aus, z. B. String.Array.
Anmerkung
Wenn der Attributtyp String.Array (String.Array) ist, schließen Sie das Array in eckige Klammern (
[]
) ein. Innerhalb des Arrays schließen Sie Zeichenfolgenwerte in doppelte Anführungszeichen ein. Für Zahlen oder die Schlüsselwörtertrue
,false
undnull
benötigen Sie keine Anführungszeichen. -
Geben Sie einen Attributnamen, wie beispielsweise
customer_interests
an. -
Geben Sie einen Attributvalue, wie beispielsweise
["soccer", "rugby", "hockey"]
an.
Wenn der Attributtyp String (Zeichenfolge), String.Array oder Number (Zahl) ist, wertet Amazon SNS das Nachrichtenattribut anhand der Filterrichtlinie (sofern vorhanden) des betreffenden Abonnements aus, bevor die Nachricht an dieses Abonnement gesendet wird, vorausgesetzt, der Geltungsbereich der Filterrichtlinie ist nicht explizit auf
MessageBody
festgelegt.Weitere Informationen finden Sie unter Amazon-SNS-Nachrichtenattribute.
-
-
Wählen Sie Publish message (Nachricht veröffentlichen) aus.
Die Nachricht wird in dem Thema veröffentlicht. Die Konsole öffnet die Details-Seite.
So veröffentlichen Sie eine Nachricht für ein Thema mit AWS -SDK
Um ein AWS SDK verwenden zu können, müssen Sie es mit Ihren Anmeldeinformationen konfigurieren. Weitere Informationen finden Sie unter The shared config and credentials files im AWS SDKs Referenzhandbuch zu Tools.
Die folgenden Code-Beispiele zeigen, wie Publish
verwendet wird.
- SDK for .NET
-
Anmerkung
Weitere Informationen finden Sie unter GitHub. Sie sehen das vollständige Beispiel und erfahren, wie Sie das AWS -Code-Beispiel-Repository
einrichten und ausführen. Veröffentlichen einer Nachricht für ein Thema.
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}"); } }
Veröffentlichen Sie eine Nachricht zu einem Thema mit Gruppen-, Duplizierungs- und Attributoptionen.
/// <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); } }
Wenden Sie die Benutzerauswahl auf die Veröffentlichungsaktion an.
/// <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; }
-
Details zu API finden Sie unter Veröffentlichen in der AWS SDK for .NET -API-Referenz.
-