Tutorial: Transformieren von Daten für Ihre Anwendung mit S3 Object Lambda - Amazon Simple Storage Service

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.

Tutorial: Transformieren von Daten für Ihre Anwendung mit S3 Object Lambda

Wenn Sie Daten in Amazon S3 speichern, können Sie sie für mehrere Anwendungen verwenden. Jede Anwendung hat jedoch möglicherweise eindeutige Anforderungen an das Datenformat und benötigt möglicherweise eine Änderung oder Verarbeitung Ihrer Daten für einen bestimmten Anwendungsfall. Beispielsweise kann ein von einer E-Commerce-Anwendung erstellter Datensatz personenbezogene Daten (PII) enthalten. Wenn dieselben Daten für Analysen verarbeitet werden, PII ist dies nicht erforderlich und sollte redigiert werden. Wenn jedoch derselbe Datensatz für eine Marketingkampagne verwendet wird, müssen Sie die Daten möglicherweise mit zusätzlichen Details wie Informationen aus der Kundenbindungsdatenbank anreichern.

Mit S3 Object Lambda können Sie Ihren eigenen Code hinzufügen, um Daten zu verarbeiten, die von S3 abgerufen werden, bevor Sie sie an eine Anwendung zurückgeben. Insbesondere können Sie eine AWS Lambda Funktion konfigurieren und sie an einen S3 Object Lambda Access Point anhängen. Wenn eine Anwendung standardmäßige GET S3-Anfragen über den S3 Object Lambda Access Point sendet, wird die angegebene Lambda-Funktion aufgerufen, um alle Daten zu verarbeiten, die aus einem S3-Bucket über den unterstützenden S3-Zugriffspunkt abgerufen wurden. Dann gibt der S3 Object Lambda Access Point das transformierte Ergebnis zurück an die Anwendung aus. Sie können Ihre eigenen benutzerdefinierten Lambda-Funktionen erstellen und ausführen, indem Sie die S3 Object Lambda-Datentransformation an Ihren spezifischen Anwendungsfall anpassen, ohne dass Änderungen an Ihren Anwendungen erforderlich sind.

Dies ist ein S3-Object-Lambda-Workflow-Diagramm.
Ziel

In diesem Tutorial erfahren Sie, wie Sie standardmäßigen GET S3-Anfragen benutzerdefinierten Code hinzufügen, um das von S3 abgerufene angeforderte Objekt so zu ändern, dass das Objekt den Anforderungen des anfragenden Clients oder der anfragenden Anwendung entspricht. Insbesondere erfahren Sie, wie Sie den gesamten Text im ursprünglichen Objekt, das in S3 gespeichert ist, über S3 Object Lambda in Großbuchstaben umwandeln.

Anmerkung

Dieses Tutorial verwendet Python-Code, um die Daten zu transformieren. Beispiele für die Verwendung anderer AWS SDKs finden Sie unter Transformieren von Daten für Ihre Anwendung mit S3 Object Lambda in der AWS SDK Codebeispielbibliothek.

Voraussetzungen

Bevor Sie mit diesem Tutorial beginnen, benötigen Sie einen AWS-Konto , bei dem Sie sich als AWS Identity and Access Management (IAM) -Benutzer mit den richtigen Berechtigungen anmelden können. Sie müssen außerdem Python Version 3.8 oder höher installieren.

Erstellen Sie einen IAM Benutzer mit Berechtigungen in Ihrer AWS-Konto (Konsole)

Sie können einen IAM Benutzer für das Tutorial erstellen. Um dieses Tutorial abzuschließen, muss Ihr IAM Benutzer die folgenden IAM Richtlinien anhängen, um auf relevante AWS Ressourcen zuzugreifen und bestimmte Aktionen auszuführen. Weitere Informationen zum Erstellen eines IAM Benutzers finden Sie im Benutzerhandbuch unter IAMBenutzer erstellen (Konsole). IAM

Ihr IAM Benutzer benötigt die folgenden Richtlinien:

Anmerkung

Der Einfachheit halber erstellt und verwendet dieses Tutorial einen IAM Benutzer. Denken Sie nach Abschluss dieses Tutorials an Löschen Sie den IAM Benutzer. Für den produktiven Einsatz empfehlen wir, dass Sie die bewährten Sicherheitsmethoden IAM im IAM Benutzerhandbuch befolgen. Eine bewährte Methode ist, dass menschliche Benutzer den Verbund mit einem Identitätsanbieter verwenden, um mit temporären Anmeldeinformationen auf AWS zuzugreifen. Eine weitere bewährte Methode besteht darin, Workloads die Verwendung temporärer Anmeldeinformationen mit IAM Rollen für den Zugriff AWS vorzuschreiben. Informationen AWS IAM Identity Center zur Erstellung von Benutzern mit temporären Anmeldeinformationen finden Sie unter Erste Schritte im AWS IAM Identity Center Benutzerhandbuch.

In diesem Tutorial werden auch AWS -verwaltete Richtlinien mit vollem Zugriff verwendet. Für die Verwendung in der Produktion empfehlen wir, dass Sie stattdessen nur die für Ihren Anwendungsfall erforderlichen Mindestberechtigungen gemäß Bewährte Methoden in Bezug auf die Sicherheit erteilen.

Installieren Sie Python 3.8 oder höher auf Ihrem lokalen Computer

Verwenden Sie das folgende Verfahren, um Python 3.8 oder höher auf Ihrem lokalen Computer zu installieren. Weitere Installationsanweisungen finden Sie auf der Seite Python herunterladen im Python-Anfängerhandbuch.

  1. Öffnen Sie das lokale Terminal oder die Shell, und führen Sie den folgenden Befehl aus, um festzustellen, ob Python bereits installiert ist, und wenn ja, welche Version installiert ist.

    python --version
  2. Wenn Sie nicht über Python 3.8 oder höher verfügen, laden Sie die Datei offizieller Installer von Python 3.8 oder höher herunter, die für Ihren lokalen Computer geeignet ist.

  3. Führen Sie das Installationsprogramm aus, indem Sie auf die heruntergeladene Datei doppelklicken und die Schritte ausführen, um die Installation abzuschließen.

    Windows-Benutzer wählen Python 3.X hinzufügen PATH im Installationsassistenten, bevor Sie Jetzt installieren wählen.

  4. Starten Sie das Terminal neu, indem Sie es schließen und erneut öffnen.

  5. Führen Sie den folgenden Befehl aus, um zu überprüfen, ob Python 3.8 oder höher ordnungsgemäß installiert ist.

    Führen Sie für macOS-Benutzer diesen Befehl aus:

    python3 --version

    Führen Sie für Windows-Benutzer diesen Befehl aus:

    python --version
  6. Führen Sie den folgenden Befehl aus, um zu überprüfen, ob der pip3-Paket-Manager installiert ist. Wenn Sie in der Befehlsantwort eine Pip-Versionsnummer und Python 3.8 oder höher sehen, bedeutet dies, dass der pip3-Paketmanager erfolgreich installiert wurde.

    pip --version

Schritt 1: Einen S3-Bucket erstellen

Erstellen Sie einen Bucket zum Speichern der ursprünglichen Daten, die Sie transformieren möchten.

So erstellen Sie einen Bucket
  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie im linken Navigationsbereich die Option Buckets aus.

  3. Wählen Sie Create Bucket (Bucket erstellen) aus.

    Die Seite Create bucket (Bucket erstellen) wird geöffnet.

  4. Geben Sie für Bucket-Name einen Namen für Ihren Bucket ein (z. B. tutorial-bucket).

    Weitere Informationen zur Benennung von Buckets in Amazon S3 finden Sie unter Regeln für die Benennung von Buckets.

  5. Wählen Sie unter Region den AWS-Region Ort aus, an dem sich der Bucket befinden soll.

    Weitere Informationen zur Bucket-Region finden Sie unter Bucket-Übersicht.

  6. Belassen Sie die Einstellungen für den öffentlichen Zugriff für diesen Bucket blockieren bei den Standardeinstellungen (Alle öffentlichen Zugriffe blockieren ist aktiviert).

    Es wird empfohlen, alle Einstellungen für öffentlichen Zugriff blockieren aktiviert zu belassen, es sei denn, Sie müssen eine oder mehrere dieser Einstellungen für Ihren Anwendungsfall deaktivieren. Weitere Informationen zum Blockieren des öffentlichen Zugriffs finden Sie unter Blockieren des öffentlichen Zugriffs auf Ihren Amazon-S3-Speicher.

  7. Lassen Sie die restlichen Einstellungen auf die Standardwerte eingestellt.

    (Optional) Informationen zum Konfigurieren zusätzlicher Bucket-Einstellungen für Ihren spezifischen Anwendungsfall finden Sie unter Erstellen eines Buckets.

  8. Wählen Sie Bucket erstellen aus.

Schritt 2: Hochladen einer Datei zu einem S3-Bucket

Laden Sie die Textdatei zu einem S3-Bucket hoch. Diese Textdatei enthält die Originaldaten, die Sie später in diesem Tutorial in Großbuchstaben umwandeln.

Sie können beispielsweise eine tutorial.txt-Datei, die den folgenden Text enthält, hochladen:

Amazon S3 Object Lambda Tutorial: You can add your own code to process data retrieved from S3 before returning it to an application.
Hochladen einer Datei in einen Bucket
  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie im linken Navigationsbereich die Option Buckets aus.

  3. Wählen Sie in der Liste Buckets den Namen des Buckets aus, den Sie in Schritt 1 (z. B. tutorial-bucket) erstellt haben, in den Sie die Datei hochladen möchten.

  4. Wählen Sie im Tab Objects (Objekte) für Ihren Bucket die Option Upload (Hochladen) aus.

  5. Wählen Sie auf der Seite Upload unter Dateien und Ordner die Option Dateien hinzufügen aus.

  6. Wählen Sie eine hochzuladende Datei und dann Open (Öffnen) aus. Sie können z. B. das oben erwähnte tutorial.txt-Dateibeispiel hochladen.

  7. Klicken Sie auf Hochladen.

Schritt 3: Erstellen eines S3-Zugriffspunkts

Um einen S3 Object Lambda Access Point für den Zugriff und die Umwandlung der ursprünglichen Daten zu verwenden, müssen Sie einen S3-Zugriffspunkt erstellen und dem S3-Bucket zuordnen, den Sie in Schritt 1 erstellt haben. Der Access Point muss sich in demselben Zustand befinden AWS-Region wie die Objekte, die Sie transformieren möchten.

Später in diesem Tutorial verwenden Sie diesen Zugriffspunkt als unterstützenden Zugriffspunkt für Ihren Object Lambda Access Point.

