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.
In diesem Tutorial verwenden Sie die Konsole, um eine Lambda-Funktion zu erstellen und einen Auslöser für einen Amazon-Simple-Storage-Service-Bucket (Amazon-S3-Bucket) zu konfigurieren. Jedes Mal, wenn Sie Ihrem Amazon S3 S3-Bucket ein Objekt hinzufügen, wird Ihre Funktion ausgeführt und der Objekttyp wird in Amazon CloudWatch Logs ausgegeben.

Dieses Tutorial zeigt, wie man:
-
Erstellen Sie einen Amazon-S3-Bucket.
-
Erstellen Sie eine Lambda-Funktion, die den Objekttyp von Objekten in einem Amazon-S3-Bucket ausgibt.
-
Konfigurieren Sie einen Lambda-Auslöser, der Ihre Funktion aufruft, wenn Objekte in Ihren Bucket hochgeladen werden.
-
Testen Sie Ihre Funktion, zuerst mit einem Dummy-Ereignis und dann mit dem Auslöser.
Durch das Ausführen dieser Schritte erfahren Sie, wie Sie eine Lambda-Funktion so konfigurieren, dass sie ausgeführt wird, wenn Objekte einem Amazon-S3-Bucket hinzugefügt oder daraus gelöscht werden. Sie können dieses Tutorial abschließen, indem Sie nur die AWS Management Console verwenden.
Erstellen eines Amazon-S3-Buckets

So erstellen Sie einen Amazon-S3-Bucket
-
Öffnen Sie die Amazon S3 S3-Konsole
und wählen Sie die Seite General Purpose Buckets aus. -
Wählen Sie die Option aus, die Ihrem geografischen Standort AWS-Region am nächsten liegt. Sie können Ihre Region mithilfe der Dropdown-Liste am oberen Bildschirmrand ändern. Später im Tutorial müssen Sie eine Lambda-Funktion in derselben Region erstellen.
-
Wählen Sie Create Bucket (Bucket erstellen) aus.
-
Führen Sie unter Allgemeine Konfiguration die folgenden Schritte aus:
-
Stellen Sie sicher, dass als Bucket-Typ die Option General Purpose ausgewählt ist.
-
Geben Sie für den Bucket-Namen einen global eindeutigen Namen ein, der den Regeln für die Bucket-Benennung von Amazon S3 entspricht. Bucket-Namen dürfen nur aus Kleinbuchstaben, Zahlen, Punkten (.) und Bindestrichen (-) bestehen.
-
-
Belassen Sie alle anderen Optionen auf ihren Standardwerten und wählen Sie Bucket erstellen aus.
Hochladen eines Testobjekts in Ihren Bucket

Hochladen eines Testobjekts
-
Öffnen Sie die Buckets-Seite
der Amazon-S3-Konsole und wählen Sie den Bucket aus, den Sie im vorherigen Schritt erstellt haben. -
Klicken Sie auf Hochladen.
-
Wählen Sie Dateien hinzufügen aus und wählen Sie das Objekt, das Sie hochladen möchten. Sie können eine beliebige Datei auswählen (z. B.
HappyFace.jpg
). -
Wählen Sie Öffnen und anschließend Hochladen aus.
Im weiteren Verlauf des Tutorials werden Sie Ihre Lambda-Funktion mit diesem Objekt testen.
Erstellen einer Berechtigungsrichtlinie

