View a markdown version of this page

Self-managed S3-Code-Speicher - AWS Lambda

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.

Self-managed S3-Code-Speicher

Wenn Sie eine Lambda-Funktion oder einen Lambda-Layer aus einem ZIP-Dateiarchiv erstellen oder aktualisieren, speichert Lambda standardmäßig eine Kopie Ihres Codes im Speicher. Lambda-managed Jedes AWS Konto hat ein Kontingent von 300 GB an Lambda-managed Speicherplatz pro Region.

Mit dem selbstverwalteten S3-Codespeicher können Sie Lambda so konfigurieren, dass Ihr Code direkt von einem S3-Bucket in Ihrem Konto aus referenziert wird. Lambda speichert keine Kopie Ihres Codes, sodass der Code nicht auf Ihr Speicherkontingent angerechnet wird. Lambda-managed Lambda greift direkt von Ihrem S3-Bucket aus auf Ihren Code zu.

Self-managed Der S3-Codespeicher ist für alle Funktionen und Ebenen verfügbar, die mithilfe von.zip-Dateiarchiven erstellt und aktualisiert wurden. Er ist mit allen S3-Speicherklassen außer Glacier-Speicherklassen kompatibel.

Anmerkung

Self-managed Der S3-Codespeicher ändert nichts an der maximalen ZIP-Bereitstellungspaketgröße, die weiterhin bei 250 MB liegt (entpackt).

Selbstverwalteten S3-Codespeicher einrichten

Gehen Sie wie folgt vor, um den selbstverwalteten S3-Codespeicher zu verwenden:

  1. Erstellen Sie einen S3-Bucket oder verwenden Sie einen vorhandenen Bucket in Ihrem Konto.

  2. Aktivieren Sie die S3-Versionierung für den Bucket. Lambda benötigt eine S3-Versionierung, um nachzuverfolgen, welche Version Ihres Quellobjekts verwendet werden soll. Jedes Mal, wenn Sie ein neues ZIP-Paket hochladen, erstellt S3 eine neue Version, damit Lambda Aktualisierungen unterscheiden kann.

  3. Laden Sie Ihr ZIP-Bereitstellungspaket in den S3-Bucket hoch.

  4. Gewähren Sie dem Lambda-Serviceprinzipal s3:GetObject und s3:GetObjectVersion Berechtigungen für das Quellobjekt. Siehe Berechtigungen Konfigurieren von Berechtigungen konfigurieren.

  5. Erstellen oder aktualisieren Sie Ihre Funktion oder Ebene, indem Sie das S3-Objekt, den S3-Schlüssel, die S3-Objektversion und die Einstellung S3ObjectStorageMode auf angebenREFERENCE.

Konfigurieren von Berechtigungen

Um den selbstverwalteten S3-Codespeicher zu verwenden, gewähren Sie dem Lambda-Service Principal (lambda.amazonaws.com) die Erlaubnis, auf Ihre Quellobjekte zuzugreifen. Fügen Sie die folgende S3-Bucket-Richtlinie hinzu:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "LambdaSelfManagedCodeAccess", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::my-bucket/my-function.zip" ], "Principal": { "Service": "lambda.amazonaws.com" }, "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:lambda:us-east-1:111122223333:function:my-function" } } } ] }

Erstellen einer Funktion mit selbstverwaltetem S3-Speicher

Sie können eine Funktion mit selbstverwaltetem S3-Codespeicher mithilfe der Konsole AWS CLI, des oder erstellen. AWS CloudFormation

Anmerkung

Der Code-Editor der Lambda-Konsole ist für Funktionen, die den Referenzmodus verwenden, nicht verfügbar. Um den Funktionscode zu bearbeiten, aktualisieren Sie die ZIP-Datei in Ihrem S3-Bucket und aktualisieren Sie die Funktion.

Verwenden der Konsole

Wenn Sie eine Funktion von einem S3-Speicherort in der Lambda-Konsole aus aktualisieren, können Sie den Codespeichermodus wählen.

Um eine Funktion so zu aktualisieren, dass sie den Referenzmodus verwendet (Konsole)
  1. Öffnen Sie die Seite Funktionen der Lambda-Konsole.

  2. Wählen Sie die zu aktualisierende Funktion aus und wählen Sie die Code-Registerkarte.

  3. Wählen Sie unter Codequelle die Option Update aus und wählen Sie dann Update aus einer Datei in Amazon S3 aus.

  4. Geben Sie für die Amazon S3-Link-URL die S3-Link-URL Ihrer ZIP-Datei ein.

  5. Wählen Sie unter Codespeichermodus die Option Referenzmodus aus.

  6. Wählen Sie Speichern.

Nachdem Sie den Referenzmodus konfiguriert haben, werden im Abschnitt Codeeigenschaften auf der Registerkarte Code der Funktion der Codespeichermodus angezeigt: Referenz und der S3-Speicherort, der auf Ihren S3-Bucket verweist.

Verwendung der AWS CLI

Verwenden Sie den create-function Befehl mit dem S3ObjectStorageMode=REFERENCE Parameter:

aws lambda create-function \ --function-name my-function \ --runtime python3.12 \ --role arn:aws:iam::111122223333:role/lambda-execution-role \ --handler lambda_function.lambda_handler \ --code S3Bucket=my-bucket,\ S3Key=my-function.zip,\ S3ObjectVersion=abc123def456,\ S3ObjectStorageMode=REFERENCE

