Passer au contenu

Pourquoi n’ai-je pas reçu de notification Amazon SNS concernant mon déclencheur d’alerte CloudWatch ?

Lecture de 4 minute(s)
0

J’ai configuré une alarme Amazon CloudWatch pour envoyer des notifications à une rubrique Amazon Simple Notification Service (Amazon SNS) lorsque l’état de l’alarme change. Cependant, je ne reçois pas de notifications SNS lorsque l'état change.

Résolution

Pour déterminer pourquoi vous ne recevez pas de notifications SNS, consultez l’historique de l’alarme CloudWatch pour visualiser l’état de l’action de déclenchement.

Restrictions de la stratégie d’accès à SNS

Vous recevez un message d'erreur similaire au suivant dans l'historique des alarmes CloudWatch :

« Failed to execute action arn:aws:sns:us-east-1:ACCOUNT_ID:TOPIC_NAME. Erreur reçue : « CloudWatch Alarms is not authorized to perform: SNS:Publish on resource: arn:aws:sns:us-east-1:ACCOUNT_ID:TOPIC_NAME" »

Cette erreur se produit car la stratégie d'accès à SNS restreint l'accès de CloudWatch à la rubrique SNS.

Amazon SNS utilise des stratégies d'accès pour restreindre les services qui peuvent publier des messages sur la rubrique. Pour autoriser CloudWatch à publier des messages sur la rubrique SNS, ajoutez l’instruction d'autorisations suivante à la stratégie d'accès à 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"
}

Remarque : remplacez us-east-1 par la région AWS à laquelle la notification est destinée, ACCOUNT_ID par l’ID de votre compte AWS et TOPIC_NAME par le nom de la rubrique SNS.

Pour limiter la possibilité de publier des messages dans la rubrique pour des alarmes spécifiques, ajoutez des clés de condition globales. L’exemple de stratégie suivant utilise l'opérateur de condition ARNLike et la clé de condition globale aws:SourceArn.

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

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

Les alarmes qui se trouvent dans le compte inclus dans la condition peuvent être publiées dans la rubrique SNS de la ressource dans la stratégie. Par exemple, l’ID de compte du propriétaire de la ressource d’alarme peut être publié dans la rubrique. Limitez la stratégie au même compte pour le compte auquel appartient la rubrique SNS et pour le compte propriétaire de l’alarme.

Pour plus d'informations, consultez la section Exemples de cas pour le contrôle d'accès Amazon SNS.

Problèmes de chiffrement des rubriques SNS

Si votre action de déclenchement échoue en raison du chiffrement des rubriques SNS, l’historique des alarmes CloudWatch affiche un message d’erreur similaire au suivant :

« Failed to execute action arn:aws:sns:us-east-1:ACCOUNT_ID:TOPIC_NAME. Erreur reçue : « CloudWatch Alarms does not have authorization to access the SNS topic encryption key." »

Si vous avez configuré Amazon SNS pour utiliser la clé alias/aws/sns d'AWS Key Management Service (AWS KMS) par défaut pour le chiffrement côté serveur, CloudWatch ne peut pas publier dans la rubrique SNS. La stratégie de clé AWS KMS par défaut pour Amazon SNS n'autorise pas CloudWatch à effectuer des opérations d'API kms:Decrypt et kms:GenerateDataKey. Comme AWS gère cette clé, vous ne pouvez pas modifier la stratégie manuellement.

Si vous devez chiffrer la rubrique SNS au repos, utilisez une clé gérée par le client. La clé gérée par le client doit inclure l’instruction d'autorisations suivante dans la stratégie de clé :

{  "Sid": "Allow_CloudWatch_for_CMK",
  "Effect": "Allow",
  "Principal": {
    "Service": [
      "cloudwatch.amazonaws.com"
    ]
  },
  "Action": [
    "kms:Decrypt",
    "kms:GenerateDataKey*"
  ],
  "Resource": "*"
}

Exécution réussie

Si votre action de déclenchement réussit, l’historique des alarmes CloudWatch affiche un message similaire au suivant :

« Successfully executed action arn:aws:sns:us-east-1:ACCOUNT_ID:TOPIC_NAME »

Si vous ne recevez pas de notification SNS, consultez la rubrique SNS et ses métriques correspondantes aux échecs de diffusion. Pour plus d'informations, consultez la section Comment accéder aux journaux de diffusion des rubriques Amazon SNS pour les notifications push ?

CloudWatch ne teste ni ne valide les actions que vous spécifiez. CloudWatch ne détecte pas non plus les erreurs Amazon EC2 Auto Scaling ou Amazon SNS qui se produisent lorsque vous essayez d’invoquer des actions inexistantes. Assurez-vous que vos actions existent.

Informations connexes

Utilisation des alarmes Amazon CloudWatch

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

AWS OFFICIELA mis à jour il y a 6 mois