

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
<a name="configuration-self-managed-storage"></a>

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).

**Topics**
+ [Selbstverwalteten S3-Codespeicher einrichten](#self-managed-storage-setup)
+ [Konfigurieren von Berechtigungen](#self-managed-storage-permissions)
+ [Erstellen einer Funktion mit selbstverwaltetem S3-Speicher](#self-managed-storage-create-function)
+ [Verwendung von selbstverwaltetem S3-Speicher mit Ebenen](#self-managed-storage-layers)
+ [Zwischen den Speichermodi wechseln](#self-managed-storage-switching)
+ [Funktionslebenszyklus mit selbstverwaltetem Speicher](#self-managed-storage-lifecycle)
+ [Cross-account und regionsübergreifende Nutzung](#self-managed-storage-cross-account)
+ [Überlegungen](#self-managed-storage-considerations)

## Selbstverwalteten S3-Codespeicher einrichten
<a name="self-managed-storage-setup"></a>

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.

1. Aktivieren Sie die [ S3-Versionierung ](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Versioning.html) 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.

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

1. Gewähren Sie dem Lambda-Serviceprinzipal `s3:GetObject` und `s3:GetObjectVersion` Berechtigungen für das Quellobjekt. Siehe Berechtigungen [Konfigurieren von Berechtigungen](#self-managed-storage-permissions) konfigurieren.

1. 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 angeben`REFERENCE`.

## Konfigurieren von Berechtigungen
<a name="self-managed-storage-permissions"></a>

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
<a name="self-managed-storage-create-function"></a>

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
<a name="self-managed-storage-console"></a>

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](https://console.aws.amazon.com/lambda/home#/functions) der Lambda-Konsole.

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

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

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

1. Wählen Sie unter ** Codespeichermodus ** die Option ** Referenzmodus ** aus.

1. 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
<a name="self-managed-storage-cli"></a>

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 weglassen`S3ObjectStorageMode`, ist es standardmäßig so `COPY` und Lambda speichert Ihren Code im Speicher. Lambda-managed 

### Verwenden AWS CloudFormation
<a name="self-managed-storage-cfn"></a>

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
<a name="self-managed-storage-layers"></a>

Sie können auch den selbstverwalteten S3-Codespeicher für Layer-Versionen verwenden. Verwenden Sie den `publish-layer-version` Befehl mit`S3ObjectStorageMode=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
<a name="self-managed-storage-switching"></a>

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 wechseln`REFERENCE`, löscht Lambda die Lambda-managed Kopie Ihres Quellcodes. Wenn Sie von `REFERENCE` zu wechseln`COPY`, 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
<a name="self-managed-storage-lifecycle"></a>

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 bestehen`Active`. 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
<a name="self-managed-storage-cross-account"></a>

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](https://aws.amazon.com/s3/pricing/).

## Überlegungen
<a name="self-managed-storage-considerations"></a>
+ 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.