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

4 minuti di lettura
0

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

Soluzione

La consegna delle notifiche SNS dipende dalla configurazione dell'argomento SNS e dall'allarme di 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 di CloudWatch mostra un messaggio simile al seguente:

"Impossibile eseguire l'azione 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 limita le fonti che possono pubblicare messaggi all'argomento utilizzando le policy di accesso. Se si verifica un errore di autorizzazione, è necessario aggiungere le seguenti autorizzazioni nella sezione Dichiarazione della policy di accesso SNS. Questo aggiornamento concede al servizio di allarmi di CloudWatch le autorizzazioni per pubblicare messaggi sull'argomento SNS.

Nota: sostituisci us-east-1 con la regione AWS a cui si riferisce questa notifica. Sostituisci ACCOUNT_ID con l'ID del tuo account. Sostituisci TOPIC_NAME con il nome dell'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"
}

Queste autorizzazioni consentono a chiunque utilizzi il tuo account di creare allarmi e pubblicare messaggi sul tuo argomento SNS. Per limitare la possibilità di pubblicare messaggi sull'argomento in allarmi specifici, aggiungi le chiavi di condizione globali. L'esempio seguente utilizza l'operatore di condizione ArnLike e la chiave di condizione globale aws:SourceArn. Per ulteriori informazioni, consulta Casi di esempio per il controllo degli accessi Amazon SNS.

Nota: Nota: sostituisci us-east-1 con la regione AWS a cui si riferisce questa notifica. Sostituisci ACCOUNT_ID con l'ID del tuo account. Sostituisci TOPIC_NAME con il nome dell'argomento SNS. Sostituisci ALARM_NAME con il nome dell'allarme:

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

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

"Impossibile eseguire l'azione 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 AWS Key Management Service (AWS KMS) predefinito per questa crittografia, gli allarmi di 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é questa chiave è gestita da AWS, non puoi modificare manualmente la policy.

Se l'argomento SNS deve essere crittografato a riposo, 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 di 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 di CloudWatch mostra un messaggio simile al seguente:

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

Ciò 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 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 o convalida le azioni specificate. Inoltre, non rileva gli errori di dimensionamento automatico Amazon EC2 o 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

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa