Salta al contenuto

Perché il mio topic Amazon SNS non ha ricevuto notifiche di EventBridge?

4 minuti di lettura
0

Ho impostato una regola in Amazon EventBridge per inviare notifiche al mio topic Amazon Simple Notification Service (Amazon SNS). Tuttavia, il mio topic Amazon SNS non ha ricevuto le notifiche degli eventi.

Risoluzione

Verifica che le destinazioni della regola di EventBridge si trovino nella stessa Regione della regola

Le destinazioni che associ a una regola devono trovarsi nella stessa Regione AWS della regola.

Nota: per individuare la Regione in cui si trova una risorsa AWS, controlla il nome della risorsa Amazon (ARN).

Esamina le metriche "Invocations" e "FailedInvocations" della regola di EventBridge per individuare il problema

Utilizza la console Amazon CloudWatch per esaminare le metriche Invocations e FailedInvocations della regola di EventBridge.

Se sono presenti punti dati solo per la metrica Invocations, la notifica della regola di EventBridge non ha raggiunto la destinazione. Per risolvere il problema, riconfigura la regola per la destinazione.

Se sono presenti punti dati per entrambe le metriche, la notifica della regola di EventBridge ha tentato di invocare la destinazione, ma l'invocazione non è riuscita. Per risolvere il problema, assicurati che EventBridge abbia le autorizzazioni necessarie per pubblicare messaggi sul topic.

Verifica di aver concesso a EventBridge le autorizzazioni necessarie per pubblicare messaggi sul topic

La policy basata sulle risorse del topic SNS deve consentire a EventBridge di pubblicare messaggi sul topic. Controlla la policy AWS Identity and Access Management (AWS IAM) del topic per accertarti che abbia le autorizzazioni richieste.

Esempio di policy:

{    
    "Sid": "AWSEvents_ArticleEvent_Id4950650036948",
    "Effect": "Allow",
    "Principal": {
        "Service": "events.amazonaws.com"
    },
    "Action": "sns:Publish",
    "Resource": "SNS_TOPIC_ARN"
}

Importante: devi inserire events.amazonaws.com come valore per Service e sns:Publish come valore per Action. Sostituisci SNS_TOPIC_ARN con l'ARN del tuo topic.

Se utilizzi un ruolo di esecuzione, assicurati che il ruolo IAM associato alla regola di EventBridge sia corretto. Per verificare il ruolo IAM, apri la console EventBridge e scegli Regole. Seleziona la regola, quindi scegli Destinazione per visualizzare il ruolo IAM associato.

Verifica che il ruolo di esecuzione consenta a EventBridge di pubblicare sulla destinazione

Il ruolo di esecuzione richiede una relazione di attendibilità con EventBridge. Assicurati che la politica di attendibilità del ruolo includa events.amazonaws.com come entità attendibile per consentire a EventBridge di assumere il ruolo di esecuzione della destinazione. Inoltre, assicurati che il ruolo abbia l'autorizzazione per invocare il topic SNS con l'azione sts:AssumeRole.

Esempio di policy di attendibilità IAM:

{    
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "events.amazonaws.com"
            },
            "Action": "sts:AssumeRole",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "ACCOUNT-ID",
                    "aws:SourceArn": "EVENTBRIDGE-RULE-ARN"
                }
            }
        }
    ]
}

Nota: sostituisci ACCOUNT-ID con l'ID del tuo account AWS e EVENTBRIDGE_RULE_ARN con l'ARN della tua regola.

Esempio di autorizzazioni IAM:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "sns:Publish"
            ],
            "Resource": [
                "SNS_TOPIC_ARN"
            ]
        }
    ]
}

Nota: sostituisci SNS_TOPIC_ARN con l'ARN del tuo topic SNS.

Verifica che il topic abbia le autorizzazioni AWS KMS richieste

Se utilizzi la crittografia lato server (SSE), il topic deve utilizzare una chiave gestita dal cliente del Servizio AWS di gestione delle chiavi (AWS KMS). La chiave AWS KMS deve avere una policy della chiave personalizzata che consenta a EventBridge di utilizzarla.

Per configurare le autorizzazioni AWS KMS richieste, completa i seguenti passaggi:

  1. Crea una nuova chiave gestita dal cliente.
  2. Utilizza la chiave gestita dal cliente per configurare la crittografia lato server per il topic SNS.
  3. Configura una policy AWS KMS che consenta a EventBridge di pubblicare messaggi sul topic crittografato.
    Esempio di policy:
    {    
        "Sid": "Allow EventBridge to use the key",
        "Effect": "Allow",
        "Principal": {
            "Service": "events.amazonaws.com"
        },
        "Action": [
            "kms:Decrypt",
            "kms:GenerateDataKey"
        ],
        "Resource": "*"
    }