Erstellen Sie eine Berechtigungsrichtlinie, die es Lambda ermöglicht, Objekte aus einem Amazon S3 S3-Bucket abzurufen und in Amazon CloudWatch Logs zu schreiben.
So erstellen Sie die Richtlinie
-
Öffnen Sie die Seite Richtlinien
in der IAM-Konsole. -
Wählen Sie Create Policy (Richtlinie erstellen) aus.
-
Wählen Sie die Registerkarte JSON aus und kopieren Sie dann die folgende benutzerdefinierte JSON-Richtlinie in den JSON-Editor.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:PutLogEvents", "logs:CreateLogGroup", "logs:CreateLogStream" ], "Resource": "arn:aws:logs:*:*:*" }, { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::*/*" } ] }
-
Wählen Sie Next: Tags (Weiter: Tags) aus.
-
Klicken Sie auf Weiter: Prüfen.
-
Geben Sie unter Review policy (Richtlinie prüfen) für den Richtlinien-Namen
s3-trigger-tutorial
ein. -
Wählen Sie Create Policy (Richtlinie erstellen) aus.
Erstellen einer Ausführungsrolle

Eine Ausführungsrolle ist eine AWS Identity and Access Management (IAM-) Rolle, die einer Lambda-Funktion Zugriffsberechtigungen AWS-Services und Ressourcen gewährt. In diesem Schritt erstellen Sie eine Ausführungsrolle unter Verwendung der Berechtigungsrichtlinie, die Sie im vorherigen Schritt erstellt haben.
So erstellen Sie eine Ausführungsrolle und fügen Ihre benutzerdefinierte Berechtigungsrichtlinie hinzu
-
Öffnen Sie die Seite Roles (Rollen)
in der IAM-Konsole. -
Wählen Sie Rolle erstellen.
-
Wählen Sie als Typ der vertrauenswürdigen Entität AWS -Service und dann als Anwendungsfall Lambda aus.
-
Wählen Sie Weiter.
-
Geben Sie im Feld für die Richtliniensuche
s3-trigger-tutorial
ein. -
Wählen Sie in den Suchergebnissen die von Ihnen erstellte Richtlinie (
s3-trigger-tutorial
) und dann die Option Next (Weiter) aus. -
Geben Sie unter Role details (Rollendetails) für den Role name (Rollennamen)
lambda-s3-trigger-role
ein und wählen Sie dann Create role (Rolle erstellen) aus.
So erstellen Sie die Lambda-Funktion:

Erstellen Sie eine Lambda-Funktion in der Konsole mithilfe der Python 3.12-Laufzeit.
So erstellen Sie die Lambda-Funktion:
-
Öffnen Sie die Seite Funktionen
der Lambda-Konsole. -
Stellen Sie sicher, dass Sie in demselben Modus arbeiten, in dem AWS-Region Sie Ihren Amazon S3 S3-Bucket erstellt haben. Sie können Ihre Region mithilfe der Dropdown-Liste oben auf dem Bildschirm ändern.
-
Wählen Sie Funktion erstellen aus.
-
Wählen Sie Ohne Vorgabe erstellen aus.
-
Führen Sie unter Basic information (Grundlegende Informationen) die folgenden Schritte aus:
-
Geben Sie unter Funktionsname
s3-trigger-tutorial
ein. -
Wählen Sie für Runtime (Laufzeit) die Option Python 3.12 aus.
-
Wählen Sie für Architektur x86_64 aus.
-
-
Gehen Sie auf der Registerkarte Standard-Ausführungsrolle ändern wie folgt vor:
-
Erweitern Sie die Registerkarte und wählen Sie dann Verwenden einer vorhandenen Rolle aus.
-
Wählen Sie die zuvor erstellte
lambda-s3-trigger-role
aus.
-
-
Wählen Sie Funktion erstellen aus.
Bereitstellen des Funktionscodes