So erstellen Sie einen Zugangspunkt
  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie im linken Navigationsbereich Zugriffspunkte aus.

  3. Wählen Sie auf der Seite Zugriffspunkte die Option Zugriffspunkt erstellen aus.

  4. Geben Sie im Feld Name des Zugriffspunkts den gewünschten Namen für den Zugriffspunkt ein (z. B. tutorial-access-point).

    Weitere Hinweise zur Benennung von Zugangspunkten finden Sie unter Regeln zur Benennung von Amazon S3-Zugriffspunkten.

  5. Wählen Sie im Feld Bucket-Name den Namen des Buckets aus, den Sie in Schritt 1 (z. B. tutorial-bucket) erstellt haben. S3 hängt den Zugriffspunkt an diesen Bucket an.

    (Optional) Sie können S3 durchsuchen auswählen, um die Buckets in Ihrem Konto zu browsen und zu durchsuchen. Wenn Sie Browse S3 (S3 durchsuchen) wählen, wählen Sie den gewünschten Bucket aus und dann Choose path (Pfad wählen), um das Feld Bucket name (Bucket-Name) mit dem Namen dieses Buckets zu füllen.

  6. Wählen Sie für Netzwerkursprung Internetaus.

    Weitere Informationen zu Netzwerkursprüngen für Zugangspunkte finden Sie unter Erstellen von Zugriffspunkten, die auf eine Virtual Private Cloud beschränkt sind.

  7. Alle Block-Public-Access-Einstellungen sind standardmäßig für Zugriffspunkte aktiviert. Sie sollten alle Einstellungen für das Blockieren aller öffentlichen Zugriffe aktiviert lassen.

    Weitere Informationen finden Sie unter Verwalten des öffentlichen Zugriffs auf Zugriffspunkte.

  8. Behalten Sie für alle anderen Zugriffspunktseinstellungen die Standardeinstellungen bei.

    (Optional) Sie können die Zugriffspunktseinstellungen ändern, um Ihren Anwendungsfall zu unterstützen. Für dieses Tutorial empfehlen wir, dass die Standardeinstellungen beibehalten werden.

    (Optional) Wenn Sie den Zugriff auf Ihren Zugriffspunkt verwalten müssen, können Sie eine Zugriffspunkt-Richtlinie angeben. Weitere Informationen finden Sie unter Beispiele von -Zugriffspunktrichtlinien.

  9. Wählen Sie Create access point (Zugriffspunkt erstellen) aus.

Schritt 4: Erstellen einer Lambda-Funktion

Erstellen Sie zum Transformieren der ursprünglichen Daten eine Lambda-Funktion zur Verwendung mit dem S3 Object Lambda Access Point.

