Schritt 1: Stellen Sie sicher, dass Ihr Endpunkt bereit ist, SNS Amazon-Nachrichten zu verarbeiten - Amazon Simple Notification Service

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.

Schritt 1: Stellen Sie sicher, dass Ihr Endpunkt bereit ist, SNS Amazon-Nachrichten zu verarbeiten

Bevor Sie Ihr HTTP oder HTTPS Endgerät für ein Thema abonnieren, müssen Sie sicherstellen, dass der HTTP oder HTTPS Endpunkt in der Lage ist, die HTTP POST Anfragen zu bearbeiten, die Amazon zum Senden der Abonnementbestätigungs- und Benachrichtigungsnachrichten SNS verwendet. In der Regel bedeutet dies, eine Webanwendung zu erstellen und bereitzustellen (z. B. ein Java-Servlet, wenn auf Ihrem Endpunkt-Host Linux mit Apache und Tomcat ausgeführt wird), die die HTTP Anfragen von Amazon verarbeitet. SNS Wenn Sie einen HTTP Endpunkt abonnieren, SNS sendet Amazon ihm eine Abonnementbestätigungsanfrage. Ihr Endpunkt muss bereit sein, diese Anfrage zu empfangen und zu verarbeiten, wenn Sie das Abonnement erstellen, da Amazon diese Anfrage zu diesem Zeitpunkt SNS sendet. Amazon SNS sendet keine Benachrichtigungen an den Endpunkt, bis Sie das Abonnement bestätigt haben. Sobald Sie das Abonnement bestätigt haben, SNS sendet Amazon Benachrichtigungen an den Endpunkt, wenn eine Veröffentlichungsaktion für das abonnierte Thema durchgeführt wird.

