Benachrichtigen von Benutzern über Alarmänderungen - Amazon CloudWatch

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Benachrichtigen von Benutzern über Alarmänderungen

In diesem Abschnitt wird erklärt, wie Sie AWS Benutzerbenachrichtigungen oder Amazon Simple Notification Service verwenden können, um Benutzer über Alarmänderungen zu benachrichtigen.

AWS Benutzerbenachrichtigungen einrichten

Sie können AWS Benutzerbenachrichtigungen verwenden, um Zustellungskanäle einzurichten, über die Sie über Änderungen des CloudWatch Alarmstatus und über Änderungen der Konfiguration informiert werden. Sie erhalten eine Benachrichtigung, wenn ein Ereignis einer von Ihnen angegebenen Regel entspricht. Sie können Benachrichtigungen für Ereignisse über mehrere Kanäle erhalten, einschließlich E-Mail, AWS -Chatbot-Chat-Benachrichtigungen oder Push-Benachrichtigungen der mobilen AWS -Konsolenanwendung. Benachrichtigungen werden auch im Console Notifications Center angezeigt. Die Funktion für Benutzerbenachrichtigungen unterstützt eine Aggregation, wodurch die Anzahl der Benachrichtigungen, die Sie bei bestimmten Ereignissen erhalten, reduziert werden kann.

Die Benachrichtigungskonfigurationen, die Sie mit AWS Benutzerbenachrichtigungen erstellen, werden nicht auf die maximale Anzahl von Aktionen angerechnet, die Sie pro Zielalarmstatus konfigurieren können. Da AWS Benutzerbenachrichtigungen mit den an Amazon gesendeten Ereignissen übereinstimmen EventBridge, sendet Amazon Benachrichtigungen für alle Alarme in Ihrem Konto und ausgewählten Regionen, sofern Sie keinen erweiterten Filter angeben, um bestimmte Alarme oder Muster zuzulassen oder abzulehnen.

Das folgende Beispiel für einen erweiterten Filter entspricht einer Änderung des Alarmstatus von OK zu ALARM bei dem Alarm namens ServerCpuTooHigh.

{ "detail": { "alarmName": ["ServerCpuTooHigh"], "previousState": { "value": ["OK"] }, "state": { "value": ["ALARM"] } } }

Sie können alle Eigenschaften verwenden, die durch einen Alarm unter EventBridge Ereignisse veröffentlicht wurden, um einen Filter zu erstellen. Weitere Informationen finden Sie unter Alarmereignisse und EventBridge.

Einrichten von Amazon-SNS-Benachrichtigungen

Sie können Amazon Simple Notification Service verwenden, um sowohl application-to-application (A2A) als auch application-to-person (A2P) -Nachrichten zu senden, einschließlich mobiler Textnachrichten (SMS) und E-Mail-Nachrichten. Weitere Informationen finden Sie unter Amazon-SNS-Ereignisziele.

Für jeden Zustand, den ein Alarm annehmen kann, können Sie den Alarm so konfigurieren, dass er eine Nachricht an ein SNS-Thema sendet. Jedes Amazon-SNS-Thema, das Sie für einen Status eines bestimmten Alarms konfigurieren, zählt zur Begrenzung der Anzahl der Aktionen, die Sie für diesen Alarm und diesen Status konfigurieren können. Sie können Nachrichten an dasselbe Amazon-SNS-Thema von allen Alarmen in Ihrem Konto aus senden und dasselbe Amazon-SNS-Thema sowohl für Anwendungs- (A2A) als auch für Personenkunden (A2P) verwenden. Da diese Konfiguration auf Alarmebene vorgenommen wird, senden nur die von Ihnen konfigurierten Alarme Nachrichten an das ausgewählte Amazon-SNS-Thema.

Zunächst erstellen und abonnieren Sie ein Thema. Sie können optional eine Testnachricht für das Thema veröffentlichen. Ein Beispiel finden Sie unter Einrichten eines Amazon SNS SNS-Themas mit dem AWS Management Console. Weitere Informationen finden Sie auch unter Erste Schritte mit Amazon SNS.

Wenn Sie den AWS Management Console zur Erstellung Ihres CloudWatch Alarms verwenden möchten, können Sie dieses Verfahren alternativ überspringen, da Sie das Thema bei der Erstellung des Alarms erstellen können.

