So konfigurierst du Ereignisbenachrichtigungen in einem S3 Bucket auf AWS

AWS S3 Event Notification hilft uns, Benachrichtigungen zu erhalten, wenn bestimmte Ereignisse in einem S3 Bucket stattfinden. Wir können verfügbare Amazon S3 Bucket-Ereignisse aktivieren, um eine Benachrichtigung zu senden. Wenn ein bestimmtes Ereignis in einem S3-Bucket eintritt, wird es ausgelöst und eine Benachrichtigung verschickt.

In diesem Artikel werden wir sehen, wie wir per E-Mail benachrichtigt werden können, wenn bestimmte Ereignisse in unserem S3 Bucket stattfinden.

AWS S3 Event Notification unterstützt die folgenden Ziele, an die Benachrichtigungen/Nachrichten gesendet werden können.

  1. Amazon Simple Notification Service (Amazon SNS) topic:
    Nachrichten werden an abonnierte Endpunkte gesendet.
  2. Amazon Simple Queue Service (Amazon SQS) queue:
    Nachrichten werden an die SQS Queue gesendet, wo sie gespeichert werden können.
  3. AWS Lambda:
    Kann verwendet werden, um eine Lambda-Funktion aufzurufen und die Ereignismeldung als Argument zu übergeben.

Bevor wir fortfahren, gehe ich davon aus, dass du mit S3 Bucket und SNS vertraut bist und bereits ein S3 Bucket und ein SNS Topic in deinem Konto angelegt hast. Wenn du nicht über diese Ressourcen verfügst, klickehier, um zu erfahren, wie du einen S3 Bucket über die AWS-Konsole erstellst, und suche nach „How to create an SNS Topic and a Subscriber on AWS?“, um ein SNS Topic mit einem E-Mail-Abonnenten zu erstellen.

Vorraussetzungen

  1. AWS-Konto(Erstelle es, wenn du noch keines hast).
  2. S3 Bucket.
  3. SNS-Thema.

Was müssen wir tun?

  1. Anmeldung bei AWS.
  2. Konfiguriere die S3-Ereignisbenachrichtigungen.

Anmeldung bei AWS

Klicke hier, um zur AWS-Anmeldeseite zu gelangen.

Wenn wir auf den obigen Link klicken, wird die folgende Webseite angezeigt, auf der wir uns mit unseren Anmeldedaten anmelden müssen.

Sobald du dich erfolgreich in dein Konto eingeloggt hast, siehst du den folgenden Bildschirm.

Konfiguriere die S3-Ereignisbenachrichtigungen.

Klicke auf Dienste und suche nach S3, um zum S3 Dashboard zu gelangen.

Klicke im S3 Dashboard auf den S3 Bucket, für den du Ereignisbenachrichtigungen konfigurieren möchtest.

Klicke auf „Eigenschaften“ und du siehst einen Bildschirm wie folgt, hier klicke auf „Ereignisse“

Jetzt kannst du Benachrichtigungen erstellen, indem du auf „Benachrichtigungen hinzufügen“ klickst.

Gib der zu erstellenden Benachrichtigung einen Namen, wähle die Ereignisse aus, über die du benachrichtigt werden möchtest, wähle das SNS-Thema aus, an das du die Benachrichtigungen senden möchtest und klicke auf „Speichern“.

Wir können auch einen Präfix/Suffix-Filter einrichten, damit wir nur Benachrichtigungen erhalten, wenn Dateien zu einem bestimmten Ordner hinzugefügt werden. Das kannst du erreichen, indem du ein Präfix/Suffix hinzufügst. Im Moment füge ich das nicht hinzu, aber du kannst es ja mal ausprobieren, wenn du willst.

Du wirst einen Fehler sehen, wenn du die Meldung speicherst. Das liegt daran, dass das SNS-Thema, das wir zum Senden der Benachrichtigungen ausgewählt haben, keine Berechtigung hat, Benachrichtigungen von diesem Bucket zu empfangen. Daher erhalten wir diese Fehlermeldung. Um diesen Fehler zu beheben, müssen wir dem SNS-Bucket Berechtigungen hinzufügen, damit er Benachrichtigungen von diesem S3-Bucket empfangen kann.

Um zu SNS zu gelangen, suche nach SNS und klicke auf das Ergebnis.

Im Haupt-Dashboard klickst du auf „Themen“ im linken Bereich.

Klicke auf dein SNS-Thema.

Unter „Zugriffsrichtlinie“ siehst du die aktuelle Richtlinie für SNS. Wir müssen diese Richtlinie bearbeiten. Klicke auf „Bearbeiten“.

Ersetze die SNS-Richtlinie durch die folgende Richtlinie.

{
  "Version": "2012-10-17",
  "Id": "__default_policy_ID",
  "Statement": [
    {
      "Sid": "__default_statement_ID",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": [
        "SNS:GetTopicAttributes",
        "SNS:SetTopicAttributes",
        "SNS:AddPermission",
        "SNS:RemovePermission",
        "SNS:DeleteTopic",
        "SNS:Subscribe",
        "SNS:ListSubscriptionsByTopic",
        "SNS:Publish",
        "SNS:Receive"
      ],
      "Resource": "arn:aws:sns:eu-west-3:064827688814:rahul-test",
      "Condition": {
        "StringEquals": {
          "AWS:SourceOwner": "064827688814"
        }
      }
    },
    {
      "Sid": "AWSEvents_all-events_Id2377506854031",
      "Effect": "Allow",
      "Principal": {
        "Service": "events.amazonaws.com"
      },
      "Action": "sns:Publish",
      "Resource": "arn:aws:sns:eu-west-3:064827688814:rahul-test"
    },
    {
      "Sid": "AWSEvents_S3_Event",
      "Effect": "Allow",
      "Principal": {
        "Service": "s3.amazonaws.com"
      },
      "Action": "sns:Publish",
      "Resource": "arn:aws:sns:eu-west-3:064827688814:rahul-test"
    }
  ]
}

In der SNS-Richtlinie haben wir nur die fett+kursiv gedruckte Anweisung hinzugefügt. Vergiss auch nicht, die rot markierten Felder zu ersetzen.

Speichere die Änderungen in der SNS.

Um zu den S3-Ereignissen zurückzukehren, versuche nun, das gleiche Ereignis neu zu erstellen und zu speichern. Du wirst sehen, dass du jetzt 1 Ereignis erstellt hast.

Gehe zur Hauptseite deines S3 Buckets, um zu testen, ob die Ereignisse benachrichtigt werden oder nicht.

Lade ein Beispielobjekt in dein S3 Bucket hoch. Dies wird eine „PUT“-Aktion im S3 Bucket sein. Dadurch wird unsere Ereignisbenachrichtigung ausgelöst und eine Benachrichtigung an uns gesendet.

Als ich das Objekt hochgeladen habe, wurde die Ereignisbenachrichtigung, die wir erstellt haben, ausgelöst und SNS hat mir eine Benachrichtigung an das E-Mail-Abonnement geschickt, das ich eingerichtet hatte.

Fazit

In diesem Artikel haben wir gelernt, wie man eine Ereignisbenachrichtigung in S3 erstellt und SNS auslöst, wenn bestimmte Ereignisse wie PUT/COPY/POST im S3 Bucket stattfinden.

Das könnte dich auch interessieren …