Pourquoi n'ai-je pas reçu de notification SNS pour mon déclencheur d'alarme CloudWatch ?

Date de la dernière mise à jour : 23/09/2020

J'ai créé une alarme Amazon CloudWatch pour envoyer des notifications via une rubrique Amazon Simple Notification Service (Amazon SNS) lorsque l'état de l'alarme change. Pourtant, l'alarme CloudWatch a effectivement changé d'état mais je n'ai pas reçu de notification SNS. Pourquoi n'ai-je pas reçu de notification SNS pour mon déclencheur d'alarme CloudWatch ?

Résolution

L'envoi des notifications SNS est fonction de la configuration de la rubrique SNS et de l'alarme CloudWatch. Pour savoir pourquoi vous ne recevez pas de notifications SNS comme prévu, cherchez à connaître le statut de l'action de déclenchement dans l'historique de l'alarme CloudWatch.

Si votre action de déclenchement a échoué en raison des restrictions de stratégie d'accès SNS :

  • L'historique de l'alarme CloudWatch affiche un message semblable à :
    Échec de l'exécution de l'action arn:aws:sns:<region>:<account-id>:<topic-name>. Erreur reçue : "Resource: arn:aws:cloudwatch:<region>:<account-id>:alarm:<alarm-name> is not authorized to perform: SNS:Publish on resource: arn:aws:sns:<region>:<account-id>:<topic-name>
  • SNS limite les sources habilitée à publier des messages dans la rubrique à l'aide de stratégies d'accès. Si une erreur d'autorisation se produit, les autorisations suivantes doivent être ajoutées dans la section « Statement » (Instruction) de la stratégie d'accès SNS. Cette mise à jour accorde des autorisations au service d'alarmes CloudWatch pour publier des messages dans la rubrique SNS.
    Remarque : remplacez <region> par la région à laquelle cette notification est destinée, <account-id> par votre ID de compte et <topic name> par le nom de rubrique SNS.
{
    "Sid": "Allow_Publish_Alarms",
    "Effect": "Allow",
    "Principal":
    {
        "Service": [
            "cloudwatch.amazonaws.com"
        ]
    },
    "Action": "sns:Publish",
    "Resource": "arn:aws:sns:<region>:<account-id>:<topic-name>"
}

Si votre action de déclenchement a échoué en raison du chiffrement de rubrique SNS :

  • L'historique de l'alarme CloudWatch affiche un message semblable à :
    Échec de l'exécution de l'action arn:aws:sns:<region>:<account-id>:<topic-name>. Erreur reçue : "null (Service: AWSKMS; Status Code: 400; Error Code: AccessDeniedException;)"
  • SNS autorise le chiffrement au repos pour sa rubrique. Les alarmes CloudWatch ne peuvent pas publier de messages dans la rubrique SNS si la clé AWS Key Management Service (KMS) par défaut « alias/aws/sns » est utilisée pour ce chiffrement. La stratégie de clé de la clé AWS KMS par défaut pour SNS n'autorise pas les alarmes CloudWatch à effectuer des appels d'API « kms:Decrypt » et «kms:GenerateDataKey». Cette clé est gérée par AWS. Par conséquent, vous ne pouvez pas modifier manuellement la stratégie.
  • Si la rubrique SNS doit être chiffrée au repos, vous pouvez utiliser une clé CMK gérée par le client. La clé CMK gérée par le client doit inclure les autorisations suivantes dans la section « Statement » (Instruction) de la stratégie de clé. Ces autorisations permettent aux alarmes CloudWatch de publier des messages dans des rubriques SNS chiffrées.
{
    "Sid": "Allow_CloudWatch_for_CMK",
    "Effect": "Allow",
    "Principal": {
        "Service":[
            "cloudwatch.amazonaws.com"
        ]
    },
    "Action": [
        "kms:Decrypt","kms:GenerateDataKey"
    ],
    "Resource": "*"
}

Si votre action de déclenchement a réussi :

  • L'historique de l'alarme CloudWatch affiche un message semblable à :
    Action arn:aws:sns:<region>:<account-id>:<topic-name> exécutée avec succès
  • Cela signifie que l'alarme CloudWatch a publié un message dans la rubrique SNS. Si la notification n'a pas été envoyée par SNS, vérifiez les échecs d'envoi dans la rubrique SNS et ses métriques. Consultez la page Comment résoudre les échecs de distribution de notification push Amazon SNS ? pour plus d'informations.

Remarque : CloudWatch ne teste pas ou ne valide pas les actions que vous spécifiez. Il ne détecte pas non plus les erreurs Amazon EC2 Auto Scaling ou Amazon SNS résultant d'une tentative d'appel d'actions inexistantes. Assurez-vous que vos actions existent.


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


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