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

Lecture de 4 minute(s)
0

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. Je ne reçois toutefois aucune notification SNS lorsque l'alarme CloudWatch change d'état.

Résolution

L'envoi des notifications SNS dépend de la configuration de la rubrique SNS et de l'alarme CloudWatch. Pour identifier la raison pour laquelle vous ne recevez pas de notifications SNS, consultez l'historique de l'alarme CloudWatch afin de connaître l'état de l'action de déclenchement.

Si votre action de déclenchement a échoué en raison de restrictions liées à la stratégie d'accès de SNS, l'historique des alarmes CloudWatch affiche un message du type :

« Échec de l'exécution de l'action arn:aws:sns:us-east-1:ACCOUNT_ID:TOPIC_NAME. Erreur reçue : "Ressource : arn:aws:cloudwatch:us-east-1:ACCOUNT_ID:alarm:ALARM_NAME n'est pas autorisé à effectuer l'action suivante : SNS:Publier sur la ressource : arn:aws:sns:us-east-1:ACCOUNT_ID:TOPIC_NAME" »

SNS limite les sources habilitées à 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 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 us-east-1 par la région AWS concernée par cette notification. Remplacez ACCOUNT_ID par l'ID de votre compte. Remplacez 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:us-east-1:ACCOUNT_ID:TOPIC_NAME"
}

Ces autorisations permettent à toute personne utilisant votre compte de créer des alarmes et de publier des messages sur votre rubrique SNS. Ajoutez des clés de condition globale pour limiter la possibilité de publier des messages dans la rubrique à des alarmes spécifiques. L'exemple suivant utilise l'opérateur conditionnel ArnLike et la clé de condition globale aws:SourceArn. Pour plus d'informations, reportez-vous à la rubrique Exemples de cas pour le contrôle d'accès à Amazon SNS.

Remarque : Remarque : remplacez us-east-1 par la région AWS pour laquelle cette notification est destinée. Remplacez ACCOUNT_ID par l'ID de votre compte. Remplacez TOPIC_NAME par le nom de rubrique SNS. Remplacez ALARM_NAME par le nom d'alarme :

{
  "Sid": "Allow_Publish_Alarms",
  "Effect": "Allow",
  "Principal": {
    "Service": [
      "cloudwatch.amazonaws.com"
    ]
  },
  "Action": "sns:Publish",
  "Resource": "arn:aws:sns:REGION:ACCOUNT_ID:TOPIC_NAME",
  "Condition": {
    "ArnLike": {
      "aws:SourceArn": "arn:aws:cloudwatch:us-east-1:ACCOUNT_ID:alarm:ALARM_NAME"
    }
  }
}

Si votre action de déclenchement échoue en raison du chiffrement des rubriques SNS, l'historique des alarmes CloudWatch affiche un message du type :

« Échec de l'exécution de l'action arn:aws:sns:us-east-1:ACCOUNT_ID:TOPIC_NAME. Erreur reçue : "null (Service : AWSKMS; code d'état : 400; code d'erreur : AccessDeniedException;)" »

SNS autorise le chiffrement au repos pour sa rubrique. Les alarmes CloudWatch ne peuvent pas publier de messages dans la rubrique SNS si SNS utilise la clé AWS Key Management Service (AWS KMS) par défaut alias/aws/sns pour ce chiffrement. La stratégie 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, vous ne pouvez donc pas modifier manuellement la politique.

Si la rubrique SNS doit être chiffrée au repos, vous pouvez utiliser une clé gérée par le client. La clé gérée par le client doit inclure les autorisations suivantes dans la section Instruction de la politique 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 des alarmes CloudWatch affiche un message du type :

« Action arn:aws:sns:us-east-1: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. Pour en savoir plus, reportez-vous à la section Comment accéder aux journaux de diffusion des rubriques Amazon SNS pour les notifications push ?

Remarque : CloudWatch ne teste ni ne valide 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.


Informations connexes

Utilisation des alarmes Amazon CloudWatch

Chiffrement des messages publiés dans Amazon SNS avec AWS KMS

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an