In diesem Tutorial wird die Python 3.12-Laufzeit verwendet. Es stehen aber auch Beispielcodedateien für andere Laufzeiten zur Verfügung. Sie können die Registerkarte im folgenden Feld auswählen, um den Code für die gewünschte Laufzeit anzusehen.
Die Lambda-Funktion ruft den Schlüsselnamen des hochgeladenen Objekts und den Namen des Buckets aus dem event
-Parameter ab, den sie von Amazon S3 erhält. Die Funktion verwendet dann die Methode get_object
So stellen Sie den Funktionscode bereit
-
Wählen Sie im folgenden Feld die Registerkarte Python und kopieren Sie den Code.
- SDK for .NET
-
Anmerkung
Es gibt noch mehr dazu. GitHub Das vollständige Beispiel sowie eine Anleitung zum Einrichten und Ausführen finden Sie im Repository mit Serverless-Beispielen
. Nutzen eines S3-Ereignisses mit Lambda unter Verwendung von .NET
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 using System.Threading.Tasks; using Amazon.Lambda.Core; using Amazon.S3; using System; using Amazon.Lambda.S3Events; using System.Web; // Assembly attribute to enable the Lambda function's JSON input to be converted into a .NET class. [assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))] namespace S3Integration { public class Function { private static AmazonS3Client _s3Client; public Function() : this(null) { } internal Function(AmazonS3Client s3Client) { _s3Client = s3Client ?? new AmazonS3Client(); } public async Task<string> Handler(S3Event evt, ILambdaContext context) { try { if (evt.Records.Count <= 0) { context.Logger.LogLine("Empty S3 Event received"); return string.Empty; } var bucket = evt.Records[0].S3.Bucket.Name; var key = HttpUtility.UrlDecode(evt.Records[0].S3.Object.Key); context.Logger.LogLine($"Request is for {bucket} and {key}"); var objectResult = await _s3Client.GetObjectAsync(bucket, key); context.Logger.LogLine($"Returning {objectResult.Key}"); return objectResult.Key; } catch (Exception e) { context.Logger.LogLine($"Error processing request - {e.Message}"); return string.Empty; } } } }
-
Fügen Sie den Code im Code-Quellbereich der Lambda-Konsole in den Code-Editor ein und ersetzen Sie dabei den von Lambda erstellten Code.
-
Wählen Sie im Abschnitt DEPLOY die Option Deploy aus, um den Code Ihrer Funktion zu aktualisieren:
Erstellen des Amazon-S3-Auslösers

Erstellen des Amazon-S3-Auslösers
-
Wählen Sie im Bereich Function overview (Funktionsübersicht) die Option Add trigger (Auslöser hinzufügen).
-
Wählen Sie S3 aus.
-
Wählen Sie unter Bucket den Bucket aus, den Sie zuvor im Tutorial erstellt haben.
-
Vergewissern Sie sich, dass unter Ereignistypen die Option Alle Ereignisse zur Objekterstellung ausgewählt ist.
-
Aktivieren Sie unter Rekursiver Aufruf das Kontrollkästchen, um zu bestätigen, dass die Verwendung desselben Amazon-S3-Buckets für die Ein- und Ausgabe nicht empfohlen wird.
-
Wählen Sie Hinzufügen aus.
Anmerkung
Wenn Sie einen Amazon-S3-Trigger für eine Lambda-Funktion mithilfe der Lambda-Konsole erstellen, konfiguriert Amazon S3 eine Ereignisbenachrichtigung für den von Ihnen angegebenen Bucket. Bevor diese Ereignisbenachrichtigung konfiguriert wird, führt Amazon S3 eine Reihe von Prüfungen durch, um zu bestätigen, dass das Ereignisziel existiert und die erforderlichen IAM-Richtlinien hat. Amazon S3 führt diese Tests auch bei allen anderen für diesen Bucket konfigurierten Ereignisbenachrichtigungen durch.
Wenn der Bucket zuvor Ereignisziele für Ressourcen konfiguriert hat, die nicht mehr existieren oder für Ressourcen, die nicht über die erforderlichen Berechtigungsrichtlinien verfügen, kann Amazon S3 aufgrund dieser Prüfung keine neue Ereignisbenachrichtigung erstellen. Es wird die folgende Fehlermeldung angezeigt, die besagt, dass Ihr Auslöser nicht erstellt werden konnte:
An error occurred when creating the trigger: Unable to validate the following destination configurations.
Dieser Fehler kann auftreten, wenn Sie zuvor einen Auslöser für eine andere Lambda-Funktion konfiguriert haben, die denselben Bucket verwendet und Sie die Funktion inzwischen gelöscht oder ihre Berechtigungsrichtlinien geändert haben.
Testen Ihrer Lambda-Funktion mit einem Dummy-Ereignis

