View a markdown version of this page

Amazon SNS-Warteschlangen mit unzustellbaren Briefen - 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.

Amazon SNS-Warteschlangen mit unzustellbaren Briefen

Eine Queue für unzustellbare Nachrichten ist eine Amazon-SQS-Queue, an die ein Amazon SNS Abonnement Nachrichten senden kann, die nicht erfolgreich an Abonnenten gesendet werden konnten. Nachrichten, die aufgrund von Clientfehlern oder Serverfehlern nicht zugestellt werden können, werden in der Queue für unzustellbare Nachrichten zur weiteren Analyse oder erneuten Verarbeitung gespeichert. Weitere Informationen erhalten Sie unter Konfigurieren einer Amazon-SNS-Warteschlange für unzustellbare Nachrichten für ein Abonnement und Wiederholungsversuche bei der Nachrichtenzustellung Amazon SNS.

Anmerkung
  • Das Amazon SNS-Abonnement und die Amazon SQS-Warteschlange müssen sich unter demselben AWS Konto und derselben Region befinden.

  • Für ein FIFO-Thema können Sie eine Amazon-SQS-Warteschlange als Warteschlange für unzustellbare Nachrichten für das Amazon-SNS-Abonnement verwenden. FIFO-Themenabonnements verwenden FIFO-Warteschlangen und Standardthemenabonnements verwenden Standardwarteschlangen.

  • Um eine verschlüsselte Amazon SQS-Warteschlange als Warteschlange für unlesbare Nachrichten zu verwenden, müssen Sie ein benutzerdefiniertes KMS mit einer Schlüsselrichtlinie verwenden, die dem Amazon SNS-Serviceprinzipal Zugriff auf API-Aktionen gewährt. AWS KMS Weitere Informationen finden Sie Sicherung von Amazon SNS-Daten mit serverseitiger Verschlüsselung in diesem Handbuch und unter Schutz von Amazon SQS-Daten mithilfe von Server-Side Verschlüsselung (SSE) sowie AWS KMS im Amazon Simple Queue Service Developer Guide.

Warum schlagen Nachrichtenzustellungen fehl?

Im Allgemeinen schlägt die Nachrichtenzustellung fehl, wenn Amazon SNS aufgrund eines clientseitigen oder serverseitigen Fehlers nicht auf einen abonnierten Endpunkt zugegriffen werden kann. Wenn Amazon SNS einen clientseitigen Fehler erhält oder weiterhin einen serverseitigen Fehler für eine Nachricht erhält, die über die Anzahl der Wiederholungsversuche hinausgeht, die in der entsprechenden Wiederholungsrichtlinie angegeben ist, verwirft Amazon SNS die Nachricht — es sei denn, es ist eine Queue für unzustellbare Nachrichten an das Abonnement angehängt. Fehlgeschlagene Zustellungen ändern den Status Ihrer Abonnements nicht. Weitere Informationen finden Sie unter Wiederholungsversuche bei der Nachrichtenzustellung Amazon SNS.

Client-side Fehler

Client-side Fehler können auftreten, wenn Amazon SNS veraltete Abonnement-Metadaten hat. Diese Fehler treten im Allgemeinen auf, wenn ein Besitzer den Endpunkt löscht (z. B. eine Lambda-Funktion, mit der ein Thema abonniert wird) oder wenn ein Besitzer die dem abonnierten Endpunkt zugewiesene Richtlinie so ändert, dass Amazon SNS keine Nachrichten an den Endpunkt zugestellt werden können. Amazon SNS versucht nicht, eine durch einen clientseitigen Fehler verursachte fehlerhafte Nachrichtenzustellung zu wiederholen. Amazon SNS versucht nicht erneut, die Nachricht zuzustellen, die aufgrund eines clientseitigen Fehlers fehlschlägt.

Server-side Fehler

Server-side Fehler können auftreten, wenn das für den abonnierten Endpunkt verantwortliche System nicht mehr verfügbar ist oder eine Ausnahme zurückgibt, die darauf hinweist, dass es eine gültige Anfrage von Amazon SNS nicht verarbeiten kann. Bei serverseitigen Fehlern versucht Amazon SNS die fehlgeschlagenen Zustellungen mithilfe einer linearen oder exponentiellen Backoff-Funktion zu wiederholen. Bei serverseitigen Fehlern, die durch AWS verwaltete Endpunkte verursacht werden, die von Amazon SQS unterstützt werden AWS Lambda, oder Amazon SNS versucht die Zustellung bis zu 100.015 Mal über einen Zeitraum von 23 Tagen erneut.

Von Kunden verwaltete Endpunkte (wie HTTP, SMTP, SMS oder mobile Pushnachrichten) können ebenfalls serverseitige Fehler verursachen. Amazon SNS versucht auch die Zustellung an diese Endgerätetypen erneut. Obwohl HTTP-Endpunkte von Kunden definierte Wiederholungsrichtlinien unterstützen, legt Amazon SNS eine interne Zustellungsrichtlinie für SMTP-, SMS- und mobile Push-Endpunkte auf 50-mal innerhalb von 6 Stunden fest.

Funktionsweise von Queues für unzustellbare Nachrichten

Eine Queue für unzustellbare Nachrichten wird einem Amazon SNS-Abonnement (nicht einem Thema) zugewiesen, da Nachrichtenzustellungen auf Abonnementebene stattfinden. Auf diese Weise können Sie den ursprünglichen Zielendpunkt für jede Nachricht leichter identifizieren.

