gebeurtenismeldingen instellen in S3 Bucket op AWS

AWS S3 event notification helpt ons om meldingen te ontvangen wanneer bepaalde gebeurtenissen in een S3 Bucket plaatsvinden. We kunnen beschikbare Amazon S3 bucket gebeurtenissen inschakelen om een meldingsbericht te sturen. Dus, telkens als de opgegeven gebeurtenis in de S3 Bucket plaatsvindt, wordt de gebeurtenis getriggerd en worden meldingen verstuurd.

In dit artikel zullen we zien hoe we op Email meldingen kunnen krijgen wanneer bepaalde gebeurtenissen op onze S3 Bucket plaatsvinden.

AWS S3 Gebeurtenismelding ondersteunt de volgende bestemmingen waar meldingen/berichten heen gestuurd kunnen worden.

  1. Amazon Simple Notification Service (Amazon SNS) onderwerp:
    Berichten worden naar geabonneerde eindpunten gestuurd.
  2. Amazon Simple Queue Service (Amazon SQS) wachtrij:
    Berichten worden naar SQS Queue gestuurd waar ze kunnen worden opgeslagen.
  3. AWS Lambda:
    Kan gebruikt worden om een Lambda functie aan te roepen en het gebeurtenisbericht als argument mee te geven.

Voor we verder gaan, neem ik aan dat je bekend bent met S3 Bucket en SNS en dat je in je account al een S3 Bucket en SNS Topic hebt aangemaakt. Heb je deze middelen niet, klik danhier om te leren een S3 Bucket te maken vanuit de AWS Console en zoek naar “How to create an SNS Topic and a Subscriber on AWS?” om een SNS Topic met Email Subscriber erin te maken.

Vereisten

  1. AWS Account(Maak aan als je er geen hebt).
  2. S3 emmer.
  3. SNS Onderwerp.

Wat zullen we doen?

  1. Log in op AWS.
  2. Configureer S3 gebeurtenismeldingen.

Inloggen op AWS

Klik hier om naar de AWS login pagina te gaan.

Als we op de bovenstaande link klikken, zien we een webpagina als volgt waar we moeten inloggen met onze inloggegevens.

Als je met succes op je account bent ingelogd, zie je het scherm als volgt.

Configureer S3 gebeurtenismeldingen.

Klik op Services en zoek naar S3 om naar het S3 Dashboard te gaan.

Op het S3 Dashboard klik je op de S3 emmer waarop je gebeurtenismeldingen wilt instellen.

Klik op “Properties” en je ziet een scherm als volgt, klik hier op “Events”

Nu kun je meldingen maken door op “Meldingen toevoegen” te klikken.

Geef een naam aan de te maken melding, selecteer de Gebeurtenissen waarover je meldingen wilt krijgen, selecteer het SNS onderwerp waarover je de meldingen wilt sturen en klik op “Opslaan”.

We kunnen ook een prefix/suffix filter instellen zodat we alleen meldingen ontvangen als bestanden aan een bepaalde map worden toegevoegd. Dit kun je bereiken door een Prefix/Suffix toe te voegen. Voorlopig voeg ik dit niet toe, je kunt het proberen als je wilt.

Je krijgt een foutmelding te zien als je de melding opslaat. Dit komt omdat het SNS Topic dat we gekozen hebben om je meldingen naar te sturen, geen rechten heeft om meldingen van deze emmer te ontvangen. Vandaar dat we dit soort fout krijgen. Om deze fout op te lossen moeten we machtigingen aan de SNS emmer toevoegen, zodat hij meldingen van deze S3 emmer kan ontvangen.

Om naar SNS te gaan, zoek je SNS op en klik je op het resultaat.

Op het hoofddashboard klik je in het linkerpaneel op “Topics”.

Klik op je SNS onderwerp.

Onder “Access Policy” zie je het huidige beleid dat SNS heeft. We moeten dit beleid bewerken. Klik op “Bewerken”.

Vervang het SNS beleid door het volgende beleid.

{
  "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 het SNS beleid hebben we alleen de verklaring toegevoegd die vet+citalic is. Vergeet ook niet de velden die rood gemarkeerd zijn te vervangen.

Sla de wijzigingen in de SNS op.

Terugkomend op S3 Events, probeer nu hetzelfde event opnieuw te maken en sla het op. Je zult zien dat je nu 1 gebeurtenis hebt aangemaakt.

Ga naar de hoofdpagina van je S3 Bucket om te testen of gebeurtenissen wel of niet gemeld worden.

Upload een voorbeeld object naar je S3 Bucket, dit wordt een “PUT” actie in de S3 Bucket. Dit zal onze gebeurtenismelding activeren en een melding naar ons sturen.

Dus toen ik het object uploadde, werd de gebeurtenismelding die we maakten getriggerd en stuurde SNS een melding naar me op de Email Subscription die ik er in had staan.

Conclusie

In dit artikel leerden we om een gebeurtenismelding in S3 te maken en SNS te triggeren wanneer gespecificeerde gebeurtenissen zoals PUT/COPY/POST plaatsvinden in S3 Bucket.