Schreiben von Lambda-Funktionscode und Erstellen eines Bereitstellungspakets mit einer virtuellen Umgebung

  1. Erstellen Sie auf dem lokalen Computer einen Ordner mit dem Ordnernamen object-lambda für die virtuelle Umgebung, die Sie zu einem späteren Zeitpunkt in diesem Tutorial verwenden können.

  2. Erstellen Sie im object-lambda-Ordner eine Datei mit einer Lambda-Funktion, die den gesamten Text im ursprünglichen Objekt in Großbuchstaben ändert. Sie können z. B. die folgende Funktion verwenden, die in Python geschrieben wurde. Speichern Sie diese Funktion in einer Datei mit dem Namentransform.py.

    import boto3 import requests from botocore.config import Config # This function capitalizes all text in the original object def lambda_handler(event, context): object_context = event["getObjectContext"] # Get the presigned URL to fetch the requested original object # from S3 s3_url = object_context["inputS3Url"] # Extract the route and request token from the input context request_route = object_context["outputRoute"] request_token = object_context["outputToken"] # Get the original S3 object using the presigned URL response = requests.get(s3_url) original_object = response.content.decode("utf-8") # Transform all text in the original object to uppercase # You can replace it with your custom code based on your use case transformed_object = original_object.upper() # Write object back to S3 Object Lambda s3 = boto3.client('s3', config=Config(signature_version='s3v4')) # The WriteGetObjectResponse API sends the transformed data # back to S3 Object Lambda and then to the user s3.write_get_object_response( Body=transformed_object, RequestRoute=request_route, RequestToken=request_token) # Exit the Lambda function: return the status code return {'status_code': 200}
    Anmerkung

    Die vorangehende Lambda-Beispielfunktion lädt das gesamte angeforderte Objekt in den Speicher, bevor es transformiert und an den Client zurückgegeben wird. Alternativ können Sie das Objekt aus S3 streamen, um das Laden des gesamten Objekts in den Speicher zu vermeiden. Diese Methode ist nützlich, wenn Sie mit großen Objekten arbeiten. Weitere Informationen zum Streamen von Antworten mit Object Lambda Access Points finden Sie in den Streaming-Beispielen in Arbeiten mit GetObject-Anforderungen in Lambda.

    Wenn Sie eine Lambda-Funktion für die Verwendung mit einem S3 Object Lambda Access Point schreiben, basiert die Funktion auf dem Eingabe-Ereigniskontext, den S3 Object Lambda für die Lambda-Funktion bereitstellt. Der Ereigniskontext stellt Informationen über die Anforderung bereit, die in dem von S3 Object Lambda an Lambda übergebenen Ereignis gestellt wird. Sie enthält die Parameter, die Sie verwenden, um die Lambda-Funktion zu erstellen.

    Die Felder, die zum Erstellen der vorhergehenden Lambda-Funktion verwendet werden, lauten wie folgt:

    Das Feld von getObjectContext bezeichnet die Eingabe- und Ausgabedetails für Verbindungen zu Amazon S3 und S3 Object Lambda. Es enthält die folgenden Felder:

    • inputS3Url— Ein vorsigniertesURL, mit dem die Lambda-Funktion das Originalobjekt vom unterstützenden Access Point herunterladen kann. Durch die Verwendung eines vorsignierten URL Objekts benötigt die Lambda-Funktion keine Amazon S3 S3-Leseberechtigungen, um das ursprüngliche Objekt abzurufen, und sie kann nur auf das Objekt zugreifen, das bei jedem Aufruf verarbeitet wurde.

    • outputRoute— Ein Routing-Token, das dem S3-Objekt-Lambda hinzugefügt wird, URL wenn die Lambda-Funktion aufruftWriteGetObjectResponse, um das transformierte Objekt zurückzusenden.

    • outputToken – Ein Token, das von S3 Object Lambda verwendet wird, um den WriteGetObjectResponse-Aufruf mit dem ursprünglichen Anrufer abzugleichen, wenn das transformierte Objekt zurücksendet wird.

    Weitere Informationen zu allen Feldern im Ereigniskontext finden Sie unter Format und Verwendung des Ereigniskontexts und Schreiben von Lambda-Funktionen für S3 Object Lambda Access Points.

  3. Geben Sie in Ihrem lokalen Terminal den folgenden Befehl ein, um das virtualenv-Paket zu installieren:

    python -m pip install virtualenv
  4. Öffnen Sie in Ihrem lokalen Terminal den object-lambda-Ordner, den Sie zuvor erstellt haben und geben Sie dann den folgenden Befehl ein, um eine virtuelle Umgebung namens venv zu erstellen und zu initialisieren.

    python -m virtualenv venv
  5. Geben Sie zum Aktivieren der virtuellen Umgebung den folgenden Befehl ein, um die activate-Datei aus dem Ordner der Umgebung auszuführen:

    Führen Sie für macOS-Benutzer diesen Befehl aus:

    source venv/bin/activate

    Führen Sie für Windows-Benutzer diesen Befehl aus:

    .\venv\Scripts\activate

    Jetzt ändert sich die Eingabeaufforderung und zeigt (venv) an, was darauf hinweist, dass die virtuelle Umgebung aktiv ist.

  6. Um die erforderlichen Bibliotheken zu installieren, führen Sie die folgenden Befehle Zeile für Zeile in der virtuellen venv-Umgebung aus.

    Mit diesen Befehlen werden aktualisierte Versionen der Abhängigkeiten Ihrer lambda_handler-Lambda -Funktion installiert. Bei diesen Abhängigkeiten handelt es sich AWS SDK um das Modul für Python (Boto3) und das Modul Anfragen.

    pip3 install boto3
    pip3 install requests
  7. Sie können die virtuelle Umgebung deaktivieren, indem Sie den folgenden Befehl ausführen:

    deactivate
  8. Um ein Bereitstellungspaket mit den installierten Bibliotheken als .zip-Datei mit dem Namen lambda.zip an der Wurzel des object-lambda-Verzeichnisses zu erstellen, führen Sie die folgenden Befehle Zeile für Zeile in Ihrem lokalen Terminal aus.

    Tipp

    Die folgenden Befehle müssen möglicherweise angepasst werden, um in Ihrer bestimmten Umgebung zu funktionieren. Eine Bibliothek kann beispielsweise in site-packages oder dist-packages erscheinen, und der erste Ordner könnte lib oder lib64 sein. Außerdem kann der Ordner python mit einer anderen Python-Version benannt werden. Sie können den Befehl pip show verwenden, um ein spezielles Paket zu finden.

    Führen Sie für macOS-Benutzer diese Befehle aus:

    cd venv/lib/python3.8/site-packages
    zip -r ../../../../lambda.zip .

    Führen Sie für Windows-Benutzer diese Befehle aus:

    cd .\venv\Lib\site-packages\
    powershell Compress-Archive * ../../../lambda.zip

    Der letzte Befehl speichert das Bereitstellungspaket im Stamm des object-lambda-Verzeichnisses.

  9. Fügen Sie dem Stamm Ihres Bereitstellungspakets die Funktionscode-Datei transform.py hinzu.

    Führen Sie für macOS-Benutzer diese Befehle aus:

    cd ../../../../
    zip -g lambda.zip transform.py

    Führen Sie für Windows-Benutzer diese Befehle aus:

    cd ..\..\..\
    powershell Compress-Archive -update transform.py lambda.zip

    Nach diesem Schritt sollte Ihre Verzeichnisstruktur wie folgt aussehen:

    lambda.zip$ │ transform.py │ __pycache__ | boto3/ │ certifi/ │ pip/ │ requests/ ...

