Perché non ho ricevuto una notifica da Amazon SNS per l'attivazione del mio allarme in CloudWatch?
Ho configurato un allarme in Amazon CloudWatch per inviare notifiche a un topic Amazon Simple Notification Service (Amazon SNS) quando lo stato dell'allarme cambia, ma non ricevo notifiche SNS quando lo stato cambia.
Risoluzione
Per determinare il motivo per cui non ricevi notifiche da SNS, visualizza lo stato dell'azione di attivazione controllando la cronologia dell'allarme in CloudWatch.
Restrizioni della policy di accesso di SNS
Nella cronologia dell'allarme in CloudWatch ricevi un messaggio di errore simile al seguente:
"Failed to execute action arn:aws:sns:us-east-1:ACCOUNT_ID:TOPIC_NAME. Received error: "CloudWatch Alarms is not authorized to perform: SNS:Publish on resource: arn:aws:sns:us-east-1:ACCOUNT_ID:TOPIC_NAME""
L'errore si verifica perché la policy di accesso di SNS limita l'accesso di CloudWatch al topic SNS.
Amazon SNS utilizza le policy di accesso per limitare i servizi che possono pubblicare messaggi sul topic. Per concedere a CloudWatch le autorizzazioni per pubblicare messaggi sul topic SNS, aggiungi la seguente istruzione di autorizzazione alla policy di accesso di 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" }
Nota: sostituisci us-east-1 con la regione AWS a cui è destinata la notifica, ACCOUNT_ID con l'ID del tuo account AWS e TOPIC_NAME con il nome dell'argomento SNS.
Per limitare la possibilità di pubblicare messaggi sul topic per allarmi specifici, aggiungi chiavi di condizione globali. Il seguente esempio di policy utilizza l'operatore di condizione ArnLike e la chiave di condizione 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" } } }
Nota: sostituisci us-east-1 con la regione a cui è destinata la notifica, ACCOUNT_ID con l'ID del tuo account, TOPIC_NAME con il nome dell'argomento SNS e ALARM_NAME con il nome dell'allarme.
Gli allarmi nell'account incluso nella condizione possono essere pubblicati sul topic SNS della risorsa nella policy. Ad esempio, l'ID dell'account proprietario della risorsa con l’allarme può essere pubblicato sul topic. Limita la policy allo stesso account sia per l'ID dell'account proprietario del topic SNS che per l'ID dell'account proprietario dell'allarme.
Per ulteriori informazioni, consulta Esempi di casi per il controllo degli accessi di Amazon SNS.
Problemi di crittografia del topic SNS
Se l'azione di attivazione non riesce a causa della crittografia del topic SNS, nella cronologia dell'allarme di CloudWatch viene visualizzato un messaggio di errore simile al seguente:
"Failed to execute action arn:aws:sns:us-east-1:ACCOUNT_ID:TOPIC_NAME. Received error: "CloudWatch Alarms does not have authorization to access the SNS topic encryption key.""
Se hai configurato Amazon SNS per utilizzare la chiave alias/aws/sns del Servizio AWS di gestione delle chiavi (AWS KMS) predefinita per la crittografia lato server, CloudWatch non può pubblicare sul topic SNS. La policy della chiave AWS KMS predefinita per SNS non consente a CloudWatch di eseguire le operazioni API kms:Decrypt e kms:GenerateDataKey. Poiché AWS gestisce questa chiave, non puoi modificare manualmente la policy.
Se devi crittografare il topic SNS inattivo, utilizza una chiave gestita dal cliente. La chiave gestita dal cliente deve includere la seguente istruzione di autorizzazione nella policy della chiave:
{ "Sid": "Allow_CloudWatch_for_CMK", "Effect": "Allow", "Principal": { "Service": [ "cloudwatch.amazonaws.com" ] }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey*" ], "Resource": "*" }
Esecuzione riuscita
Se l'azione di attivazione è andata a buon fine, la cronologia dell'allarme di CloudWatch mostra un messaggio simile al seguente:
"Successfully executed action arn:aws:sns:us-east-1:ACCOUNT_ID:TOPIC_NAME"
Se non ricevi una notifica da SNS, controlla il topic SNS e le relative metriche alla ricerca di errori di consegna. Per ulteriori informazioni, consulta Come posso accedere ai log delle consegne dei topic di Amazon SNS per le notifiche push?
CloudWatch non verifica né convalida le azioni specificate. Inoltre, Cloudwatch non rileva gli errori di Amazon EC2 Auto Scaling o di Amazon SNS derivanti da un tentativo di invocazione di azioni inesistenti. Assicurati che le azioni esistano.
Informazioni correlate
Using Amazon CloudWatch alarms (Utilizzo degli allarmi Amazon CloudWatch)
Encrypting messages published to Amazon SNS with AWS KMS (Crittografia dei messaggi pubblicati in Amazon SNS con AWS KMS)
- Argomenti
- Management & Governance
- Lingua
- Italiano
Video correlati

