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-Codespeicher
Wenn Sie eine Lambda-Funktion oder -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 Lambda-managed Speicherkontingent von 300 GB pro Region.
Mit dem selbstverwalteten S3-Codespeicher können Sie Lambda so konfigurieren, dass Ihr Code direkt aus einem S3-Bucket in Ihrem Konto referenziert wird. Lambda speichert keine Kopie Ihres Codes, sodass der Code nicht auf Ihr Lambda-managed Speicherkontingent angerechnet wird. 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. Es ist mit allen S3-Speicherklassen außer Glacier-Speicherklassen kompatibel.
Anmerkung
Self-managed Der S3-Codespeicher ändert nichts an der maximalen Größe des ZIP-Bereitstellungspakets, die weiterhin bei 250 MB (entpackt) liegt.
Themen
Einrichtung eines selbstverwalteten S3-Codespeichers
Gehen Sie wie folgt vor, um den selbstverwalteten S3-Codespeicher zu verwenden:
-
Erstellen Sie einen S3-Bucket oder verwenden Sie einen vorhandenen Bucket in Ihrem Konto.
-
Aktivieren Sie die S3-Versionierung für den Bucket. Lambda erfordert S3-Versionierung, um zu verfolgen, welche Version Ihres Quellobjekts verwendet werden soll. Jedes Mal, wenn Sie ein neues .zip-Paket hochladen, erstellt S3 eine neue Version, sodass Lambda Aktualisierungen unterscheiden kann.
-
Laden Sie Ihr .zip-Bereitstellungspaket in den S3-Bucket hoch.
-
Erteilen Sie dem Lambda-Dienstprinzipal
s3:GetObjectunds3:GetObjectVersionBerechtigungen für das Quellobjekt. Siehe Berechtigungen konfigurieren. -
Erstellen oder aktualisieren Sie Ihre Funktion oder Ebene, indem Sie das S3-Objekt, den S3-Schlüssel, die S3-Objektversion und die Einstellung
S3ObjectStorageModeauf angebenREFERENCE.
Konfigurieren von Berechtigungen
Um den selbstverwalteten S3-Codespeicher zu verwenden, gewähren Sie dem Lambda Service Principal (lambda.amazonaws.com) die Berechtigung, 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" } } } ] }
Eine Funktion mit selbstverwaltetem S3-Speicher erstellen
Sie können eine Funktion mit selbstverwaltetem S3-Codespeicher mithilfe von oder erstellen. AWS CLI AWS CloudFormation
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 bestehende Funktion zu aktualisieren, um selbstverwalteten S3-Speicher zu verwenden:
aws lambda update-function-code \ --function-name my-function \ --s3-bucketmy-bucket\ --s3-keymy-function.zip\ --s3-object-versionabc123def456\ --s3-object-storage-mode REFERENCE
Wichtig
Sie müssen S3ObjectStorageMode=REFERENCE bei jedem Aufruf angeben. update-function-code Wenn Sie es weglassenS3ObjectStorageMode, ist es standardmäßig 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-bucketS3Key:my-function.zipS3ObjectVersion:abc123def456S3ObjectStorageMode: REFERENCE
Verwenden 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 Speichermodi wechseln
Sie können zwischen dem Lambda-managed selbstverwalteten S3-Codespeicher wechseln, wenn Sie Ihren Funktionscode aktualisieren oder eine neue Layer-Version veröffentlichen. Wählen S3ObjectStorageMode Sie entweder COPY oderREFERENCE:
-
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 Lambda-managed Speicher. Der Wechsel zu COPY schlägt fehl, wenn Sie das Lambda-managed Code-Speicherlimit überschreiten.
Funktionslebenszyklus mit selbstverwaltetem Speicher
Lambda greift regelmäßig auf das Quellobjekt aus Ihrem S3-Bucket zu, um Ihren Funktionscode neu 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, wechselt die Funktion in den
InactiveStatus. 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 erhalten
Active. Sie können die Funktionskonfiguration aktualisieren (ohne die Ebenen zu aktualisieren), den Funktionscode aktualisieren oder die Funktionskonfiguration mit neuen Ebenen aktualisieren. Das Aktualisieren der Funktionskonfiguration mit der Ebene, auf die nicht zugegriffen werden kann, 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 Kosten für die S3-Datenübertragung an. Einzelheiten finden Sie unter S3-Preise
Überlegungen
-
Self-managed Der S3-Codespeicher ist nur für Archivfunktionen und Ebenen von ZIP-Dateien verfügbar. Container-Image-Funktionen verwenden weiterhin Amazon ECR.
-
Die maximale Größe des ZIP-Bereitstellungspakets (250 MB entpackt) ist unverändert.
-
Sie zahlen die standardmäßigen Amazon S3 S3-Speichergebühren 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 gemeinsam zu nutzen, und S3-Lebenszyklusrichtlinien zur Verwaltung von Objekten verwenden.