Erstellen einer Lambda-Funktion mit einer Ausführungsrolle (Konsole)

  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die AWS Lambda Konsole unter. https://console.aws.amazon.com/lambda/

  2. Wählen Sie im linken Navigationsbereich die Option Functions (Funktionen) aus.

  3. Wählen Sie Create function (Funktion erstellen).

  4. Wählen Sie Author from scratch aus.

  5. Führen Sie unter Basic information (Grundlegende Informationen) die folgenden Schritte aus:

    1. Geben Sie für Function name (Funktionsname) tutorial-object-lambda-function ein.

    2. Wählen Sie für Laufzeit Python 3.8 oder eine höhere Version aus.

  6. Erweitern Sie den Abschnitt Ändern der standardmäßigen Ausführungsrolle. Wählen Sie in Execution role (Ausführungsrolle) die Option Create a new role with basic Lambda permissions (Neue Rolle mit Lambda-Basisberechtigungen erstellen) aus.

    In Schritt 5 weiter unten in diesem Tutorial fügen Sie AmazonS3 der Ausführungsrolle ObjectLambdaExecutionRolePolicy dieser Lambda-Funktion hinzu.

  7. Lassen Sie die restlichen Einstellungen bei den Standardwerten.

  8. Wählen Sie Funktion erstellen aus.

Stellen Sie Ihren Lambda-Funktion-Code mit ZIP-Dateiarchiven bereit und konfigurieren Sie die Lambda-Funktion (Konsole)

  1. Wählen Sie in der AWS Lambda Konsole https://console.aws.amazon.com/lambda/unter im linken Navigationsbereich Funktionen aus.

  2. Wählen Sie die Lambda-Funktion aus, die Sie zuvor erstellt haben (z. B tutorial-object-lambda-function).

  3. Wählen Sie auf der Seite mit den Details der Lambda-Funktion den Code-Tab. Wählen Sie im Abschnitt Quellcode die Option Upload von und dann ZIP-Datei aus.

  4. Wählen Sie Upload (Hochladen) aus, um Ihre lokale .zip-Datei auszuwählen.

  5. Wählen Sie die zuvor erstellte lambda.zip-Datei und klicken Sie dann auf Öffnen.

  6. Wählen Sie Save (Speichern) aus.

  7. Wählen Sie im Abschnitt Laufzeiteinstellungen die OptionBearbeiten aus.

  8. Bestätigen Sie auf der Seite Bearbeiten von Laufzeiteinstellungen, dass Laufzeit auf Python 3.8 oder eine höhere Version gesetzt wird.

  9. Um der Lambda-Laufzeit mitzuteilen, welche Handler-Methode in Ihrem Lambda-Funktionscode aufgerufen werden soll, geben Sie transform.lambda_handler für Handler ein.

    Wenn Sie eine Funktion in Python konfigurieren, besteht der Wert der Handler-Einstellung aus dem Dateinamen und dem Namen des Handler-Moduls, getrennt durch einen Punkt. Beispielsweise ruft transform.lambda_handler die lambda_handler-Methode auf, die in der transform.py-Datei definiert ist.

  10. Wählen Sie Save (Speichern) aus.

  11. (Optional) Wählen Sie auf der Detailseite der Lambda-Funktion den Konfiguration-Tab. Wählen Sie im linken Navigationsbereich die OptionAllgemeine Konfiguration und anschließend Bearbeiten aus. Geben Sie im Timeout-Feld 1 m 0 s ein. Lassen Sie die restlichen Einstellungen auf die Standardwerte eingestellt und wählen Sie Speichern aus.

    Timeout ist die Zeitspanne, die Lambda einer Funktion für einen Aufruf zulässt, bevor diese gestoppt wird. Der Standardwert ist 3 Sekunden. Die maximale Dauer für eine Lambda-Funktion, die von S3 Object Lambda verwendet wird, beträgt 60 Sekunden. Die Preise basieren auf dem konfigurierten Arbeitsspeicher und der Zeit, für die der Code ausgeführt wird.

Schritt 5: Konfigurieren Sie eine IAM Richtlinie für die Ausführungsrolle Ihrer Lambda-Funktion

Damit Ihre Lambda-Funktion dem GetObject Aufrufer benutzerdefinierte Daten und Antwortheader bereitstellen kann, muss die Ausführungsrolle Ihrer Lambda-Funktion über IAM Berechtigungen zum Aufrufen von verfügen. WriteGetObjectResponse API

So fügen Sie Ihrer Lambda-Funktionsrolle eine IAM Richtlinie hinzu

  1. Wählen Sie in der AWS Lambda Konsole https://console.aws.amazon.com/lambda/unter im linken Navigationsbereich Funktionen aus.

  2. Wählen Sie die Funktion aus, die Sie in Schritt 4 erstellt haben (z. B. tutorial-object-lambda-function).

  3. Wählen Sie auf der Detailseite Ihrer Lambda-Funktion den Tag Konfiguration und danach Berechtigungen im linken Navigationsbereich.

  4. Wählen Sie unter Ausführungsrolle im Bereich den Link des Rollennamens aus. Die IAM Konsole wird geöffnet.

  5. Wählen Sie auf der Übersichtsseite der IAM Konsole für die Ausführungsrolle Ihrer Lambda-Funktion den Tab Berechtigungen aus. Wählen Sie dann im Menü Add Permissions (Berechtigungen hinzufügen) die Option Attach policies (Richtlinien anfügen) aus.

  6. Geben Sie auf der Seite Attach permissions (Berechtigungen anfügen) AmazonS3ObjectLambdaExecutionRolePolicy in das Suchfeld ein, um die Liste der Richtlinien zu filtern. Aktivieren Sie das Kontrollkästchen neben dem Namen der ObjectLambdaExecutionRolePolicyAmazonS3-Richtlinie.

  7. Wählen Sie Richtlinien anfügen.

