Direkt zum Inhalt

Warum hat mein Amazon-SNS-Thema die EventBridge-Benachrichtigungen nicht erhalten?

Lesedauer: 3 Minute
0

Ich habe eine Amazon-EventBridge-Regel eingerichtet, um Benachrichtigungen an mein Amazon Simple Notification Service (Amazon SNS)-Thema zu senden. Mein Amazon-SNS-Thema hat die Ereignisbenachrichtigungen jedoch nicht erhalten.

Lösung

Sicherstellen, dass sich die Ziele der EventBridge-Regel in derselben Region wie die Regel befinden

Die Ziele, die du einer Regel zuordnest, müssen sich in derselben AWS-Region wie die Regel befinden.

Hinweis: Um die Region zu ermitteln, in der sich eine AWS-Ressource befindet, überprüfe den Amazon-Ressourcennamen (ARN) der Ressource.

Die Metriken „Invocations“ und „FailedInvocations“ der EventBridge-Regel prüfen, um das Problem zu ermitteln

Verwende die Amazon-CloudWatch-Konsole, um die Metriken Invocations und FailedInvocations der EventBridge-Regel zu überprüfen.

Wenn es nur Datenpunkte für die Invocations-Metrik gibt, hat die EventBridge-Regelbenachrichtigung das Ziel nicht erreicht. Konfiguriere die Regel für das Ziel neu, um das Problem zu beheben.

Wenn es Datenpunkte für beide Metriken gibt, hat die EventBridge-Regelbenachrichtigung versucht, das Ziel aufzurufen, aber der Aufruf ist fehlgeschlagen. Um dieses Problem zu beheben, stelle sicher, dass EventBridge über die erforderlichen Berechtigungen zum Veröffentlichen von Nachrichten in deinem Thema verfügt.

Sich vergewissern, dass du EventBridge die erforderlichen Berechtigungen zum Veröffentlichen von Nachrichten im Thema erteilt hast

Die ressourcenbasierte Richtlinie des Amazon-SNS-Themas muss es EventBridge erlauben, Nachrichten im Thema zu veröffentlichen. Überprüfe die AWS Identity and Access Management (IAM)-Richtlinie des Themas, um dich zu vergewissern, dass sie über die erforderlichen Berechtigungen verfügt.

Beispiel für eine Richtlinie:

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

Wichtig: Du musst events.amazonaws.com als Service-Wert und sns:Publish als Aktion-Wert eingeben. Ersetze SNS_TOPIC_ARN durch den ARN deines Themas.

Wenn du eine Ausführungsrolle verwendest, stelle sicher, dass die IAM-Rolle, die an die EventBridge-Regel angefügt ist, korrekt ist. Um die IAM-Rolle zu überprüfen, öffne die EventBridge-Konsole und wähle dann Regeln. Wähle die Regel und dann Ziele aus, um die angefügte IAM-Rolle anzuzeigen.

Sicherstellen, dass die Ausführungsrolle EventBridge die Veröffentlichung auf dem Ziel ermöglicht

Die Ausführungsrolle erfordert eine Vertrauensbeziehung mit EventBridge. Stelle sicher, dass die Vertrauensrichtlinie der Rolle events.amazonaws.com als vertrauenswürdige Entität einbezieht, damit EventBridge die Ausführungsrolle des Ziels übernehmen kann. Stelle außerdem sicher, dass die Rolle die Berechtigung hat, das SNS-Thema mit der Aktion sts:AssumeRole aufzurufen.

Beispiel für eine IAM-Vertrauensrichtlinie:

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

Hinweis: Ersetze ACCOUNT-ID durch deine AWS-Konto-ID und EVENTBRIDGE_RULE_ARN durch den ARN deiner Regel.

Beispiel für IAM-Berechtigungen:

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

Hinweis: Ersetze SNS_TOPIC_ARN durch den ARN des SNS-Themas.

Sich vergewissern, dass das Thema über die erforderlichen AWS-KMS-Berechtigungen verfügt

Wenn du die serverseitige Verschlüsselung (SSE) verwendest, muss das Thema einen vom Kunden verwalteten Schlüssel von AWS Key Management Service (AWS KMS) verwenden. Dieser AWS-KMS-Schlüssel muss über eine benutzerdefinierte Schlüsselrichtlinie verfügen, die es EventBridge ermöglicht, den Schlüssel zu verwenden.

Gehe wie folgt vor, um die erforderlichen AWS-KMS-Berechtigungen einzurichten:

  1. Erstelle einen neuen vom Kunden verwalteten Schlüssel.
  2. Verwende den vom Kunden verwalteten Schlüssel, um SSE für das SNS-Thema zu konfigurieren.
  3. Konfiguriere eine AWS-KMS-Richtlinie, die es EventBridge ermöglicht, Nachrichten in deinem verschlüsselten Thema zu veröffentlichen.
    Beispiel für eine Richtlinie:
    {    
        "Sid": "Allow EventBridge to use the key",
        "Effect": "Allow",
        "Principal": {
            "Service": "events.amazonaws.com"
        },
        "Action": [
            "kms:Decrypt",
            "kms:GenerateDataKey"
        ],
        "Resource": "*"
    }