Bei einer Queue für unzustellbare Nachrichten, die einem Amazon SNS-Abonnement zugeordnet ist, handelt es sich um eine gewöhnliche Amazon SQS-Queue. Weitere Informationen zum Aufbewahrungszeitraum für Nachrichten finden Sie unter Kontingente im Zusammenhang mit Nachrichten in der Amazon Simple Queue Service-Entwicklerrichtlinie. Sie können den Aufbewahrungszeitraum für Nachrichten mithilfe der SetQueueAttributes Amazon SQS-API-Aktion anpassen. Um Ihre Anwendungen widerstandsfähiger zu machen, empfehlen wir Ihnen, die maximale Aufbewahrungsfrist für Queues für unzustellbare Nachrichten auf 14 Tage festzulegen.

Wie werden Nachrichten in eine Queue für unzustellbare Nachrichten verschoben?

Ihre Nachrichten werden mithilfe einer Richtlinie für erneute Ausführung in eine Queue für unzustellbare Nachrichten verschoben. Eine Richtlinie für erneute Ausführung ist ein JSON-Objekt, das auf den ARN der Queue für unzustellbare Nachrichten verweist. Das deadLetterTargetArn-Attribut gibt den ARN an. Der ARN muss auf eine Amazon SQS-Warteschlange in derselben AWS-Konto Region wie Ihr Amazon SNS-Abonnement verweisen. Weitere Informationen finden Sie unter Konfigurieren einer Amazon-SNS-Warteschlange für unzustellbare Nachrichten für ein Abonnement.

Das folgende JSON-Objekt ist eine Beispielrichtlinie für eine Richtlinie für erneute Ausführung, die einem SNS-Abonnement zugewiesen ist.

{ "deadLetterTargetArn": "arn:aws:sqs:us-east-2:123456789012:MyDeadLetterQueue" }

Wie kann ich Nachrichten aus einer Queue für unzustellbare Nachrichten verschieben?

Sie können Nachrichten auf zwei Arten aus einer Queue für unzustellbare Nachrichten verschieben:

  • Vermeiden Sie Schreiben von Amazon SQS-Verbraucherlogik: legen Sie Ihre Queue für unzustellbare Nachrichten als Ereignisquelle für die Lambda-Funktion fest, um Ihre Queue für unzustellbare Nachrichten zu leeren.

  • Amazon SQS-Verbraucherlogik schreiben — Verwenden Sie die Amazon SQS-API, das AWS SDK oder, AWS CLI um eine benutzerdefinierte Verbraucherlogik für das Abfragen, Verarbeiten und Löschen der Nachrichten in der Warteschlange zu schreiben, zu verarbeiten und zu löschen.

Wie kann ich Queues für unzustellbare Nachrichten überwachen und protokollieren?

Sie können CloudWatch Amazon-Metriken verwenden, um Warteschlangen zu überwachen, die mit Ihren Amazon SNS-Abonnements verknüpft sind. Alle Amazon SQS-Warteschlangen geben Metriken in Intervallen von einer Minute aus. CloudWatch Weitere Informationen finden Sie unter Verfügbare CloudWatch Metriken für Amazon SQS im Amazon Simple Queue Service Developer Guide. Alle Amazon SNS-Abonnements mit Warteschlangen, bei denen keine Nachrichten mehr angezeigt werden, geben ebenfalls Metriken aus. CloudWatch Weitere Informationen finden Sie unter Überwachung von Amazon SNS-Themen mit CloudWatch.

Um über Aktivitäten in Ihren Warteschlangen für unzustellbare Nachrichten informiert zu werden, können Sie Metriken und Alarme verwenden. CloudWatch Das Einrichten eines Alarms für die NumberOfMessagesSent Metrik ist nicht geeignet, da diese Metrik keine Nachrichten erfasst, die aufgrund fehlgeschlagener Verarbeitungsversuche an einen DLQ gesendet wurden. Verwenden Sie stattdessen die ApproximateNumberOfMessagesVisible Metrik, die alle Nachrichten erfasst, die derzeit im DLQ verfügbar sind, einschließlich der Nachrichten, die aufgrund von Verarbeitungsfehlern verschoben wurden.

Beispiel für die Einrichtung eines CloudWatch Alarms
  1. Erstellen Sie einen CloudWatch Alarm für die ApproximateNumberOfMessagesVisible Metrik.

  2. Setzen Sie den Alarmschwellenwert auf 1 (oder einen anderen geeigneten Wert, der auf Ihren Erwartungen und dem DLQ-Verkehr basiert).

  3. Geben Sie ein Amazon SNS-Thema an, das benachrichtigt werden soll, wenn der Alarm ausgelöst wird. Dieses Amazon-SNS-Thema kann Ihre Alarmbenachrichtigung an jeden Endpunkttyp (z. B. E-Mail-Adresse, Telefonnummer oder mobile Pager-App) zustellen.

Mithilfe von CloudWatch Protokollen können Sie die Ausnahmen untersuchen, die dazu führen, dass Amazon SNS-Übermittlungen fehlschlagen und Nachrichten in Warteschlangen mit unzustellbaren Nachrichten gesendet werden. Amazon SNS kann sowohl erfolgreiche als auch fehlgeschlagene Lieferungen protokollieren. CloudWatch Weitere Informationen finden Sie unter Attribute der mobilen Amazon SNS SNS-App.