Schritt 6: Erstellen eines S3 Object Lambda Access Point

Ein S3 Object Lambda Access Point bietet die Flexibilität, eine Lambda-Funktion direkt von einer GET S3-Anfrage aus aufzurufen, sodass die Funktion Daten verarbeiten kann, die von einem S3-Zugangspunkt abgerufen wurden. Beim Erstellen und Konfigurieren eines S3 Object Lambda Access Points müssen Sie die Lambda-Funktion angeben, die aufgerufen werden soll, und den Ereigniskontext im JSON Format als benutzerdefinierte Parameter für Lambda zur Verfügung stellen.

So erstellen Sie einen S3 Object Lambda Access Point
  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie im linken Navigationsbereich Objekt-Lambda-Zugriffspunkte aus.

  3. Wählen Sie auf der Seite Object Lambda access points (Objekt-Lambda-Zugriffspunkte) die Option Create Object Lambda access point (Objekt-Lambda-Zugriffspunkt erstellen).

  4. Geben Sie unter Name des Objekt-Lambda-Access Point den Namen ein, den Sie für den Object Lambda Access Point verwenden möchten (z. B. tutorial-object-lambda-accesspoint).

  5. Geben Sie für Unterstützenden Zugangspunkt den Standardzugangspunkt ein, den Sie in Schritt 3 erstellt haben (z. B. tutorial-access-point), oder navigieren Sie zu diesem Zugangspunkt und wählen dann Unterstützenden Zugangspunkt auswählen aus.

  6. Um für S3 Objekte aus dem S3-Bucket abzurufenAPIs, damit die Lambda-Funktion sie verarbeiten kann, wählen Sie GetObject.

  7. Für die Funktion Lambda aufrufen können Sie eine der beiden folgenden Optionen für dieses Tutorial auswählen.

    • Wählen Sie Wählen Sie aus Funktionen in Ihrem Kontound wählen Sie die Lambda-Funktion aus, die Sie in Schritt 4 (z. B. tutorial-object-lambda-function) aus der Lambda-Funktion-Dropdown-Liste erstellt haben.

    • Wählen Sie Enter ARN und geben Sie dann den Amazon-Ressourcennamen (ARN) der Lambda-Funktion ein, die Sie in Schritt 4 erstellt haben.

  8. Wählen Sie für Lambda-Funktionsversion $ LATEST (die neueste Version der Lambda-Funktion, die Sie in Schritt 4 erstellt haben).

  9. (Optional) Wenn Sie Ihre Lambda-Funktion benötigen, um GET Anfragen mit Bereichs- und Artikelnummernüberschriften zu erkennen und zu verarbeiten, wählen Sie Lambda-Funktion unterstützt Anfragen mit Bereich und Lambda-Funktion unterstützt Anfragen mit Artikelnummern aus. Deaktivieren Sie andernfalls diese beiden Kontrollkästchen.

    Weitere Informationen zur Verwendung von Bereichs- oder Teilenummern mit S3 Object Lambda finden Sie unter Arbeiten mit Range- und partNumber-Headern.

  10. (Optional) Fügen Sie unter Payload — optional JSON Text hinzu, um Ihre Lambda-Funktion mit zusätzlichen Informationen zu versorgen.

    Eine Payload ist optionaler JSON Text, den Sie Ihrer Lambda-Funktion als Eingabe für alle Aufrufe bereitstellen können, die von einem bestimmten S3 Object Lambda Access Point kommen. Um das Verhalten für mehrere Object Lambda Access Points anzupassen, die dieselbe Lambda-Funktion aufrufen, können Sie Nutzlasten mit unterschiedlichen Parametern konfigurieren und so die Flexibilität Ihrer Lambda-Funktion erweitern.

    Weitere Informationen zur Nutzlast finden Sie unter Format und Verwendung des Ereigniskontexts.

  11. (Optional) Wählen Sie für Anforderungsmetriken – optional die Option Deaktivieren oder Aktivieren aus, um Ihrem Object Lambda Access Point Amazon-S3-Überwachung hinzuzufügen. Anforderungsmetriken werden zum CloudWatch Standardtarif von Amazon abgerechnet. Weitere Informationen finden Sie unter CloudWatchPreise.

  12. Behalten Sie unter Objekt-Lambda-Zugriffspunkt-Richtlinie - optional die Standardeinstellung bei.

    (Optional) Sie können eine Ressourcenrichtlinie festlegen. Diese Ressourcenrichtlinie gewährt die GetObject API Erlaubnis, den angegebenen Object Lambda Access Point zu verwenden.

  13. Lassen Sie die restlichen Einstellungen auf die Standardwerte eingestellt und klicken Sie auf Erstellen eines Objekt-Lambda-Zugriffspunkts.

Schritt 7: Anzeigen der transformierten Daten

Jetzt ist S3 Object Lambda bereit, Ihre Daten für Ihren Anwendungsfall zu transformieren. In diesem Tutorial wandelt S3 Object Lambda den gesamten Text in Ihrem Objekt in Großbuchstaben um.

Zeigen Sie die transformierten Daten in Ihrem S3 Object Lambda Access Point an