Wenn Sie einen CloudWatch Alarm erstellen, können Sie Aktionen für jeden Zielstatus hinzufügen, in den der Alarm eintritt. Fügen Sie eine Amazon-SNS-Benachrichtigung für den Status hinzu, über den Sie benachrichtigt werden möchten, und wählen Sie das Amazon-SNS-Thema, das Sie im vorherigen Schritt erstellt haben, um eine E-Mail-Benachrichtigung zu senden, wenn der Alarm in den ausgewählten Status eintritt.

Anmerkung

Wenn Sie ein Amazon SNS SNS-Thema erstellen, entscheiden Sie, ob Sie es zu einem Standardthema oder einem FIFO-Thema machen möchten. CloudWatch garantiert die Veröffentlichung aller Alarmmeldungen zu beiden Thementypen. Selbst wenn Sie ein FIFO-Thema verwenden, werden in seltenen Fällen die Benachrichtigungen CloudWatch an das Thema nicht in der richtigen Reihenfolge gesendet. Wenn Sie ein FIFO-Thema verwenden, legt der Alarm die Nachrichtengruppen-ID der Alarmbenachrichtigungen als Hash des ARN des Alarms fest.

Vermeidung verwirrender Sicherheitsprobleme bei Stellvertretern

Das Problem des verwirrten Stellvertreters ist ein Sicherheitsproblem, bei dem eine Entität, die keine Berechtigung zur Durchführung einer Aktion hat, eine privilegiertere Entität zur Durchführung der Aktion zwingen kann. In der AWS Tat kann ein dienstübergreifendes Identitätswechsels zu einem Problem mit verwirrten Stellvertretern führen. Ein dienstübergreifender Identitätswechsel kann auftreten, wenn ein Dienst (der Anruf-Dienst) einen anderen Dienst anruft (den aufgerufenen Dienst). Der aufrufende Service kann manipuliert werden, um seine Berechtigungen zu verwenden, um Aktionen auf die Ressourcen eines anderen Kunden auszuführen, für die er sonst keine Zugriffsberechtigung haben sollte. Um dies zu verhindern, bietet AWS Tools, mit denen Sie Ihre Daten für alle Services mit Serviceprinzipalen schützen können, die Zugriff auf Ressourcen in Ihrem Konto erhalten haben.

Wir empfehlen aws:SourceArn, die Kontextschlüssel aws:SourceAccount, aws:SourceOrgID, und aws:SourceOrgPathsglobal condition in Ressourcenrichtlinien zu verwenden, um die Berechtigungen einzuschränken, die Amazon SNS einem anderen Service für die Ressource erteilt. Verwenden Sie aws:SourceArn, um nur einer Ressource den serviceübergreifenden Zugriff zuzuordnen. Verwenden Sie aws:SourceAccount, um jede Ressource in diesem Konto der serviceübergreifenden Nutzung zuzuordnen. Verwenden Sie aws:SourceOrgID, damit alle Ressourcen von allen Konten innerhalb einer Organisation der serviceübergreifenden Nutzung zugeordnet werden können. Verwenden Sie aws:SourceOrgPaths, um beliebige Ressourcen von Konten innerhalb eines AWS Organizations -Pfades der serviceübergreifenden Nutzung zuzuordnen. Weitere Informationen zur Verwendung und zum Verständnis von Pfaden finden Sie unter aws: SourceOrgPaths im IAM-Benutzerhandbuch.

Der effektivste Weg, um sich vor dem Confused-Deputy-Problem zu schützen, ist die Verwendung des globalen Bedingungskontext-Schlüssels aws:SourceArn mit dem vollständigen ARN der Ressource. Wenn Sie den vollständigen ARN der Ressource nicht kennen oder wenn Sie mehrere Ressourcen angeben, verwenden Sie den globalen Kontextbedingungsschlüssel aws:SourceArn mit Platzhalterzeichen (*) für die unbekannten Teile des ARN. Beispiel, arn:aws:servicename:*:123456789012:*.

Wenn der aws:SourceArn-Wert die Konto-ID nicht enthält, z. B. einen Amazon-S3-Bucket-ARN, müssen Sie sowohl aws:SourceAccount als auch aws:SourceArn verwenden, um Berechtigungen einzuschränken.