Einrichten des Endpunkts für die Verarbeitung von Abonnementsbestätigungen und Benachrichtigungsmitteilungen
  1. Ihr Code sollte die HTTP Header der HTTP POST Anfragen lesen, die Amazon SNS an Ihren Endpunkt sendet. Ihr Code sollte nach dem Header-Feld suchenx-amz-sns-message-type, das Ihnen die Art der Nachricht anzeigt, die Amazon an Sie gesendet SNS hat. Anhand des Headers können Sie den Nachrichtentyp ermitteln, ohne den Text der HTTP Anfrage analysieren zu müssen. Diese beiden Typen müssen Sie verarbeiten: SubscriptionConfirmation und Notification. Die UnsubscribeConfirmation Mitteilung wird nur verwendet, wenn das Abonnement des Themas gelöscht wird.

    Einzelheiten zum HTTP Header finden Sie unterHTTP/HTTPSÜberschriften. Die folgende HTTP POST Anfrage ist ein Beispiel für eine Bestätigungsnachricht für ein Abonnement.

    POST / HTTP/1.1 x-amz-sns-message-type: SubscriptionConfirmation x-amz-sns-message-id: 165545c9-2a5c-472c-8df2-7ff2be2b3b1b x-amz-sns-topic-arn: arn:aws:sns:us-west-2:123456789012:MyTopic Content-Length: 1336 Content-Type: text/plain; charset=UTF-8 Host: example.com Connection: Keep-Alive User-Agent: Amazon Simple Notification Service Agent { "Type" : "SubscriptionConfirmation", "MessageId" : "165545c9-2a5c-472c-8df2-7ff2be2b3b1b", "Token" : "2336412f37f...", "TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic", "Message" : "You have chosen to subscribe to the topic arn:aws:sns:us-west-2:123456789012:MyTopic.\nTo confirm the subscription, visit the SubscribeURL included in this message.", "SubscribeURL" : "https://sns.us-west-2.amazonaws.com/?Action=ConfirmSubscription&TopicArn=arn:aws:sns:us-west-2:123456789012:MyTopic&Token=2336412f37...", "Timestamp" : "2012-04-26T20:45:04.751Z", "SignatureVersion" : "1", "Signature" : "EXAMPLEpH+...", "SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem" }
  2. Ihr Code sollte das JSON Dokument im Hauptteil der HTTP POST Anfrage analysieren und den Inhaltstyp text/plain eingeben, um die Name-Wert-Paare zu lesen, aus denen die Amazon-Nachricht besteht. SNS Verwenden Sie einen JSON Parser, der die Umwandlung der maskierten Darstellung von Steuerzeichen in ihre ASCII Zeichenwerte übernimmt (z. B. die Konvertierung von\nin ein Zeilenumbruchzeichen). Sie können einen vorhandenen JSON Parser wie den JSONJackson-Prozessor verwenden oder Ihren eigenen schreiben. Um den Text in den Betreff- und Nachrichtenfeldern als gültig zu sendenJSON, SNS muss Amazon einige Steuerzeichen in maskierte Darstellungen umwandeln, die in das JSON Dokument aufgenommen werden können. Wenn Sie das JSON Dokument im Hauptteil der an Ihren Endpunkt gesendeten POST Anfrage erhalten, müssen Sie die Escape-Zeichen wieder in ihre ursprünglichen Zeichenwerte umwandeln, wenn Sie eine exakte Darstellung des ursprünglichen Betreffs und der zum Thema veröffentlichten Nachrichten wünschen. Dies ist besonders wichtig, wenn Sie die Signatur einer Benachrichtigung überprüfen möchten, da die Signatur die Benachrichtigung und den Betreff in der ursprünglichen Form als Teil der zu signierenden Zeichenfolge verwendet.

  3. Ihr Code sollte die Echtheit einer von Amazon gesendeten Benachrichtigung, Abonnementbestätigung oder Abmeldebestätigung überprüfenSNS. Anhand der in der SNS Amazon-Nachricht enthaltenen Informationen kann Ihr Endpunkt die Signatur neu erstellen, sodass Sie den Inhalt der Nachricht überprüfen können, indem Sie Ihre Signatur mit der Signatur abgleichen, die Amazon mit der Nachricht SNS gesendet hat. Weitere Informationen zum Überprüfen der Signatur einer Nachricht finden Sie unter Überprüfung der Signaturen von Amazon-Nachrichten SNS.

  4. Je nach dem im Header-Feld x-amz-sns-message-type angegebenen Typ sollte Ihr Code das im Hauptteil der HTTP Anfrage enthaltene JSON Dokument lesen und die Nachricht verarbeiten. Hier finden Sie die Richtlinien für die beiden primären Nachrichtentypen:

    SubscriptionConfirmation

    Lesen Sie den Wert für SubscribeURL und besuchen Sie ihnURL. Um das Abonnement zu bestätigen und Benachrichtigungen am Endpunkt zu erhalten, müssen Sie den besuchen SubscribeURL URL (indem Sie beispielsweise eine HTTP GET Anfrage an den sendenURL). Sehen Sie sich die HTTP Beispielanfrage im vorherigen Schritt an, um zu sehen, wie die SubscribeURL aussieht. Weitere Informationen zum Format der SubscriptionConfirmation-Nachricht finden Sie unter HTTP/JSONFormat zur Bestätigung des HTTPS Abonnements. Wenn Sie die besuchenURL, erhalten Sie eine Antwort, die wie das folgende XML Dokument aussieht. Das Dokument gibt das Abonnement ARN für den Endpunkt innerhalb des ConfirmSubscriptionResult Elements zurück.

    <ConfirmSubscriptionResponse xmlns="http://sns.amazonaws.com/doc/2010-03-31/"> <ConfirmSubscriptionResult> <SubscriptionArn>arn:aws:sns:us-west-2:123456789012:MyTopic:2bcfbf39-05c3-41de-beaa-fcfcc21c8f55</SubscriptionArn> </ConfirmSubscriptionResult> <ResponseMetadata> <RequestId>075ecce8-8dac-11e1-bf80-f781d96e9307</RequestId> </ResponseMetadata> </ConfirmSubscriptionResponse>

    Als Alternative zum Besuch von können Sie das Abonnement bestätigenSubscribeURL, indem Sie die ConfirmSubscriptionAktion verwenden und Token dabei den entsprechenden Wert in der SubscriptionConfirmation Nachricht angeben. Wenn Sie möchten, dass nur der Eigentümer des Themas und der Abonnent den Endpunkt abmelden können sollen, rufen Sie die ConfirmSubscription-Aktion mit einer AWS -Signatur auf.

    Benachrichtigung

    Lesen Sie die Werte für Subject und Message, um die Benachrichtigungsinformation zu erhalten, die zum Thema veröffentlicht wurde.

    Weitere Informationen über das Format der Notification-Nachricht finden Sie unter HTTP/HTTPSÜberschriften. Die folgende HTTP POST Anfrage ist ein Beispiel für eine Benachrichtigung, die an den Endpunkt example.com gesendet wurde.

    POST / HTTP/1.1 x-amz-sns-message-type: Notification x-amz-sns-message-id: 22b80b92-fdea-4c2c-8f9d-bdfb0c7bf324 x-amz-sns-topic-arn: arn:aws:sns:us-west-2:123456789012:MyTopic x-amz-sns-subscription-arn: arn:aws:sns:us-west-2:123456789012:MyTopic:c9135db0-26c4-47ec-8998-413945fb5a96 Content-Length: 773 Content-Type: text/plain; charset=UTF-8 Host: example.com Connection: Keep-Alive User-Agent: Amazon Simple Notification Service Agent { "Type" : "Notification", "MessageId" : "22b80b92-fdea-4c2c-8f9d-bdfb0c7bf324", "TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic", "Subject" : "My First Message", "Message" : "Hello world!", "Timestamp" : "2012-05-02T00:54:06.655Z", "SignatureVersion" : "1", "Signature" : "EXAMPLEw6JRN...", "SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem", "UnsubscribeURL" : "https://sns.us-west-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-west-2:123456789012:MyTopic:c9135db0-26c4-47ec-8998-413945fb5a96" }
  5. Stellen Sie sicher, dass Ihr Endpunkt auf die HTTP POST Nachricht von Amazon SNS mit dem entsprechenden Statuscode reagiert. Die Verbindung wird in 15 Sekunden beendet. Wenn Ihr Endpunkt nicht reagiert, bevor die Verbindung abgelaufen ist, oder wenn Ihr Endpunkt einen Statuscode außerhalb des Bereichs 200—4 xx zurückgibt, betrachtet Amazon SNS die Zustellung der Nachricht als fehlgeschlagenen Versuch.

  6. Stellen Sie sicher, dass Ihr Code Wiederholungsversuche bei der Nachrichtenzustellung von Amazon SNS verarbeiten kann. Wenn Amazon SNS keine erfolgreiche Antwort von Ihrem Endpunkt erhält, versucht Amazon erneut, die Nachricht zuzustellen. Dies gilt für alle Nachrichten, einschließlich der Abonnement-Bestätigungsnachricht. Wenn die erste Zustellung der Nachricht fehlschlägt, SNS versucht Amazon standardmäßig bis zu drei Wiederholungen, wobei die Verzögerung zwischen den fehlgeschlagenen Versuchen auf 20 Sekunden festgelegt ist.

    Anmerkung

    Bei dieser Nachrichtenanfrage erfolgt ein Timeout nach 15 Sekunden. Das bedeutet, dass Amazon, wenn die Nachrichtenzustellung aufgrund eines Timeouts fehlschlägt, es nach dem vorherigen Zustellungsversuch etwa 35 Sekunden lang SNS erneut versucht. Sie können eine andere Zustellungsrichtlinie für den Endpunkt festlegen.

    Amazon SNS verwendet das x-amz-sns-message-id Header-Feld, um jede Nachricht, die zu einem SNS Amazon-Thema veröffentlicht wurde, eindeutig zu identifizieren. Durch den Vergleich der IDs von Ihnen verarbeiteten Nachrichten mit eingehenden Nachrichten können Sie feststellen, ob es sich bei der Nachricht um einen erneuten Versuch handelt.

  7. Wenn Sie einen HTTPS Endpunkt abonnieren, stellen Sie sicher, dass Ihr Endpunkt über ein Serverzertifikat einer vertrauenswürdigen Zertifizierungsstelle (CA) verfügt. Amazon SNS sendet nur Nachrichten an HTTPS Endpunkte, die über ein Serverzertifikat verfügen, das von einer von Amazon SNS vertrauenswürdigen Zertifizierungsstelle signiert wurde.

  8. Stellen Sie den Code bereit, den Sie für den Empfang von SNS Amazon-Nachrichten erstellt haben. Wenn Sie den Endpunkt abonnieren, muss dieser mindestens die Abonnement-Bestätigungsnachricht empfangen können.