Wenn Sie den Abruf einer Datei über Ihren S3 Object Lambda Access Point anfordern, GetObject API rufen Sie S3 Object Lambda auf. S3 Object Lambda ruft die Lambda-Funktion auf, um Ihre Daten zu transformieren, und gibt dann die transformierten Daten als Antwort auf den Standard-S3-Aufruf zurück. GetObject API

  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie im linken Navigationsbereich Objekt-Lambda-Zugriffspunkte aus.

  3. Wählen Sie auf der Seite Objekt-Lambda-Zugriffspunkte den S3 Object Lambda Access Point aus, den Sie in Schritt 6 erstellt haben (z. B. tutorial-object-lambda-accesspoint).

  4. Wählen Sie auf der Registerkarte Objekte Ihres S3 Object Lambda Access Point die Datei mit dem gleichen Namen (z. B. tutorial.txt) wie diejenige aus, die Sie in Schritt 2 in den S3-Bucket hochgeladen haben.

    Diese Datei sollte alle transformierten Daten enthalten.

  5. Um die transformierten Daten anzuzeigen, wählen Sie Öffnen oder Herunterladen aus.

Ausführen eines Python-Skripts zum Drucken der ursprünglichen und transformierten Daten

Sie können S3 Object Lambda mit Ihren vorhandenen Anwendungen verwenden. Aktualisieren Sie dazu Ihre Anwendungskonfiguration, sodass der neue S3 Object Lambda Access PointARN, den Sie in Schritt 6 erstellt haben, zum Abrufen von Daten aus S3 verwendet wird.

Das folgende Python-Beispielskript druckt sowohl die ursprünglichen Daten aus dem S3-Bucket als auch die transformierten Daten aus dem S3 Object Lambda Access Point.

  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie im linken Navigationsbereich Objekt-Lambda-Zugriffspunkte aus.

  3. Wählen Sie auf der Seite Objekt-Lambda-Zugriffspunkte die Optionsschaltfläche links neben dem S3 Object Lambda Access Point aus, den Sie in Schritt 6 erstellt haben (z. B. tutorial-object-lambda-accesspoint).

  4. Wählen Sie die Option CopyARN Kopieren aus.

  5. Speichern Sie das ARN für eine spätere Verwendung.

  6. Schreiben Sie ein Python-Skript auf Ihrem lokalen Computer, um sowohl die ursprünglichen Daten aus Ihrem S3-Bucket (z. B. tutorial.txt) als auch die transformierten Daten aus Ihrem S3 Object Lambda Access Point (z. B. tutorial.txt) zu drucken. Sie können folgendes Beispiel-Skript nutzen.

    import boto3 from botocore.config import Config s3 = boto3.client('s3', config=Config(signature_version='s3v4')) def getObject(bucket, key): objectBody = s3.get_object(Bucket = bucket, Key = key) print(objectBody["Body"].read().decode("utf-8")) print("\n") print('Original object from the S3 bucket:') # Replace the two input parameters of getObject() below with # the S3 bucket name that you created in Step 1 and # the name of the file that you uploaded to the S3 bucket in Step 2 getObject("tutorial-bucket", "tutorial.txt") print('Object transformed by S3 Object Lambda:') # Replace the two input parameters of getObject() below with # the ARN of your S3 Object Lambda Access Point that you saved earlier and # the name of the file with the transformed data (which in this case is # the same as the name of the file that you uploaded to the S3 bucket # in Step 2) getObject("arn:aws:s3-object-lambda:us-west-2:111122223333:accesspoint/tutorial-object-lambda-accesspoint", "tutorial.txt")
  7. Speichern Sie Ihr Python-Skript unter einem benutzerdefinierten Namen (z. B. tutorial_print.py) im Ordner (z. B. object-lambda), den Sie in Schritt 4 auf Ihrem lokalen Computer erstellt haben.

  8. Führen Sie in Ihrem lokalen Terminal den folgenden Befehl vom Stamm des Verzeichnisses aus (z. B. object-lambda), das Sie inSchritt 4 erstellt haben.

    python3 tutorial_print.py

    Sie sollten sowohl die ursprünglichen Daten als auch die transformierten Daten (alle Texte in Großbuchstaben) über das Terminal sehen. z. B. sollten Sie etwas wie den folgenden Text sehen.

    Original object from the S3 bucket: Amazon S3 Object Lambda Tutorial: You can add your own code to process data retrieved from S3 before returning it to an application. Object transformed by S3 Object Lambda: AMAZON S3 OBJECT LAMBDA TUTORIAL: YOU CAN ADD YOUR OWN CODE TO PROCESS DATA RETRIEVED FROM S3 BEFORE RETURNING IT TO AN APPLICATION.

Schritt 8: Bereinigen

Wenn Sie Ihre Daten über S3 Object Lambda nur als Tutorial transformiert haben, löschen Sie die AWS -Ressourcen, die Sie zugewiesen haben, damit keine Gebühren mehr anfallen.

Löschen des Object Lambda Access Point

  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie im linken Navigationsbereich Objekt-Lambda-Zugriffspunkte aus.

  3. Wählen Sie auf der Seite Objekt-Lambda-Zugriffspunkte die Optionsschaltfläche links neben dem S3 Object Lambda Access Point aus, den Sie in Schritt 6 erstellt haben (z. B. tutorial-object-lambda-accesspoint).

  4. Wählen Sie Delete (Löschen).

  5. Bestätigen Sie, dass Sie Ihren Object Lambda Access Point löschen möchten, indem Sie den Namen in das angezeigte Textfeld eingeben und dann Löschen wählen.

