Warum habe ich keine SNS-Benachrichtigung für meinen CloudWatch-Alarmauslöser erhalten?

Lesedauer: 4 Minute
0

Ich habe einen Amazon CloudWatch-Alarm erstellt, um über ein Amazon Simple Notification Service (Amazon SNS)-Thema Benachrichtigungen zu senden, wenn sich der Status des Alarms ändert. Wenn der CloudWatch-Alarm den Status ändert, erhalte ich jedoch keine SNS-Benachrichtigung.

Lösung

Die Zustellung von SNS-Benachrichtigungen hängt von der Konfiguration des SNS-Themas und des CloudWatch-Alarms ab. Um festzustellen, warum Sie keine SNS-Benachrichtigungen erhalten, überprüfen Sie den Verlauf des CloudWatch-Alarms, um den Status der Auslöseaktion einzusehen.

Wenn Ihre Auslöseaktion aufgrund von Einschränkungen der SNS-Zugriffsrichtlinie fehlgeschlagen ist, zeigt der CloudWatch-Alarmverlauf eine Meldung an, die der folgenden Meldung ähnelt:

„Die Aktion arn:aws:sns:us-east-1:ACCOUNT_ID:TOPIC_NAME konnte nicht ausgeführt werden. Empfangener Fehler: „Ressource: arn:aws:cloudwatch:us-east-1:ACCOUNT_ID:alarm:ALARM_NAME ist nicht autorisiert, Folgendes auszuführen: SNS:Publish on resource: arn:aws:sns:us-east-1:ACCOUNT_ID:TOPIC_NAME““

SNS schränkt die Quellen, die Nachrichten zum Thema veröffentlichen können, mithilfe von Zugriffsrichtlinien ein. Wenn ein Berechtigungsfehler auftritt, müssen Sie die folgenden Berechtigungen im Abschnitt Anweisung der SNS-Zugriffsrichtlinie hinzufügen. Dieses Update gewährt dem CloudWatch-Alarmdienst die Berechtigung, Nachrichten zum Thema SNS zu veröffentlichen.

Hinweis: Ersetzen Sie us-east-1 durch die AWS-Region, für die diese Benachrichtigung bestimmt ist. Ersetzen Sie ACCOUNT_ID durch Ihre Konto-ID. Ersetzen Sie TOPIC_NAME durch den SNS-Themennamen:

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

Mit diesen Berechtigungen kann jeder, der Ihr Konto verwendet, Alarme erstellen und Nachrichten zu Ihrem SNS-Thema veröffentlichen. Um die Möglichkeit, Nachrichten zum Thema zu veröffentlichen, auf bestimmte Alarme zu beschränken, fügen Sie globale Bedingungsschlüssel hinzu. Im folgenden Beispiel werden der ArnLike-Bedingungsoperator und der globale Bedingungsschlüssel aws:SourceArn verwendet. Weitere Informationen finden Sie unter Beispielfälle für die Amazon SNS-Zugriffskontrolle.

Hinweis: Hinweis: Ersetzen Sie us-east-1 durch die AWS-Region, für die diese Benachrichtigung bestimmt ist. Ersetzen Sie ACCOUNT_ID durch Ihre Konto-ID. Ersetzen Sie TOPIC_NAME durch den SNS-Themennamen. Ersetzen Sie ALARM_NAME durch den Alarmnamen:

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

Wenn Ihre Auslöseaktion aufgrund der SNS-Themenverschlüsselung fehlschlägt, zeigt der CloudWatch-Alarmverlauf eine Meldung an, die der folgenden Meldung ähnelt:

„Die Aktion arn:aws:sns:us-east-1:ACCOUNT_ID:TOPIC_NAME konnte nicht ausgeführt werden. Empfangener Fehler: „null (Service: AWSKMS; Statuscode: 400; Fehlercode: AccessDeniedException;)““

SNS erlaubt Verschlüsselung im Ruhezustand für sein Thema. Wenn SNS für diese Verschlüsselung den standardmäßigen AWS Key Management Service (AWS KMS)-Schlüssel alias/aws/sns verwendet, können CloudWatch-Alarme keine Nachrichten zum SNS-Thema veröffentlichen. Die standardmäßige Richtlinie des AWS-KMS-Schlüssels für SNS erlaubt es CloudWatch-Alarmen nicht, kms:Decrypt- und kms:GenerateDataKey-API-Aufrufe auszuführen. Da dieser Schlüssel von AWS verwaltet wird, können Sie die Richtlinie nicht manuell bearbeiten.

Wenn das SNS-Thema im Ruhezustand verschlüsselt werden muss, verwenden Sie einen vom Kunden verwalteten Schlüssel. Der vom Kunden verwaltete Schlüssel muss die folgenden Berechtigungen enthalten, die im Abschnitt Anweisung der Schlüsselrichtlinie aufgeführt sind. Diese Berechtigungen ermöglichen es den CloudWatch-Alarmen, Nachrichten zu verschlüsselten SNS-Themen zu veröffentlichen:

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

Wenn Ihre Auslöseaktion erfolgreich war, zeigt der CloudWatch-Alarmverlauf eine Meldung an, die der folgenden Meldung ähnelt:

„Die Aktion arn:aws:sns:us-east-1:ACCOUNT_ID:TOPIC_NAME wurde erfolgreich ausgeführt“

Dies bedeutet, dass der CloudWatch-Alarm erfolgreich eine Nachricht zum SNS-Thema veröffentlicht hat. Wenn die Benachrichtigung nicht von SNS zugestellt wurde, überprüfen Sie das SNS-Thema und die zugehörigen Metriken auf etwaige Zustellungsfehler. Weitere Informationen finden Sie unter Wie greife ich auf die Amazon SNS-Lieferprotokolle für Push-Benachrichtigungen zu?

Hinweis: CloudWatch testet oder validiert die von Ihnen angegebenen Aktionen nicht. Es erkennt auch keine Amazon EC2 Auto Scaling- oder Amazon SNS-Fehler, die auf den Versuch zurückzuführen sind, nicht existierende Aktionen aufzurufen. Stellen Sie sicher, dass Ihre Aktionen existieren.


Ähnliche Informationen

Amazon CloudWatch-Alarme verwenden

Verschlüsseln von auf Amazon SNS veröffentlichten Nachrichten mit AWS KMS

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr