Wie behebe ich Probleme mit der beim HTTP- oder HTTPS-Endpunkt-Abonnementbenachrichtigung zu meinem Amazon-SNS-Thema?
Ich habe keine Benachrichtigung zur Abonnementbestätigung erhalten, als ich meinen HTTP- oder HTTPS-Endpunkt für ein Amazon Simple Notification Service (Amazon SNS)-Thema abonniert habe. Oder das HTTP/HTTPS-Abonnement befindet sich im bestätigten Zustand, aber ich habe immer noch keine Abonnementbenachrichtigung erhalten.
Lösung
Bevor du deinen HTTP/HTTPS-Endpunkt für ein SNS-Thema abonnierst, musst du dich vergewissern, dass der HTTP/HTTPS-Endpunkt für die Verarbeitung von Amazon-SNS-Nachrichten bereit ist.
Sicherstellen, dass der HTTP/HTTPS-Endpunkt öffentlich zugänglich ist
Amazon SNS unterstützt keine privaten HTTP/HTTPS-Endpunkte. Amazon SNS sendet beim Abonnieren eines HTTP/HTTPS-Endpunkts für ein SNS-Thema über das öffentliche Internet eine HTTP-POST-Anfrage an den Endpunkt. Weitere Informationen findest du unter Analyse von Amazon-SNS-Nachrichtenformaten.
Um zu überprüfen, ob dein Endpunkt öffentlich zugänglich ist, stelle eine POST-Anfrage von deinem lokalen Computer aus, ähnlich der folgenden:
curl -X POST your_HTTPS_endpoint -H "Content-Type:text/plain; charset=UTF-8" --data {"x":"y"} -v
Beispielausgabe:
200 OK
In der vorherigen Ausgabe ist der Endpunkt mit dem Statuscode HTTP 200 OK öffentlich verfügbar.
Wenn du einen HTTP/HTTPS-Endpunkt abonniert hast, der für ein SNS-Thema nicht öffentlich zugänglich ist, erhältst du die folgende Fehlermeldung:
„An error occurred (InvalidParameter) when calling the Subscribe operation: Invalid parameter: Unreachable Endpoint“
Wichtig: Dein Hostname darf keinen Unterstrich enthalten.
Den Endpunkt-Antwort-Header validieren
Gehe wie folgt vor, je nachdem, ob du die Standard- oder die Digest-Zugriffsauthentifizierung verwendest. Stelle sicher, dass der Endpunkt HTTPS ist und die Header-Antwort „HTTP/1.1 401 Unauthorized“ unterstützt.
Grundlegende Zugriffsauthentifizierung
Wenn der Endpunkt eine nicht authentifizierte Anfrage erhält, gibt er die Header-Antwort „HTTP/1.1 401 Unauthorized“ zusammen mit einem WWW-Authenticate-Header zurück. Der Header-Wert muss das Schlüsselwort Basic enthalten, ähnlich dem folgenden:
WWW-Authenticate: Basic
Weitere Informationen findest du unter RFC 2617 auf der RFC-Editor-Website.
Digest-Zugriffsauthentifizierung
Wenn der Endpunkt eine nicht authentifizierte Anfrage erhält, gibt er eine Header-Antwort „HTTP/1.1 401 Unauthorized“ zusammen mit einem WWW-Authenticate-Header zurück. Der Header-Wert muss Folgendes enthalten:
- das Schlüsselwort „Digest“
- einen zufällig generierten Einmal-Nonce-Wert
- einen Authentifizierungsbereich
- andere optionale Parameter, die in RFC 2617 auf der RFC Editor-Website unterstützt werden
Beispiel für einen Header-Wert:
WWW-Authenticate: Digest realm="testrealm@host.com", qop="auth,auth-int", nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093", opaque="5ccc069c403ebaf9f0171e9517f40e41"
Protokollierung des Zustellungsstatus einrichten
Gehe wie folgt vor:
- Richte Zustellungsstatusprotokolle für dein SNS-Thema ein.
- Zeige die Protokolldaten für die Übermittlung deiner SNS-Abonnementbestätigungsbenachrichtigung an, die generiert wird, wenn du einen HTTP/HTTPS-Endpunkt abonnierst.
Beispiel für eine Fehlerprotokollausgabe:
sns/your_aws_region/your_account_ID/your_topic_name/Failure
Hinweis: Um zu sehen, warum deine Abonnementbestätigungsbenachrichtigung nicht zugestellt wurde, überprüfe das providerResponse-Attribut in den Amazon-CloudWatch-Zustellungsstatusprotokollen. Weitere Informationen findest du unter Gründe für Fehlschläge bei der SMS-Zustellung.
Überprüfen des SSL-Zertifikats für den HTTPS-Endpunkt
Wenn du einen HTTPS-Endpunkt verwendest, gehe bei der Problembehandlung wie folgt vor:
-
Vergewissere dich, dass das vom Endpunkt zurückgegebene SSL-Zertifikat gültig und von einer Zertifizierungsstelle signiert ist, der Amazon SNS vertraut.
-
Stelle sicher, dass der Endpunkt die gesamte Zertifikatskette zurückgibt. Die komplette Kette umfasst alle Zwischenzertifikate.
Hinweis: Du kannst Tools von Drittanbietern verwenden, um zu überprüfen, ob das von deinem Endpunkt zurückgegebene SSL-Zertifikat vertrauenswürdig und vollständig ist. Du kannst beispielsweise den SSL Server Test (SSL-Servertest) auf der SSL-Labs-Website verwenden. -
Führe den folgenden OpenSSL-Befehl aus, um zu überprüfen, ob das von deinem Endpunkt zurückgegebene SSL-Zertifikat vertrauenswürdig und vollständig ist:
openssl s_client -connect yourHostname:443 -servername yourHostname -showcertsBeispiel für eine fehlgeschlagene providerResponse für ein SSL-Zertifikat n CloudWatch-Protokollen:
{ "notification": { "messageId": "...", "topicArn": "arn:aws:sns:ap-northeast-1:***:***", "timestamp": "2021-05-12 06:41:20.778" }, "delivery": { "deliveryId": "***", "destination": "https://***", "providerResponse": "SSLPeerUnverifiedException in HttpClient", "dwellTimeMs": 66171, "attempts": 4 }, "status": "FAILURE" }
Prüfen, ob eine Firewall den HTTP/HTTPS-Endpunkt blockiert
Wenn eine Firewall die Zustellung der SNS-Abonnementbestätigungsbenachrichtigung an die HTTP/HTTPS-Endpunkte verhindert, lasse die regionsspezifischen IP-Adressen der AWS-Region zu.
Prüfen, ob der HTTP/HTTPS-Endpunkt über eine Abonnementfilterrichtlinie verfügt
Wenn sich der Endpunkt in einem abonnierten Status befindet, aber keine Themenbenachrichtigungen erhalten hat, überprüfe, ob für den Endpunkt eine Abonnementfilterrichtlinie konfiguriert ist. Wenn das HTTP/HTTPS-Abonnement über eine Filterrichtlinie verfügt, filtert die Richtlinie möglicherweise Benachrichtigungen.
Um dich zu vergewissern, dass deine SNS-Nachrichten gefiltert wurden, überprüfe die CloudWatch-Metriken NumberOfNotificationsFilteredOut, NumberOfNotificationsFilteredOut-InvalidAttributes und NumberOfNotificationsFilteredOut-NoMessageAttributes.
Weitere Informationen findest du unter How do I troubleshoot message filtering issues in Amazon SNS? (Wie behebe ich Probleme mit der Nachrichtenfilterung in Amazon SNS?)
- Themen
- Application Integration
- Sprache
- Deutsch

Relevanter Inhalt
AWS OFFICIALAktualisiert vor 3 Jahren
AWS OFFICIALAktualisiert vor 2 Jahren
AWS OFFICIALAktualisiert vor 10 Monaten