Comment obtenir mon abonnement Amazon SQS pour recevoir une notification de ma rubrique Amazon SNS ?

Dernière mise à jour : 08/07/2021

Mon abonnement Amazon Simple Queue Service (Amazon SQS) ne recevra pas de notification de ma rubrique Amazon Simple Notification Service (Amazon SNS).

Brève description

Avant toute chose, configurez la journalisation de l’état de remise d’Amazon CloudWatch pour votre rubrique SNS. Pour plus d'informations, consultez la section Surveillance des rubriques Amazon SNS avec CloudWatch.

Essayez les étapes de dépannage suivantes :

Résolution

Configurer la stratégie d'accès de votre file d'attente SQS pour permettre à Amazon SNS d'envoyer des messages

Pour afficher la stratégie d'accès de votre file d'attente SQS, configurez votre stratégie d'accès.

Si la stratégie d'accès de votre file d'attente SQS n'inclut pas l'action sqs:SendMessage pour votre rubrique SNS, mettez à jour votre stratégie avec les autorisations appropriées. Les autorisations doivent permettre à Amazon SNS d'envoyer des messages à la file d'attente SQS.

Configurez votre stratégie de clé AWS KMS pour qu'elle fonctionne avec le chiffrement côté serveur sur votre file d'attente SQS

Si le chiffrement côté serveur est activé sur votre file d'attente SQS, procédez comme suit :

1.    Activez l'état de la clé AWS KMS.

2.    Vérifiez que votre file d'attente SQS utilise une clé gérée par le client. La clé KMS doit disposer d'une politique de clé AWS Key Management Service (AWS KMS) qui octroie les autorisations à Amazon SNS.

Pour permettre à la source d'événements SNS d'effectuer des actions kms:GenerateDataKey et kms:Decrypt API, ajoutez l'instruction suivante à la politique de clé KMS :

{
    "Sid": "Allow Amazon SNS to use this key",
    "Effect": "Allow",
    "Principal": {
        "Service": "sns.amazonaws.com"
   
    },
    "Action": [
        "kms:Decrypt",
        "kms:GenerateDataKey*"
    ],
    "Resource": "*"
}

Si la politique de clé KMS n'est pas configurée, les journaux d'état de remise des messages Amazon SNS affichent l'erreur KMS.AccessDeniedException suivante :

{
    "notification": {
        "messageMD5Sum": "1234567890abcdefghijklmnopqrstu0",
        "messageId": "abcdef01-gh23-4i5j-678k-90l23m45nopq",
       
    "topicArn": "arn:aws:sns:us-east-1:111111111111:sns",
        "timestamp": "2021-06-17 17:08:10.299"
    },
    "delivery": {
        "deliveryId": "12a3b4c5-6789-0de1-fgh2-ij34k56lmn78",
        "destination": "arn:aws:sqs:us-east-1:111111111111:sns-sqs",
        "providerResponse": "{\"ErrorCode\":\"KMS.AccessDeniedException\",\"ErrorMessage\":\"null
    (Service: AWSKMS; Status Code: 400; Error Code: AccessDeniedException; Request ID: 12a345b6-7c89-0d1e-2f34-5gh67i8kl901; Proxy: null)\",\"sqsRequestId\":\"Unrecoverable\"}",
        "dwellTimeMs": 60,
       
    "attempts": 1,
        "statusCode": 400
    },
    "status": "FAILURE"
} 

Vérifiez que la stratégie de filtrage de la file d'attente SQS abonnée correspond au message envoyé depuis la rubrique SNS.

Vérifiez la métrique NumberOfNotificationsFilteredOut dans vos métriques CloudWatch pour Amazon SNS.

Les requêtes Publish effectuées par l'entité AWS Identity and Access Management (IAM) appelant votre fonction peuvent apparaître dans la métrique NumberOfNotificationsFilteredOut. Dans ce scénario, vérifiez la stratégie de filtrage des abonnements aux rubriques SNS de votre file d'attente SQS :

1.    Ouvrez la console Amazon SNS.

2.    Dans le panneau de navigation, choisissez Subscriptions (Abonnements).

3.    Sélectionnez votre abonnement, puis choisissez Edit (Modifier).

4.    Développez la section Subscription filter policy (Stratégie de filtrage des abonnements).

5.    Dans la stratégie de filtrage des abonnements, confirmez que les attributs des messages de la requête Publish correspondent aux attributs requis par la stratégie de filtrage. Si les attributs ne correspondent pas, mettez à jour les attributs des messages de la requête Publish selon ceux requis par la stratégie de filtrage.

Remarque : pour plus d'informations, consultez la section Stratégies de filtrage des abonnements Amazon SNS.

6.    Sélectionnez Save changes (Enregistrer les modifications).

Dépannage des problèmes de remise de messages bruts

Si vous avez activé la remise de messages bruts pour votre abonnement à la file d'attente SQS, vérifiez que vous n'envoyez pas plus de 10 attributs de message dans la notification.

Amazon SNS mappe les attributs de message pour les messages bruts pouvant être remis aux attributs de message SQS. Si vous utilisez plus de 10 attributs de message, la remise de la notification échoue et vos journaux d'état de remise affichent les erreurs suivantes :

{
    "notification": {
        "messageMD5Sum": "5c10d6c5d7f246fc3fb85334b4ed55ca",
        "messageId": "50f51b06-ee71-56fc-b657-424391902ee7",
       
    "topicArn": "arn:aws:sns:us-east-1:111111111111:sns",
        "timestamp": "2021-06-17 16:51:45.468"
    },
    "delivery": {
        "deliveryId":
    "36b3ee88-bc85-5587-b2af-b7cdc3644e07",
    
        "destination": "arn:aws:sqs:us-east-1:111111111111:sns-sqs",
        "providerResponse": "{\"ErrorCode\":\"InvalidParameterValue\",\"ErrorMessage\":\"Number of message
    attributes [SENT DURING PUBLISH] exceeds the allowed maximum [10].\",\"sqsRequestId\":\"Unrecoverable\"}",
        "dwellTimeMs": 44,
        "attempts": 1,
       
    "statusCode": 400
    },
    "status": "FAILURE"
}

Dépannage de la déduplication des messages avec remise de notifications pour les rubriques SNS FIFO

Les rubriques SNS FIFO ordonnent et dédupliquent les messages. Si une notification pour un ID de déduplication est envoyée à une rubrique FIFO SNS, tout message publié avec cet ID dans l'intervalle de déduplication de cinq minutes est accepté, mais non remis.

Vous pouvez configurer l'ID de déduplication dans l'opération Publish API. L’ID de déduplication est calculé par la rubrique FIFO en fonction du corps du message si la déduplication basée sur le contenu est activée pour la rubrique FIFO SNS.

La rubrique SNS FIFO continue de suivre l'ID de déduplication du message, même après la remise du message aux points de terminaison abonnés.

Pour plus d'informations, consultez la section Déduplication des messages pour les rubriques FIFO.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?