En utilisant AWS re:Post, vous acceptez les AWS re:Post Conditions d’utilisation

Comment résoudre les problèmes liés à l'abonnement d'un point de terminaison HTTP(S) à ma rubrique Amazon SNS ?

Lecture de 5 minute(s)
0

Je ne peux pas recevoir de notification de confirmation d'abonnement lorsque j'abonne mon point de terminaison HTTP ou HTTPS à une rubrique Amazon Simple Notification Service (Amazon SNS).

Résolution

Avant d'abonner votre point de terminaison HTTP(S) à une rubrique SNS, vous devez vérifier que le point de terminaison HTTP(S) est prêt à traiter les messages Amazon SNS.

Remarque : les étapes suivantes sont également valables pour les scénarios dans lesquels votre abonnement HTTP(S) est passé à l'état confirmé, mais vous ne recevez toujours pas de notifications.

Vérifiez que votre point de terminaison HTTP(S) est accessible au public avant de vous abonner à une rubrique SNS

Amazon SNS ne prend pas en charge les points de terminaison HTTP(S) privés. Amazon SNS envoie une requête HTTP POST à votre point de terminaison via l'Internet public lorsque vous abonnez un point de terminaison HTTP(S) à une rubrique SNS. Pour en savoir plus et obtenir des exemples de requêtes POST, consultez la page Analyse des formats des messages.

Pour vérifier si votre point de terminaison est accessible au public, envoyez un échantillon de requête POST depuis votre machine locale. Exemple :

curl -X POST your_HTTPS_endpoint -H "Content-Type:text/plain; charset=UTF-8" --data {"x":"y"} -v

Si votre point de terminaison est accessible au public, la commande renvoie le code d'état HTTP suivant :

200 OK

Si vous abonnez un point de terminaison HTTP qui n'est pas accessible au public à une rubrique SNS, le message d'erreur suivant s'affiche :

An error occurred (InvalidParameter) when calling the Subscribe operation: Invalid parameter: Unreachable Endpoint

Important : votre nom d'hôte ne doit pas contenir de trait de soulignement. Par exemple, le nom d'hôte suivant n'est pas autorisé : your_hostname

Validez l'en-tête de réponse de votre point de terminaison

Effectuez les opérations suivantes en fonction du type d'authentification que vous utilisez, qu’il s’agisse d’une authentification d'accès de base ou abrégée. Vérifiez que votre point de terminaison est bien de type « https » et qu'il prend en charge la réponse d'en-tête HTTP/1.1 401 Unauthorized.

Authentification d'accès de base :

Lorsque votre point de terminaison reçoit une demande non authentifiée, il renvoie la réponse d'en-tête HTTP/1.1 401 Unauthorized avec l’en-tête « WWW-Authenticate ». La valeur d'en-tête doit contenir le mot clé « Basic » et d'autres paramètres facultatifs pris en charge par RFC 2617 (du site Web de RFC Editor). Exemple :

WWW-Authenticate: Basic

Authentification d'accès abrégée :

Lorsque votre point de terminaison reçoit une demande non authentifiée, il renvoie une réponse d'en-tête HTTP/1.1 401 Unauthorized avec l’en-tête « WWW-Authenticate ». La valeur d'en-tête doit contenir les éléments suivants :

  • le mot clé « Digest »
  • une valeur à usage unique générée aléatoirement, appelée « nonce »
  • un domaine d'authentification
  • d’autres paramètres facultatifs pris en charge par RFC 2617 (du site Web de RFC Editor)

Exemple :

WWW-Authenticate: Digest realm="testrealm@host.com",
                        qop="auth,auth-int",
                        nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093",
                        opaque="5ccc069c403ebaf9f0171e9517f40e41"

Configurez la journalisation de l'état de distribution

Procédez comme suit :

  1. Configurez des journaux d’état de distribution pour votre rubrique SNS.
  2. Consultez les données du journal liées à l'envoi de votre notification de confirmation d'abonnement SNS qui est générée lorsque vous tentez d’abonner un point de terminaison HTTP(S).

Les journaux des événements d’échec, le cas échéant, sont générés dans un groupe de journaux au format suivant :

sns/your_aws_region/your_account_ID/your_topic_name/Failure

**Remarque :**Pour savoir pourquoi votre notification de confirmation d'abonnement n'a pas été envoyée, consultez l’élément providerResponse dans vos journaux d'état de distribution Amazon CloudWatch.

Vérifiez le certificat SSL de votre point de terminaison HTTPS

Si vous utilisez un point de terminaison HTTPS, suivez ces étapes :

  1. Vérifiez que le certificat SSL renvoyé par le point de terminaison est valide et signé par une autorité de certification approuvée par Amazon SNS.

  2. Vérifiez que votre point de terminaison renvoie la chaîne complète de certificats. La chaîne complète comprend tous les certificats intermédiaires.

    Remarque : vous pouvez utiliser des outils tiers pour vérifier si le certificat SSL renvoyé par votre point de terminaison est fiable et complet. Par exemple, vous pouvez utiliser SSL Server Test, disponible sur le site Web de SSL Labs.

    Alternativement, si vous souhaitez vérifier si le certificat SSL renvoyé par votre point de terminaison est fiable et complet, exécutez la commande OpenSSL suivante :

    openssl s_client -connect yourHostname:443 -servername yourHostname -showcerts

    Si le certificat SSL renvoyé par le point de terminaison n'est pas fiable ou complet, l’élément providerResponse suivant peut apparaître dans vos journaux CloudWatch :

    {
        "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"
    }

Vérifiez si un pare-feu bloque votre point de terminaison HTTP(S)

Si un pare-feu empêche l'envoi de la notification de confirmation d'abonnement de vos points de terminaison HTTP(S) à SNS, autorisez les adresses IP pour une région AWS spécifique.

Vérifiez si votre point de terminaison HTTP(S) dispose d'une politique de filtrage des abonnements

Si votre point de terminaison indique l’état abonné mais ne reçoit pas de notifications de rubrique, procédez comme suit :

  1. Vérifiez si une politique de filtrage d'abonnement est configurée pour votre point de terminaison. Si votre abonnement HTTP(S) comporte une politique de filtrage, il est possible que les notifications soient filtrées.
  2. Pour savoir si vos messages SNS sont filtrés, consultez les métriques CloudWatch suivantes : NumberOfNotificationsFilteredOut, NumberOfNotificationsFilteredOut-InvalidAttributes et NumberOfNotificationsFilteredOut-NoMessageAttributes.
AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an