Um sich vor dem Confused-Deputy-Problem im großen Maßstab zu schützen, verwenden Sie den globalen Bedingungskontextschlüssel aws:SourceOrgID oder aws:SourceOrgPaths mit der Organisations-ID oder dem Organisationspfad der Ressource in Ihren ressourcenbasierten Richtlinien. Richtlinien, die den Schlüssel aws:SourceOrgID oder aws:SourceOrgPaths enthalten, schließen automatisch die richtigen Konten ein und Sie müssen die Richtlinien nicht manuell aktualisieren, wenn Sie Konten in Ihrer Organisation hinzufügen, entfernen oder verschieben.

Der Wert von aws:SourceArn muss der ARN des Alarms sein, der Benachrichtigungen sendet.

Das folgende Beispiel zeigt, wie Sie die Kontextschlüssel aws:SourceArn und die aws:SourceAccount globale Bedingung verwenden können, CloudWatch um das Problem des verwirrten Stellvertreters zu vermeiden.

{ "Statement": [{ "Effect": "Allow", "Principal": { "Service": "cloudwatch.amazonaws.com" }, "Action": "SNS:Publish", "Resource": "arn:aws:sns:us-east-2:444455556666:MyTopic", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:cloudwatch:us-east-2:111122223333:alarm:*" }, "StringEquals": { "aws:SourceAccount": "111122223333" } } }] }

Wenn ein Alarm-ARN irgendwelche Nicht-ASCII-Zeichen enthält, verwenden Sie nur den globalen Bedingungsschlüssel aws:SourceAccount zur Begrenzung der Berechtigungen.

Einrichten eines Amazon SNS SNS-Themas mit dem AWS Management Console

Zunächst erstellen und abonnieren Sie ein Thema. Sie können optional eine Testnachricht für das Thema veröffentlichen.

So erstellen Sie ein SNS-Thema
  1. Öffnen Sie die Amazon SNS SNS-Konsole unter https://console.aws.amazon.com/sns/v3/home.

  2. Wählen Sie auf dem Amazon-SNS-Dashboard unter Common actions die Option Create Topic.

  3. Geben Sie im Dialogfeld Create new topic (Neues Thema erstellen) unter Topic name (Themaname) einen Namen für das Thema ein (z. B. my-topic).

  4. Wählen Sie Thema erstellen aus.

  5. Kopieren Sie den Topic ARN (Themen-ARN) für die nächste Aufgabe (z. B. arn:aws:sns:us-east-1:111122223333:my-topic).

So abonnieren Sie ein SNS-Thema
  1. Öffnen Sie die Amazon SNS SNS-Konsole unter https://console.aws.amazon.com/sns/v3/home.

  2. Wählen Sie im Navigationsbereich Abonnements und Abonnement erstellen aus.

  3. Fügen Sie im Dialogfeld für Create subscription für Topic ARN den ARN des Themas ein, den Sie im vorherigen Schritt erstellt haben.

  4. Wählen Sie unter Protocol (Protokoll) die Option Email (E-Mail) aus.

  5. Geben Sie für Endpoint (Endpunkt) eine E-Mail-Adresse ein, mit der Sie die Benachrichtigung erhalten können, und wählen Sie dann Create subscription (Abonnement erstellen).

  6. Öffnen Sie in Ihrer E-Mail-Anwendung die Nachricht unter AWS Benachrichtigungen und bestätigen Sie Ihr Abonnement.

    Ihr Webbrowser zeigt eine Bestätigungsantwort vom Amazon SNS an.

So veröffentlichen Sie eine Testnachricht in einem SNS-Thema
  1. Öffnen Sie die Amazon SNS SNS-Konsole unter https://console.aws.amazon.com/sns/v3/home.

  2. Wählen Sie im Navigationsbereich Themen aus.

  3. Wählen Sie auf der Seite Topics ein Thema und dann Publish to topic aus.

  4. Geben Sie auf der Seite Publish a message (Veröffentlichen einer Nachricht) unter Subject (Betreff) eine Betreffzeile für Ihre Nachricht und unter Message (Nachricht) eine kurze Nachricht ein.

  5. Wählen Sie Publish Message aus.

  6. Überprüfen Sie Ihren E-Mail-Eingang, um zu bestätigen, dass Sie die Nachricht erhalten haben.

Einrichtung eines SNS-Themas mit dem AWS CLI

Zuerst erstellen Sie ein SNS-Thema und veröffentlichen dann eine Nachricht direkt an das Thema, um zu testen, ob Sie es richtig konfiguriert haben.

So richten Sie ein SNS-Thema ein
  1. Erstellen Sie das Thema mit dem Befehl create-topic wie folgt.

    aws sns create-topic --name my-topic

    Amazon SNS gibt einen ARN für das Thema im folgenden Format zurück:

    { "TopicArn": "arn:aws:sns:us-east-1:111122223333:my-topic" }
  2. Abonnieren Sie die E-Mail-Adresse für das Thema mit dem Befehl subscribe. Wenn die Abonnementanfrage erfolgreich ist, erhalten Sie eine Bestätigungs-E-Mail.

    aws sns subscribe --topic-arn arn:aws:sns:us-east-1:111122223333:my-topic --protocol email --notification-endpoint my-email-address

    Amazon SNS gibt Folgendes zurück:

    { "SubscriptionArn": "pending confirmation" }
  3. Öffnen Sie in Ihrer E-Mail-Anwendung die Nachricht unter AWS Benachrichtigungen und bestätigen Sie Ihr Abonnement.

    Ihr Webbrowser zeigt eine Bestätigungsantwort vom Amazon Simple Notification Service an.

  4. Überprüfen Sie das Abonnement mit dem list-subscriptions-by-topicBefehl.

    aws sns list-subscriptions-by-topic --topic-arn arn:aws:sns:us-east-1:111122223333:my-topic

    Amazon SNS gibt Folgendes zurück:

    { "Subscriptions": [ { "Owner": "111122223333", "Endpoint": "me@mycompany.com", "Protocol": "email", "TopicArn": "arn:aws:sns:us-east-1:111122223333:my-topic", "SubscriptionArn": "arn:aws:sns:us-east-1:111122223333:my-topic:64886986-bf10-48fb-a2f1-dab033aa67a3" } ] }
  5. (Optional) Veröffentlichen Sie mit dem Befehl publish eine Testnachricht für das Thema.

    aws sns publish --message "Verification" --topic arn:aws:sns:us-east-1:111122223333:my-topic

    Amazon SNS gibt Folgendes zurück.

    { "MessageId": "42f189a0-3094-5cf6-8fd7-c2dde61a4d7d" }
  6. Überprüfen Sie Ihren E-Mail-Eingang, um zu bestätigen, dass Sie die Nachricht erhalten haben.

Schema der Amazon SNS SNS-Benachrichtigungen, wenn sich der Status von Alarmen ändert

In diesem Abschnitt sind die Schemas der Benachrichtigungen aufgeführt, die an Amazon SNS SNS-Themen gesendet werden, wenn Alarme ihren Status ändern.

Schema, wenn sich der Status eines metrischen Alarms ändert

{ "AlarmName": "string", "AlarmDescription": "string", "AWSAccountId": "string", "AlarmConfigurationUpdatedTimestamp": "string", "NewStateValue": "string", "NewStateReason": "string", "StateChangeTime": "string", "Region": "string", "AlarmArn": "string", "OldStateValue": "string", "OKActions": ["string"], "AlarmActions": ["string"], "InsufficientDataActions": ["string"], "Trigger": { "MetricName": "string", "Namespace": "string", "StatisticType": "string", "Statistic": "string", "Unit": "string or null", "Dimensions": [ { "value": "string", "name": "string" } ], "Period": "integer", "EvaluationPeriods": "integer", "DatapointsToAlarm": "integer", "ComparisonOperator": "string", "Threshold": "number", "TreatMissingData": "string", "EvaluateLowSampleCountPercentile": "string or null" } }

Schema, wenn ein zusammengesetzter Alarm den Status ändert

{ "AlarmName": "string", "AlarmDescription": "string", "AWSAccountId": "string", "NewStateValue": "string", "NewStateReason": "string", "StateChangeTime": "string", "Region": "string", "AlarmArn": "string", "OKActions": [String], "AlarmActions": [String], "InsufficientDataActions": [String], "OldStateValue": "string", "AlarmRule": "string", "TriggeringChildren": [String] }