Étape 1 : Assurez-vous que votre terminal est prêt à traiter les SNS messages Amazon - Amazon Simple Notification Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Étape 1 : Assurez-vous que votre terminal est prêt à traiter les SNS messages Amazon

Avant d'inscrire votre HTTP ou votre point de HTTPS terminaison à un sujet, vous devez vous assurer que le HTTP point de HTTPS terminaison est en mesure de traiter les HTTP POST demandes qu'Amazon SNS utilise pour envoyer les messages de confirmation et de notification d'abonnement. Cela implique généralement de créer et de déployer une application Web (par exemple, un servlet Java si votre hôte de point de terminaison exécute Linux avec Apache et Tomcat) qui traite les HTTP demandes d'Amazon. SNS Lorsque vous abonnez un HTTP point de terminaison, Amazon lui SNS envoie une demande de confirmation d'abonnement. Votre terminal doit être prêt à recevoir et à traiter cette demande lorsque vous créez l'abonnement, car Amazon SNS envoie cette demande à ce moment-là. Amazon n'SNSenverra pas de notifications au terminal tant que vous n'aurez pas confirmé l'abonnement. Une fois que vous avez confirmé l'abonnement, Amazon SNS envoie des notifications au point de terminaison lorsqu'une action de publication est effectuée sur le sujet auquel vous êtes abonné.

Pour configurer votre point de terminaison pour le traitement des messages de notification et de confirmation d'abonnement
  1. Votre code doit lire les HTTP en-têtes des HTTP POST demandes qu'Amazon SNS envoie à votre terminal. Votre code doit rechercher le champ d'en-têtex-amz-sns-message-type, qui indique le type de message qu'Amazon vous SNS a envoyé. En regardant l'en-tête, vous pouvez déterminer le type de message sans avoir à analyser le corps de la HTTP demande. Vous devez traiter deux types de messages : SubscriptionConfirmation et Notification. Le message UnsubscribeConfirmation est utilisé uniquement lorsque l'abonnement est supprimé de la rubrique.

    Pour plus de détails sur l'HTTPen-tête, voirHTTP/HTTPSen-têtes. La HTTP POST demande suivante est un exemple de message de confirmation d'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. Votre code doit analyser le JSON document dans le corps de la HTTP POST demande et saisir le type de contenu text/plain pour lire les paires nom-valeur qui constituent le message Amazon. SNS Utilisez un JSON analyseur qui gère la conversion de la représentation échappée des caractères de contrôle en leurs valeurs de caractères (par exemple, en convertissant\nen ASCII caractère de nouvelle ligne). Vous pouvez utiliser un JSON analyseur existant tel que le JSONprocesseur Jackson ou écrire le vôtre. Pour que le texte des champs d'objet et de message soit valideJSON, Amazon SNS doit convertir certains caractères de contrôle en représentations échappées pouvant être incluses dans le JSON document. Lorsque vous recevez le JSON document dans le corps de la POST demande envoyée à votre terminal, vous devez reconvertir les caractères échappés à leurs valeurs de caractères d'origine si vous souhaitez obtenir une représentation exacte de l'objet original et des messages publiés dans le sujet. Cette opération est essentielle si vous souhaitez vérifier la signature d'une notification, car la signature utilise le message et l'objet dans leurs formats d'origine dans le cadre de la chaîne de connexion.

  3. Votre code doit vérifier l'authenticité d'une notification, d'une confirmation d'abonnement ou d'un message de confirmation de désabonnement envoyé par AmazonSNS. À l'aide des informations contenues dans le SNS message Amazon, votre terminal peut recréer la signature afin que vous puissiez vérifier le contenu du message en faisant correspondre votre signature à la signature SNS envoyée par Amazon avec le message. Pour plus d'informations sur la vérification de la signature d'un message, consultez la page Vérifier les signatures des SNS messages Amazon.

  4. En fonction du type spécifié par le champ d'en-têtex-amz-sns-message-type, votre code doit lire le JSON document contenu dans le corps de la HTTP demande et traiter le message. Vous trouverez ci-dessous les instructions permettant de traiter les deux principaux types de messages.

    SubscriptionConfirmation

    Lisez la valeur de SubscribeURL et visitez-laURL. Pour confirmer l'abonnement et commencer à recevoir des notifications sur le terminal, vous devez vous rendre sur le SubscribeURL URL (par exemple, en envoyant une HTTP GET demande auURL). Consultez l'exemple de HTTP demande présenté à l'étape précédente pour voir à quoi SubscribeURL cela ressemble. Pour plus d'informations sur le format du message SubscriptionConfirmation, consultez la page HTTP/JSONformat de confirmation HTTPS d'abonnement. Lorsque vous visitez leURL, vous recevrez une réponse qui ressemble au XML document suivant. Le document renvoie l'abonnement ARN pour le point de terminaison au sein de l'ConfirmSubscriptionResultélément.

    <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>

    Au lieu de visiter leSubscribeURL, vous pouvez confirmer l'abonnement à l'aide de l'ConfirmSubscriptionTokenaction en définissant la valeur correspondante dans le SubscriptionConfirmation message. Si vous souhaitez autoriser uniquement le propriétaire de la rubrique et le propriétaire de l'abonnement à désabonner le point de terminaison, appelez l'action ConfirmSubscription avec une signature AWS .

    Notification

    Lisez les valeurs de Subject et Message pour obtenir les informations de notification publiées dans la rubrique.

    Pour plus d'informations sur le format du message Notification, consultez la page HTTP/HTTPSen-têtes. La HTTP POST demande suivante est un exemple de message de notification envoyé au point de terminaison exemple.com.

    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. Assurez-vous que votre terminal répond au HTTP POST message d'Amazon SNS avec le code de statut approprié. La connexion expirera au bout de 15 secondes. Si votre terminal ne répond pas avant l'expiration de la connexion ou s'il renvoie un code d'état compris entre 200 et 4 xx, Amazon SNS considérera l'envoi du message comme une tentative infructueuse.

  6. Assurez-vous que votre code peut gérer les nouvelles tentatives de livraison de messages depuis AmazonSNS. Si Amazon SNS ne reçoit pas de réponse satisfaisante de la part de votre terminal, il tente de remettre le message à nouveau. Cela s'applique à tous les messages, notamment le message de confirmation d'abonnement. Par défaut, si la livraison initiale du message échoue, Amazon SNS tente jusqu'à trois tentatives avec un délai entre deux tentatives infructueuses fixé à 20 secondes.

    Note

    La demande de message expire après 15 secondes. Cela signifie que, si l'échec de livraison du message est dû à un délai d'expiration, Amazon SNS réessaie pendant environ 35 secondes après la précédente tentative de livraison. Vous pouvez définir une politique de livraison différente pour le point de terminaison.

    Amazon SNS utilise le champ x-amz-sns-message-id d'en-tête pour identifier de manière unique chaque message publié sur un SNS sujet Amazon. En comparant les IDs messages que vous avez traités avec les messages entrants, vous pouvez déterminer s'il s'agit d'une nouvelle tentative.

  7. Si vous abonnez un HTTPS point de terminaison, assurez-vous que celui-ci possède un certificat de serveur délivré par une autorité de certification (CA) fiable. Amazon SNS enverra des messages uniquement aux HTTPS points de terminaison dotés d'un certificat de serveur signé par une autorité de certification approuvée par AmazonSNS.

  8. Déployez le code que vous avez créé pour recevoir SNS les messages Amazon. Lorsque vous abonnez le point de terminaison, il doit être prêt à recevoir au moins le message de confirmation d'abonnement.