Um eine vorhandene Funktion so zu aktualisieren, dass sie selbstverwalteten S3-Speicher verwendet:

aws lambda update-function-code \ --function-name my-function \ --s3-bucket my-bucket \ --s3-key my-function.zip \ --s3-object-version abc123def456 \ --s3-object-storage-mode REFERENCE
Wichtig

Sie müssen S3ObjectStorageMode=REFERENCE bei jedem Aufruf von angeben. update-function-code Wenn Sie es weglassenS3ObjectStorageMode, ist es standardmäßig so COPY und Lambda speichert Ihren Code im Speicher. Lambda-managed

Verwenden AWS CloudFormation

Stellen S3ObjectStorageMode Sie in Ihrer CloudFormation Vorlage REFERENCE in der Code Eigenschaft der Ressource Folgendes ein: AWS::Lambda::Function

Resources: MyFunction: Type: AWS::Lambda::Function Properties: FunctionName: my-function Runtime: python3.12 Handler: lambda_function.lambda_handler Role: !GetAtt LambdaExecutionRole.Arn Code: S3Bucket: my-bucket S3Key: my-function.zip S3ObjectVersion: abc123def456 S3ObjectStorageMode: REFERENCE

Verwendung von selbstverwaltetem S3-Speicher mit Ebenen

Sie können auch den selbstverwalteten S3-Codespeicher für Layer-Versionen verwenden. Verwenden Sie den publish-layer-version Befehl mitS3ObjectStorageMode=REFERENCE:

aws lambda publish-layer-version \ --layer-name my-layer \ --content S3Bucket=my-bucket,S3Key=my-layer.zip,S3ObjectStorageMode=REFERENCE \ --compatible-runtimes python3.12

Sie können eine beliebige Kombination aus Lambda-managed selbstverwaltetem Speicher für Funktionscode und Layercode verwenden.

Zwischen den Speichermodi wechseln

Sie können zwischen dem Lambda-managed und dem selbstverwalteten S3-Codespeicher wechseln, wenn Sie Ihren Funktionscode aktualisieren oder eine neue Layer-Version veröffentlichen. Stellen S3ObjectStorageMode Sie entweder COPY oder REFERENCE ein:

  • COPY(Standard) — Lambda kopiert Ihren Quellcode in den Lambda-managed Speicher.

  • REFERENCE— Lambda referenziert Ihren Quellcode direkt aus Ihrem S3-Bucket, ohne eine Kopie zu speichern.

Wenn Sie von COPY zu wechselnREFERENCE, löscht Lambda die Lambda-managed Kopie Ihres Quellcodes. Wenn Sie von REFERENCE zu wechselnCOPY, erstellt Lambda eine Kopie Ihres Quellcodes im Speicher. Lambda-managed Der Wechsel zu COPY schlägt fehl, wenn Sie das Speicherlimit für den Lambda-managed Code überschreiten.

Funktionslebenszyklus mit selbstverwaltetem Speicher

Lambda greift regelmäßig von Ihrem S3-Bucket aus auf das Quellobjekt zu, um Ihren Funktionscode erneut zu optimieren. Sie müssen den Zugriff auf das Quellobjekt aufrechterhalten, damit Ihre Funktion aktiv bleibt.

  • Wenn Lambda den Zugriff auf das Quellobjekt für eine Funktion verliert, geht die Funktion in den Inactive Status über. Um die Funktion wiederherzustellen, stellen Sie den Zugriff auf das Quellobjekt wieder her und aktualisieren Sie die Funktion.

  • Wenn Lambda den Zugriff auf das Quellobjekt für eine Ebene verliert, bleibt die Funktion bestehenActive. Sie können die Funktionskonfiguration aktualisieren (ohne Ebenen zu aktualisieren), den Funktionscode aktualisieren oder die Funktionskonfiguration mit neuen Ebenen aktualisieren. Das Aktualisieren der Funktionskonfiguration mit der unzugänglichen Ebene schlägt jedoch fehl.

Cross-account und regionsübergreifende Nutzung

Sie können Funktionen und Ebenen aus dem Quellcode in S3-Buckets in verschiedenen Konten und in verschiedenen Regionen erstellen. Cross-Region Beim Abrufen von Objekten fallen zusätzliche S3-Datenübertragungskosten an. Einzelheiten finden Sie unter S3-Preise.

Überlegungen

  • Self-managed Der S3-Codespeicher ist nur für Funktionen und Ebenen zur Archivierung von.zip-Dateien verfügbar. Die Container-Image-Funktionen verwenden weiterhin Amazon ECR.

  • Die maximale Größe des ZIP-Bereitstellungspakets (250 MB, entpackt) ist unverändert.

  • Sie zahlen die Amazon S3-Standardspeichertarife für Code, der in Ihren selbstverwalteten Buckets gespeichert ist. Lambda berechnet keine Gebühren für den Abruf von S3-Objekten innerhalb derselben Region.

  • Self-managed Der S3-Codespeicher ist mit allen S3-Speicherklassen außer Glacier-Speicherklassen kompatibel.

  • Sie können S3-Funktionen wie die Cross-Region S3-Replikation verwenden, um Artefakte regionsübergreifend auszutauschen, und S3-Lebenszyklusrichtlinien zur Verwaltung von Objekten.