Löschen des S3-Zugriffspunkts

  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie im linken Navigationsbereich Zugriffspunkte aus.

  3. Navigieren Sie zu dem Zugriffspunkt, den Sie in Schritt 3 (z. B. tutorial-access-point) erstellt haben, und wählen Sie die Schaltfläche neben dem Namen des Zugriffspunkts aus.

  4. Wählen Sie Löschen aus.

  5. Bestätigen Sie, dass Sie Ihren Zugriffspunkt löschen möchten, indem Sie den Namen in das angezeigte Textfeld eingeben und dann Delete (Löschen) wählen.

Löschen der Ausführungsrolle für Ihre Lambda-Funktion

  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die AWS Lambda Konsole unter https://console.aws.amazon.com/lambda/.

  2. Wählen Sie im linken Navigationsbereich die Option Funktionen aus.

  3. Wählen Sie die Funktion aus, die Sie in Schritt 4 erstellt haben (z. B. tutorial-object-lambda-function).

  4. Wählen Sie auf der Detailseite Ihrer Lambda-Funktion den Tag Konfiguration und danach Berechtigungen im linken Navigationsbereich.

  5. Wählen Sie unter Ausführungsrolle im Bereich den Link des Rollennamens aus. Die IAM Konsole wird geöffnet.

  6. Wählen Sie auf der Übersichtsseite der IAM Konsole mit der Ausführungsrolle Ihrer Lambda-Funktion die Option Rolle löschen aus.

  7. Klicken Sie im Dialogfeld auf Rolle löschen und anschließend auf Ja, löschen.

Löschen Sie die Lambda-Funktion

  1. Wählen Sie in der AWS Lambda Konsole https://console.aws.amazon.com/lambda/unter im linken Navigationsbereich Funktionen aus.

  2. Aktivieren Sie das Kontrollkästchen links neben dem Namen der Funktion, die Sie im Abschnitt Schritt 4 (z. B. tutorial-object-lambda-function) erstellt haben.

  3. Wählen Sie Actions (Aktionen) und anschließend Delete (Löschen).

  4. Wählen Sie im Bestätigungsdialogfeld Delete (Löschen) die Option Delete (Löschen) aus.

Löschen Sie die CloudWatch Protokollgruppe

  1. Öffnen Sie die CloudWatch Konsole unter https://console.aws.amazon.com/cloudwatch/.

  2. Wählen Sie im linken Navigationsbereich Log groups (Protokollgruppen) aus.

  3. Suchen Sie die Protokollgruppe, deren Name mit der Lambda-Funktion endet, die Sie in Schritt 4 (z. B. tutorial-object-lambda-function) erstellt haben.

  4. Aktivieren Sie das Kontrollkästchen links neben dem Namen der Protokollgruppe.

  5. Wählen Sie Actions (Aktionen) und dann Delete log group(s) (Protokollgruppe(n) löschen) aus.

  6. Wählen Sie im Dialogfeld Delete log group(s) (Protokollgruppe(n) löschen) die Option Delete (Löschen) aus.

Löschen Sie die Originaldatei im S3-Quell-Bucket

  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie im linken Navigationsbereich die Option Buckets aus.

  3. Wählen Sie in der Liste Bucket-Name den Namen des Buckets aus, in den Sie die Originaldatei in Schritt 2 (z. B. tutorial-bucket) hochgeladen haben.

  4. Markieren Sie das Kontrollkästchen links neben dem Namen des Objekts, das Sie löschen möchten (z. B. tutorial.txt).

  5. Wählen Sie Löschen.

  6. Bestätigen Sie auf der Seite Löschen von Objekten im Abschnitt Objekte endgültig löschen?, dass Sie dieses Objekt löschen möchten, indem Sie permanently delete im Textfeld eingeben.

  7. Wählen Sie Delete objects (Objekte löschen).

Löschen des S3-Quell-Bucket

  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie im linken Navigationsbereich die Option Buckets aus.

  3. Wählen Sie in der Liste Buckets die Optionsschaltfläche neben dem Namen des Buckets aus, den Sie in Schritt 1 (z. B. tutorial-bucket) erstellt haben.

  4. Wählen Sie Löschen.

  5. Bestätigen Sie auf der Seite Delete bucket (Bucket löschen), dass Sie den Bucket löschen möchten. Geben Sie dazu den Bucket-Namen in das Textfeld ein und wählen Sie Delete bucket (Bucket löschen).

Löschen Sie den IAM Benutzer

  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie im linken Navigationsbereich Benutzer, und aktivieren Sie dann das Kontrollkästchen neben dem Benutzer, den Sie löschen möchten.

  3. Wählen Sie oben auf der Seite Delete (Löschen) aus.

  4. Im Bereich Löschen user name? Geben Sie im Dialogfeld den Benutzernamen in das Texteingabefeld ein, um das Löschen des Benutzers zu bestätigen. Wählen Sie Löschen.

Nächste Schritte

Nach Abschluss dieses Tutorials können Sie die Lambda-Funktion an Ihren Anwendungsfall anpassen, um die von GET Standard-S3-Anfragen zurückgegebenen Daten zu ändern.

Im Folgenden finden Sie eine Liste der häufigsten Anwendungsfälle für S3 Object Lambda:

Weitere Informationen zu S3 Object Lambda finden Sie unter Transformieren von Objekten mit S3 Object Lambda.