Perché non ho ricevuto una notifica SNS per l'attivazione del mio allarme CloudWatch?

4 minuti di lettura
0

Ho creato un allarme Amazon CloudWatch per inviare notifiche per un argomento di Amazon Simple Notification Service (Amazon SNS) al cambiamento di stato dell’allarme. Tuttavia, quando l'allarme CloudWatch cambia stato, non ricevo alcuna notifica SNS.

Risoluzione

La consegna delle notifiche SNS dipende dalla configurazione dell'argomento SNS e dall'allarme CloudWatch. Per determinare il motivo per cui non ricevi notifiche SNS, controlla la cronologia degli allarmi di CloudWatch per vedere lo stato dell'azione di attivazione.

Se l'azione di attivazione non è andata a buon fine a causa delle restrizioni della policy di accesso SNS, la cronologia degli allarmi CloudWatch mostra un messaggio simile al seguente:

"Impossibile eseguire l'operazione arn:aws:sns:us-east-1:ACCOUNT_ID:TOPIC_NAME. Errore ricevuto: "La risorsa: arn:aws:cloudwatch:us-east-1:ACCOUNT_ID:alarm:ALARM_NAME non è autorizzata a eseguire: SNS:Publish on resource: arn:aws:sns:us-east-1:ACCOUNT_ID:TOPIC_NAME""

SNS utilizza le policy di accesso per limitare le fonti che possono pubblicare messaggi sull'argomento. Se si verifica un errore di autorizzazione, aggiungi le seguenti autorizzazioni nella sezione Dichiarazione della policy di accesso SNS. Questo aggiornamento della policy concede al servizio di allarmi di CloudWatch le autorizzazioni per pubblicare messaggi sull'argomento 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 e TOPIC_NAME con il nome dell'argomento SNS.

Per limitare la possibilità di pubblicare messaggi sull'argomento per allarmi specifici, aggiungi le chiavi di condizione globali. La seguente policy di esempio utilizza l'operatore di condizione ArnLike e la chiave di condizione globale aws:SourceArn. Per ulteriori informazioni, consulta Example cases for Amazon SNS access control.

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

Importante: qualsiasi allarme nell'account incluso nella condizione può essere pubblicato sull'argomento SNS della risorsa nella policy. Ad esempio, l'ID dell'account del proprietario della risorsa con l’allarme può essere pubblicato sull'argomento. Limitare la policy allo stesso account sia per l'ID dell'account dell'argomento SNS che per l'ID dell'account del proprietario dell'allarme.

Se l'azione di attivazione fallisce a causa della crittografia dell'argomento SNS, nella cronologia degli allarmi CloudWatch viene visualizzato un messaggio simile al seguente:

"Impossibile eseguire l'operazione arn:aws:sns:us-east-1:ACCOUNT_ID:TOPIC_NAME. Errore ricevuto: "null (Service: AWSKMS; Status Code: 400; Error Code: AccessDeniedException;)""

SNS consente la crittografia dei dati inattivi per il suo argomento. Se SNS utilizza l'alias/aws/sns della chiave predefinita del servizio AWS di gestione delle chiavi (AWS KMS) per questa crittografia, gli allarmi CloudWatch non possono pubblicare messaggi sull'argomento SNS. La policy predefinita della chiave AWS KMS per SNS non consente agli allarmi CloudWatch di eseguire chiamate alle API kms:Decrypt e kms:GenerateDataKey. Poiché AWS gestisce questa chiave, non è possibile modificare manualmente la policy.
Se occorre crittografare l'argomento SNS inattivo, utilizza una chiave gestita dal cliente. La chiave gestita dal cliente deve includere le seguenti autorizzazioni nella sezione Dichiarazione della policy della chiave. Queste autorizzazioni consentono agli allarmi CloudWatch di pubblicare messaggi su argomenti SNS crittografati:

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

Se l'azione di attivazione è andata a buon fine, la cronologia degli allarmi CloudWatch mostra un messaggio simile al seguente:

"Azione eseguita correttamente arn:aws:snss:us-east-1:ACCOUNT_ID:TOPIC_NAME"

Il messaggio sopra riportato significa che l'allarme CloudWatch ha pubblicato correttamente un messaggio sull'argomento SNS. Se la notifica non è stata recapitata da SNS, controlla l'argomento SNS e le relative metriche per verificare la presenza di eventuali errori di consegna. Per ulteriori informazioni, consulta Come posso accedere ai log di consegna degli argomenti di Amazon SNS per le notifiche push?

Nota: CloudWatch non testa né convalida le azioni specificate. Inoltre, Cloudwatch non rileva gli errori Amazon EC2 Auto Scaling o gli errori Amazon SNS derivanti da un tentativo di richiamare azioni inesistenti. Assicurati che le tue azioni esistano.

Informazioni correlate

Utilizzo degli allarmi Amazon CloudWatch

Crittografia dei messaggi pubblicati su Amazon SNS con AWS KMS