So testen Sie die Lambda-Funktion mit einem Dummy-Ereignis
-
Wählen Sie auf der Konsolenseite für Ihre Funktion die Registerkarte Test aus.
-
Geben Sie für Event name (Ereignisname)
MyTestEvent
ein. -
Fügen Sie im Event-JSON das folgende Testereignis ein. Achten Sie darauf, diese Werte zu ersetzen:
-
Ersetzen Sie
us-east-1
durch die Region, in der Sie den Amazon-S3-Bucket erstellt haben. -
Ersetzen Sie beide Vorkommen von
amzn-s3-demo-bucket
durch den Namen Ihres eigenen Amazon-S3-Buckets. -
Ersetzen Sie
test%2FKey
durch den Namen des Testobjekts, das Sie zuvor in Ihren Bucket hochgeladen haben (z. B.HappyFace.jpg
).
{ "Records": [ { "eventVersion": "2.0", "eventSource": "aws:s3", "awsRegion": "
us-east-1
", "eventTime": "1970-01-01T00:00:00.000Z", "eventName": "ObjectCreated:Put", "userIdentity": { "principalId": "EXAMPLE" }, "requestParameters": { "sourceIPAddress": "127.0.0.1" }, "responseElements": { "x-amz-request-id": "EXAMPLE123456789", "x-amz-id-2": "EXAMPLE123/5678abcdefghijklambdaisawesome/mnopqrstuvwxyzABCDEFGH" }, "s3": { "s3SchemaVersion": "1.0", "configurationId": "testConfigRule", "bucket": { "name": "amzn-s3-demo-bucket
", "ownerIdentity": { "principalId": "EXAMPLE" }, "arn": "arn:aws:s3:::amzn-s3-demo-bucket
" }, "object": { "key": "test%2Fkey
", "size": 1024, "eTag": "0123456789abcdef0123456789abcdef", "sequencer": "0A1B2C3D4E5F678901" } } } ] } -
-
Wählen Sie Save (Speichern) aus.
-
Wählen Sie Test aus.
-
Wenn Ihre Funktion erfolgreich ausgeführt wird, wird auf der Registerkarte Ausführungsergebnisse eine Ausgabe angezeigt, die der folgenden ähnelt.
Response "image/jpeg" Function Logs START RequestId: 12b3cae7-5f4e-415e-93e6-416b8f8b66e6 Version: $LATEST 2021-02-18T21:40:59.280Z 12b3cae7-5f4e-415e-93e6-416b8f8b66e6 INFO INPUT BUCKET AND KEY: { Bucket: 'amzn-s3-demo-bucket', Key: 'HappyFace.jpg' } 2021-02-18T21:41:00.215Z 12b3cae7-5f4e-415e-93e6-416b8f8b66e6 INFO CONTENT TYPE: image/jpeg END RequestId: 12b3cae7-5f4e-415e-93e6-416b8f8b66e6 REPORT RequestId: 12b3cae7-5f4e-415e-93e6-416b8f8b66e6 Duration: 976.25 ms Billed Duration: 977 ms Memory Size: 128 MB Max Memory Used: 90 MB Init Duration: 430.47 ms Request ID 12b3cae7-5f4e-415e-93e6-416b8f8b66e6
Testen der Lambda-Funktion mit dem Amazon-S3-Auslöser

Um Ihre Funktion mit dem konfigurierten Auslöser zu testen, können Sie unter Verwendung der Konsole ein Objekt in Ihren Amazon-S3-Bucket hochladen. Um zu überprüfen, ob Ihre Lambda-Funktion wie erwartet ausgeführt wurde, verwenden Sie CloudWatch Logs, um die Ausgabe Ihrer Funktion einzusehen.
So laden Sie Objekte in Ihren Amazon-S3-Bucket hoch
-
Öffnen Sie die Buckets
-Seite der Amazon-S3-Konsole und wählen Sie den Bucket aus, den Sie zuvor erstellt haben. -
Klicken Sie auf Upload.
-
Wählen Sie Dateien hinzufügen aus und wählen Sie mit der Dateiauswahl ein Objekt aus, das Sie hochladen möchten. Bei diesem Objekt kann es sich um eine beliebige von Ihnen ausgewählte Datei handeln.
-
Wählen Sie Öffnen und anschließend Hochladen aus.
Um den Funktionsaufruf mithilfe von Logs zu überprüfen CloudWatch
-
Öffnen Sie die CloudWatch-Konsole
. -
Stellen Sie sicher, dass Sie in derselben Umgebung arbeiten, in der AWS-Region Sie Ihre Lambda-Funktion erstellt haben. Sie können Ihre Region mithilfe der Dropdown-Liste oben auf dem Bildschirm ändern.
-
Wählen Sie Protokolle und anschließend Protokollgruppen aus.
-
Wählen Sie die Protokollgruppe für Ihre Funktion (
/aws/lambda/s3-trigger-tutorial
) aus. -
Wählen Sie im Bereich Protokollstreams den neuesten Protokollstream aus.
-
Wenn Ihre Funktion als Reaktion auf Ihren Amazon-S3-Auslöser korrekt aufgerufen wurde, erhalten Sie eine Ausgabe, die der folgenden ähnelt. Welchen
CONTENT TYPE
Sie sehen, hängt von der Art der Datei ab, die Sie in Ihren Bucket hochgeladen haben.2022-05-09T23:17:28.702Z 0cae7f5a-b0af-4c73-8563-a3430333cc10 INFO CONTENT TYPE:
image/jpeg
Bereinigen Ihrer Ressourcen
Sie können jetzt die Ressourcen, die Sie für dieses Tutorial erstellt haben, löschen, es sei denn, Sie möchten sie behalten. Durch das Löschen von AWS Ressourcen, die Sie nicht mehr verwenden, vermeiden Sie unnötige Kosten für Ihre AWS-Konto.
So löschen Sie die Lambda-Funktion:
-
Öffnen Sie die Seite Funktionen
der Lambda-Konsole. -
Wählen Sie die Funktion aus, die Sie erstellt haben.
-
Wählen Sie Aktionen, Löschen aus.
-
Geben Sie
confirm
in das Texteingabefeld ein und wählen Sie Delete (Löschen) aus.
So löschen Sie die Ausführungsrolle
-
Öffnen Sie die Seite Roles
in der IAM-Konsole. -
Wählen Sie die von Ihnen erstellte Ausführungsrolle aus.
-
Wählen Sie Löschen.
-
Geben Sie den Namen der Rolle in das Texteingabefeld ein und wählen Sie Delete (Löschen) aus.
So löschen Sie den S3-Bucket:
-
Öffnen Sie die Amazon S3-Konsole
. -
Wählen Sie den Bucket aus, den Sie erstellt haben.
-
Wählen Sie Löschen.
-
Geben Sie den Namen des Buckets in das Texteingabefeld ein.
-
Wählen Sie Bucket löschen aus.
Nächste Schritte
In Tutorial: Verwenden eines Amazon-S3-Auslösers zum Erstellen von Miniaturbildern ruft der Amazon-S3-Auslöser eine Funktion auf, die für jede Bilddatei, die in einen Bucket hochgeladen wird, ein Miniaturbild erstellt. Dieses Tutorial erfordert ein gewisses Maß AWS an Wissen über Lambda-Domänen. Es zeigt, wie Ressourcen mithilfe von AWS Command Line Interface (AWS CLI) erstellt werden und wie ein Bereitstellungspaket für das ZIP-Dateiarchiv für die Funktion und ihre Abhängigkeiten erstellt wird.