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

Date de la dernière mise à jour : 27/08/2021

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 relative à 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, cherchez à connaître l'état 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 à :
    Impossible d'exécuter l'action arn:aws:sns: : : . Erreur reçue : « Resource: arn:aws:cloudwatch: : :alarm: is not authorized to perform: SNS:Publish on resource: arn:aws:sns: : :  » (« Ressource : arn:aws:cloudwatch: : :alarm: n'est pas autorisé à effectuer SNS:Publish sur la ressource : arn:aws:sns: : :  »)
  • 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, alors 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 par la Région pour laquelle cette notification est destinée. Remplacez par votre ID de compte. Remplacez par le nom de la 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>"
}
Important : les autorisations précédentes permettent à toute personne qui utilise votre compte de créer des alarmes et de publier des messages dans 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 de condition arnLike et la clé de condition globale aws:SourceArn. Pour plus d'informations, consultez Exemples de cas pour le contrôle d'accès à Amazon SNS.

Remarque : remplacez par la Région pour laquelle cette notification est destinée. Remplacez par votre ID de compte. Remplacez par le nom de la rubrique SNS. Remplacez par le nom de l'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:<region>:<account-id>:alarm:<alarm-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 à :
    Impossible d'exécuter l'action arn:aws:sns: : : . 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, 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 « Statement » (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, alors :

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.


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


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