

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.

# Verschlüsseln AWS Lambda dauerhafte Ausführungsdaten
<a name="durable-encryption"></a>

Mit [AWS Lambda langlebigen Funktionen](durable-functions.md) können Sie robuste, mehrstufige Anwendungen erstellen, die bis zu einem Jahr lang ausgeführt werden können. Mithilfe von Checkpoints können Sie jede Ausführung nach Ausfällen wiederherstellen, indem abgeschlossene Arbeiten erneut abgespielt werden.

Lambda verschlüsselt dauerhafte Ausführungsdaten immer im Ruhezustand. Sie können zusätzlich Ihren eigenen, vom AWS KMS Kunden verwalteten Schlüssel für die Funktion zur Rotationskontrolle, Audittransparenz oder Einhaltung von Vorschriften konfigurieren. Bei einem vom Kunden verwalteten Schlüssel können nur von Ihnen autorisierte Benutzer Ausführungsdaten lesen.

## Wie funktioniert Verschlüsselung
<a name="durable-encryption-how-it-works"></a>

Eine dauerhafte Lambda-Ausführung verwendet während ihrer gesamten Lebensdauer denselben KMS-Schlüssel, mit dem sie begonnen hat. Das Ändern oder Entfernen des Schlüssels für die Funktion wirkt sich nur auf Ausführungen aus, die nach der Änderung beginnen. Erfahren Sie[Wenn der vom Kunden verwaltete Schlüssel nicht verfügbar ist](#durable-encryption-key-unavailable), wie sich eine dauerhafte Ausführung verhält, wenn ihr Schlüssel nicht verfügbar ist.

Für vom Kunden verwaltete Schlüssel fallen AWS KMS Standardgebühren an. Details zu den Preisen finden Sie unter [AWS Key Management Service -Preise](https://aws.amazon.com/kms/pricing/).

## Was ist verschlüsselt
<a name="durable-encryption-what-is-encrypted"></a>

Wenn Sie einen vom Kunden verwalteten Schlüssel für eine dauerhafte Funktion konfigurieren, verwendet Lambda diesen Schlüssel, um die folgenden dauerhaften Ausführungsdaten im Ruhezustand zu verschlüsseln:
+ Die Eingabe-Payload, die Sie mit jeder Anfrage übergeben. `Invoke`
+ Checkpoint-Daten, die von der `CheckpointDurableExecution` API dauerhaft gespeichert werden, einschließlich Schrittergebnisse, Schrittfehler und verkettete Aufrufeingaben.
+ Ausführungsergebnisse und Fehler.
+ Rückrufergebnisse und Fehler, die Sie über `SendDurableExecutionCallbackSuccess` und `SendDurableExecutionCallbackFailure` einreichen.

**Function-level und langlebige Ausführungsschlüssel sind unabhängig**  
Die Funktionsebene`KMSKeyArn`, die [Umgebungsvariablen](configuration-envvars-encryption.md), [ZIP-Bereitstellungspakete](encrypt-zip-package.md) und [SnapStart](snapstart-security.md)Snapshots verschlüsselt, unterscheidet sich von der Funktionsebene, die dauerhafte `KMSKeyArn` `DurableConfig` Ausführungsdaten verschlüsselt. Wenn Sie das eine festlegen, wird das andere nicht festgelegt. Sie können denselben KMS-Schlüssel für beide verwenden, oder Sie können unterschiedliche KMS-Schlüssel verwenden.

## Richten Sie die vom Kunden verwaltete Schlüsselverschlüsselung ein
<a name="durable-encryption-setup"></a>

Die Einrichtung der vom Kunden verwalteten Schlüsselverschlüsselung für eine dauerhafte Funktion erfolgt in drei Schritten. Führen Sie die folgenden Schritte der Reihe nach aus.

### Erstellen eines kundenseitig verwalteten Schlüssels
<a name="durable-encryption-create-key"></a>

Dauerhafte Funktionen unterstützen KMS-Schlüssel mit symmetrischer Verschlüsselung in derselben AWS Region wie die Funktion. Cross-Region Schlüssel werden nicht unterstützt. Um einen symmetrischen, vom Kunden verwalteten Schlüssel zu erstellen, folgen Sie den Schritten zur [Erstellung von KMS-Schlüsseln mit symmetrischer Verschlüsselung](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk) im *AWS Key Management Service Entwicklerhandbuch*.

### Berechtigungen
<a name="durable-encryption-permissions"></a>

Sie gewähren AWS KMS Berechtigungen über die Schlüsselrichtlinie des KMS-Schlüssels.

Für die Konfiguration eines vom Kunden verwalteten Schlüssels sind AWS KMS Berechtigungen für den Prinzipal erforderlich, der die Funktion erstellt oder aktualisiert. Für das Aufrufen einer dauerhaften Funktion sind keine AWS KMS Berechtigungen für den Aufrufer erforderlich. Lambda führt die Verschlüsselung mit seinem Dienstprinzipal durch.

#### Schlüsselrichtlinie
<a name="durable-encryption-key-policy"></a>

[Schlüsselrichtlinien](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html) steuern den Zugriff auf den vom Kunden verwalteten Schlüssel. Jeder vom Kunden verwaltete Schlüssel muss genau eine Schlüsselrichtlinie haben. `Resource: "*"`Bezieht sich in einer Schlüsselrichtlinie nur auf den KMS-Schlüssel, mit dem die Richtlinie verknüpft ist, nicht auf alle KMS-Schlüssel in Ihrem Konto.

Die Schlüsselrichtlinie einer dauerhaften Funktion gewährt jedem Principal nur die AWS KMS Aktionen, die er benötigt, aufgeteilt nach Dienst- und Funktions-ARN. In den folgenden Abschnitten werden die Aussagen und Bedingungen sowie ein vollständiges Beispiel beschrieben.

**Erforderliche Richtlinienerklärungen**  
Die Richtlinie gewährt die folgenden Funktionen:
+ **Aktivieren Sie IAM-Benutzerberechtigungen**. Gewährt dem Konto-Root-Benutzer bedingungslosen Zugriff zur Verwaltung des Schlüssels. Diese Anweisung verwendet keine Bedingungen, da eine Festlegung des Gültigkeitsbereichs Sie daran hindern würde, den Schlüssel zu rotieren, zu aktualisieren oder zu löschen.
+ **Erlauben Sie Lambda, diesen Schlüssel für dauerhafte Funktionen zu verwenden**. Gewährt dem Lambda-Service Principal `kms:GenerateDataKey` und`kms:Decrypt`.
+ **Erlaubt der Funktionsausführungsrolle, dauerhafte Ausführungsdaten zu entschlüsseln**. Erteilt der Ausführungsrolle `kms:Decrypt` das Lesen des Status und das Fortschreiten der Ausführung.
+ **Erlaubt dem Autor der Funktion, diesen Schlüssel zu beschreiben**. Zuschüsse`kms:DescribeKey`, damit Lambda überprüfen kann, ob der Schlüssel symmetrisch ist und während `CreateFunction` oder aktiviert ist. `UpdateFunctionConfiguration`
+ **Erlaubt dem Autor der Funktion, diesen Schlüssel für eine bestimmte Funktion zu validieren**. Grants `kms:GenerateDataKey` und `kms:Decrypt` so kann Lambda wichtige Berechtigungen und Zugriffe mit dem Verschlüsselungskontext der Funktion während `CreateFunction` oder `UpdateFunctionConfiguration` validieren. Dadurch wird bestätigt, dass die Schlüsselrichtlinie Aufrufe für diese spezielle Funktion akzeptiert, bevor die Funktion erstellt oder aktualisiert wird.
+ **Erlaubt dauerhafte Ausführungsoperatoren**. Erteilt Operatoren `kms:Decrypt` für Aufrufe von `GetDurableExecution``IncludeExecutionData=true`, `GetDurableExecutionHistory` mit `GetDurableExecutionState``StopDurableExecution`, und den Callback-APIs.

Es hat sich bewährt, separate Prinzipale für die Ausführungsrolle, den Funktionsautor und den dauerhaften Ausführungsoperator zu verwenden, sodass jede Identität nur über die Funktionen verfügt, die sie benötigt.

**Empfohlene politische Bedingungen**  
In der Richtlinie werden die folgenden Bedingungen verwendet, um den Zugriff einzuschränken:
+ [https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-via-service](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-via-service)schränkt die Verwendung von Schlüsseln auf Anfragen ein, die über Lambda weitergeleitet werden. Wenn dies auf die Anweisungen der Ausführungsrolle, des Funktionsautors und des Operators angewendet wird, wird verhindert, dass sie den Schlüssel direkt verwenden. AWS KMS
+ [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn)und [https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount)schützen Sie sich vor dem [dienstübergreifenden Problem mit verwirrten Stellvertretern](https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html). Lambda leitet diese Werte weiter, wenn es AWS KMS mit seinen eigenen Dienstanmeldedaten aufruft. Diese Bedingung gilt nur für die Lambda Service Principal Statement. Die Anweisungen für die Ausführungsrolle, den Autor der Funktion und den Operator werden AWS KMS mit den Anmeldeinformationen für die Forward-Access-Sitzung des Aufrufers aufgerufen, die diese Header nicht enthalten.
+ [https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-encryption-context](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-encryption-context)beschränkt den Schlüssel auf eine bestimmte Funktion. Lambda fügt dies dem Verschlüsselungskontext bei jedem AWS KMS Aufruf für dauerhafte Ausführungsdaten hinzu.

Das folgende Beispiel kombiniert die obigen Anweisungen und Bedingungen.

**Example Wichtige Richtlinie für langlebige Funktionen**  

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Enable IAM User Permissions",
            "Effect": "Allow",
            "Principal": { "AWS": "arn:aws:iam::111122223333:root" },
            "Action": "kms:*",
            "Resource": "*"
        },
        {
            "Sid": "Allow Lambda to use this key for durable functions",
            "Effect": "Allow",
            "Principal": { "Service": "lambda.amazonaws.com" },
            "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:SourceAccount": "111122223333",
                    "aws:SourceArn": "arn:aws:lambda:us-east-1:111122223333:function:myDurableFunction",
                    "kms:EncryptionContext:aws:lambda:FunctionArn": "arn:aws:lambda:us-east-1:111122223333:function:myDurableFunction"
                }
            }
        },
        {
            "Sid": "Allow the function execution role to decrypt durable execution data",
            "Effect": "Allow",
            "Principal": { "AWS": "arn:aws:iam::111122223333:role/myDurableFunctionRole" },
            "Action": "kms:Decrypt",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "kms:ViaService": "lambda.us-east-1.amazonaws.com",
                    "kms:EncryptionContext:aws:lambda:FunctionArn": "arn:aws:lambda:us-east-1:111122223333:function:myDurableFunction"
                }
            }
        },
        {
            "Sid": "Allow the function author to describe this key",
            "Effect": "Allow",
            "Principal": { "AWS": "arn:aws:iam::111122223333:role/FunctionAuthor" },
            "Action": "kms:DescribeKey",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "kms:ViaService": "lambda.us-east-1.amazonaws.com"
                }
            }
        },
        {
            "Sid": "Allow the function author to validate this key for a specific function",
            "Effect": "Allow",
            "Principal": { "AWS": "arn:aws:iam::111122223333:role/FunctionAuthor" },
            "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "kms:ViaService": "lambda.us-east-1.amazonaws.com",
                    "kms:EncryptionContext:aws:lambda:FunctionArn": "arn:aws:lambda:us-east-1:111122223333:function:myDurableFunction"
                }
            }
        },
        {
            "Sid": "Allow durable execution operators",
            "Effect": "Allow",
            "Principal": { "AWS": "arn:aws:iam::111122223333:role/DurableExecutionOperator" },
            "Action": "kms:Decrypt",
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "kms:ViaService": "lambda.us-east-1.amazonaws.com",
                    "kms:EncryptionContext:aws:lambda:FunctionArn": "arn:aws:lambda:us-east-1:111122223333:function:myDurableFunction"
                }
            }
        }
    ]
}
```

Weitere Informationen zu AWS KMS wichtigen Richtlinien finden Sie unter [So ändern Sie eine wichtige Richtlinie](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html#key-policy-modifying-how-to) im *AWS Key Management Service Entwicklerhandbuch*.

### Konfigurieren Sie einen vom Kunden verwalteten Schlüssel für eine dauerhafte Funktion
<a name="durable-encryption-configure"></a>

Sie konfigurieren den vom Kunden verwalteten Schlüssel für dauerhafte Ausführungsdaten über das `KMSKeyArn` Feld des `DurableConfig` Objekts. Legen Sie ihn fest, wenn Sie die Funktion erstellen [CreateFunction](https://docs.aws.amazon.com/lambda/latest/api/API_CreateFunction.html), und aktualisieren Sie ihn bei einer vorhandenen dauerhaften Funktion mit [UpdateFunctionConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionConfiguration.html).

------
#### [ Lambda console ]

**Um einen vom Kunden verwalteten Schlüssel für eine bestehende dauerhafte Funktion zu konfigurieren**

1. Öffnen Sie die Seite [Funktionen](https://console.aws.amazon.com/lambda/home#/functions) der Lambda-Konsole.

1. Wählen Sie eine dauerhafte Funktion.

1. Wählen Sie „**Konfiguration**“ und anschließend in der linken Navigationsleiste „**Dauerhafte Ausführung**“.

1. Wählen Sie **Bearbeiten** aus.

1. Wählen Sie unter **Verschlüsselung** die Option **Einen vom Kunden verwalteten Schlüssel verwenden** und wählen Sie dann einen KMS-Schlüssel aus der Liste aus.

1. Wählen Sie **Speichern**.

------
#### [ AWS CLI ]

**Um einen vom Kunden verwalteten Schlüssel zu konfigurieren, wenn Sie eine Funktion erstellen**

Im folgenden Beispiel für eine [Funktion zum Erstellen einer Funktion](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/create-function.html) gibt die `--durable-config` Option den vom Kunden verwalteten Schlüssel-ARN zusammen mit dem dauerhaften Ausführungstimeout und der Aufbewahrungsdauer an.

```
aws lambda create-function \
  --function-name myDurableFunction \
  --runtime nodejs24.x \
  --handler index.handler \
  --role arn:aws:iam::111122223333:role/myDurableFunctionRole \
  --zip-file fileb://{{function.zip}} \
  --durable-config '{"KMSKeyArn":"{{arn:aws:kms:us-east-1:111122223333:key/key-id}}","ExecutionTimeout":3600,"RetentionPeriodInDays":30}'
```

**Um einen vom Kunden verwalteten Schlüssel für eine bestehende dauerhafte Funktion zu konfigurieren**

Verwenden Sie den Befehl [update-function-configuration](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-function-configuration.html). Schließt alle `DurableConfig` Felder ein, die Sie behalten möchten, da das gesamte Objekt `--durable-config` ersetzt wird.

```
aws lambda update-function-configuration \
  --function-name myDurableFunction \
  --durable-config '{"KMSKeyArn":"{{arn:aws:kms:us-east-1:111122223333:key/key-id}}","ExecutionTimeout":3600,"RetentionPeriodInDays":30}'
```

**Um den vom Kunden verwalteten Schlüssel aus einer dauerhaften Funktion zu entfernen**

Auslassen `KMSKeyArn` von`--durable-config`. Bestehende Ausführungen verwenden weiterhin den vom Kunden verwalteten Schlüssel, mit dem sie begonnen haben. Neue Ausführungen verwenden stattdessen die Standardverschlüsselung.

```
aws lambda update-function-configuration \
  --function-name myDurableFunction \
  --durable-config '{"ExecutionTimeout":3600,"RetentionPeriodInDays":30}'
```

------
#### [ AWS CloudFormation ]

Legen Sie in einer `AWS::Lambda::Function` Ressource die `KMSKeyArn` Eigenschaft fest: `DurableConfig`

```
Resources:
  MyDurableFunction:
    Type: AWS::Lambda::Function
    Properties:
      FunctionName: myDurableFunction
      Runtime: nodejs24.x
      Handler: index.handler
      Role: !GetAtt MyDurableFunctionRole.Arn
      Code:
        ZipFile: |
          // Your durable function code
      DurableConfig:
        KMSKeyArn: "arn:aws:kms:us-east-1:111122223333:key/key-id"
        ExecutionTimeout: 3600
        RetentionPeriodInDays: 30
```

------

**Wichtig**  
Jede dauerhafte Ausführung verwendet den vom Kunden verwalteten Schlüssel, der beim Start für die Funktion konfiguriert wurde. Das Ändern oder Entfernen des Schlüssels wirkt sich nur auf Ausführungen aus, die nach der Änderung beginnen. Bei laufenden Ausführungen wird weiterhin der Schlüssel verwendet, mit dem sie begonnen haben, bis sie abgeschlossen sind oder fehlschlagen.

## Dauerhafte Ausführungsdaten lesen
<a name="durable-encryption-reading-data"></a>

Zwei Lese-APIs geben dauerhafte Ausführungsdaten zurück:
+ `GetDurableExecution`gibt den aktuellen Status einer einzelnen Ausführung zurück, einschließlich der eingegebenen Nutzdaten, der neuesten Checkpoint-Daten und der Ergebnis- oder Fehlerinformationen.
+ `GetDurableExecutionHistory`gibt die geordnete Liste der Ereignisse zurück, die von der Ausführung ausgelöst wurden, und zeigt Checkpoint-Eingaben und -Ergebnisse, Chained-Invoke-Eingaben und -Ergebnisse sowie das Endergebnis an.

Beide APIs akzeptieren einen Anforderungsparameter. `IncludeExecutionData` Wenn `IncludeExecutionData` ja`true`, verwendet Lambda die Anmeldeinformationen des Anrufers, um den vom Kunden verwalteten Schlüssel `kms:Decrypt` aufzurufen. Lambda gibt dann die entschlüsselten Ausführungsdaten in der Antwort zurück. Die Identität des Anrufers muss `kms:Decrypt` auf dem vom Kunden verwalteten Schlüssel stehen.

Wenn dies `IncludeExecutionData` der `false` Fall ist, ruft Lambda keine Ausführungsdaten auf AWS KMS oder entschlüsselt sie nicht, und die Antwort wird auf gesetzt`ExecutionDataIncluded`. `false` Die Antwort enthält immer noch`DurableConfig`, was den vom Kunden verwalteten Schlüssel-ARN wiedergibt, den die Ausführung verwendet hat. `IncludeExecutionData`ist standardmäßig auf eingestellt`false`, sodass Anrufer, die nur Metadaten benötigen, keine Berechtigungen benötigen. AWS KMS 

**Beispiel: `GetDurableExecution` Antwort mit `IncludeExecutionData=false`**

```
{
    "DurableExecutionArn": "arn:aws:lambda:us-east-1:111122223333:function:myDurableFunction:execution:exec-abc123",
    "DurableExecutionName": "exec-abc123",
    "FunctionArn": "arn:aws:lambda:us-east-1:111122223333:function:myDurableFunction",
    "StartTimestamp": 1733256000,
    "Status": "RUNNING",
    "ExecutionDataIncluded": false,
    "DurableConfig": {
        "ExecutionTimeout": 3600,
        "KMSKeyArn": "arn:aws:kms:us-east-1:111122223333:key/key-id",
        "RetentionPeriodInDays": 30
    }
}
```

## Chained ruft auf
<a name="durable-encryption-chained-invokes"></a>

Wenn eine dauerhafte Funktion Chained Invoke verwendet, um eine andere dauerhafte Funktion aufzurufen, behandelt Lambda die untergeordnete Ausführung als unabhängige dauerhafte Ausführung: Sie hat ihre eigene Ausführungs-ID, ihren eigenen Checkpoint-Stream und ihren eigenen vom Kunden verwalteten Schlüssel. Die vom Kunden verwaltete Schlüsselkonfiguration des Elternteils hat keine Auswirkungen auf die Daten des Kindes, und die vom Kunden verwaltete Schlüsselkonfiguration des Kindes hat keine Auswirkungen auf die Daten des Elternteils.

**Berechtigungen**  
Der Lambda-Serviceprinzipal muss über `kms:GenerateDataKey` und `kms:Decrypt` auf dem vom Kunden verwalteten Schlüssel der untergeordneten Funktion verfügen. Wenn die übergeordnete und die untergeordnete Funktion unterschiedliche vom Kunden verwaltete Schlüssel verwenden, gewähren Sie dem Dienstprinzipal Zugriff auf jeden Schlüssel separat. Für die Ausführungsrolle der übergeordneten Funktion sind keine Berechtigungen für den vom Kunden verwalteten Schlüssel des untergeordneten Elements erforderlich.

**Identifizieren Sie, welcher Schlüssel welche Ausführung verschlüsselt hat**  
Beides `GetDurableExecution` und `ListDurableExecutionsByFunction` geben den vom Kunden verwalteten Schlüssel-ARN zurück, der jede Ausführung verschlüsselt hat. Verwenden Sie diese APIs, um zu überprüfen, welcher Schlüssel gültig war, als eine übergeordnete oder untergeordnete Ausführung gestartet wurde.

## Datenschlüssel-Caching
<a name="durable-encryption-data-key-caching"></a>

Um das AWS KMS Anrufvolumen zu reduzieren und die Verfügbarkeit bei Serviceunterbrechungen zu verbessern, speichert Lambda einen aus Ihrem vom Kunden verwalteten Schlüssel generierten Datenschlüssel für bis zu 15 Minuten im Cache. Solange der Cache warm ist, verwendet Lambda denselben Datenschlüssel für alle Operationen innerhalb einer Ausführung und für alle Ausführungen, die während des Cache-Fensters gestartet wurden.

**Cost (Kosten)**  
Per-execution AWS KMS Die Kosten bleiben niedrig, da Lambda `GenerateDataKey` höchstens einmal pro Cache-Fenster aufruft, nicht einmal pro Checkpoint. Bei hohen Anforderungsraten sinken die Kosten pro Ausführung weiter, da mehr Ausführungen jeden zwischengespeicherten Datenschlüssel gemeinsam nutzen. Ihnen werden die AWS KMS Aufrufe in Rechnung gestellt, die Lambda tatsächlich tätigt, nicht für jeden Checkpoint oder jeden Lesevorgang.

**Statische Stabilität**  
Datenschlüssel bleiben bis zu 15 Minuten zwischengespeichert. Änderungen an Ihrem Schlüssel werden bei der nächsten Cache-Aktualisierung wirksam. Bei längeren Serviceunterbrechungen bedient Lambda weiterhin den Service aus dem Cache, sodass die Ausführung während des Fluges weiterläuft.

**CloudTrail**  
Das Zwischenspeichern von Datenschlüsseln bedeutet, dass Sie weniger `GenerateDataKey` Ereignisse sehen, CloudTrail als es Ausführungen oder Checkpoints gibt. Sehen Sie sich [Überwachung von KMS-Schlüsseln im Hinblick auf dauerhafte Funktionen](#durable-encryption-monitoring) zum Beispiel Ereignisse an.

## Wenn der vom Kunden verwaltete Schlüssel nicht verfügbar ist
<a name="durable-encryption-key-unavailable"></a>

Wenn der vom Kunden verwaltete Schlüssel, mit dem eine Ausführung gestartet wurde, deaktiviert ist, zum Löschen geplant ist oder sein Zugriff aufgrund der Schlüsselrichtlinie gesperrt wurde, kann die Ausführung nicht weiter voranschreiten. Beim nächsten Checkpoint schlägt Lambda die Ausführung mit einem Fehler fehl, der nicht erneut versucht werden kann. AWS KMS Durch die Wiederherstellung des Zugriffs auf den Schlüssel wird die Ausführung nicht automatisch fortgesetzt. Sie müssen eine neue Ausführung starten.

APIs, die Payloads lesen oder schreiben, schlagen ebenfalls fehl, wenn der Schlüssel nicht verfügbar ist. Sie können eine der folgenden Ausnahmen zurückgeben:
+ `KMSAccessDeniedException`: Lambda konnte dauerhafte Ausführungsdaten nicht entschlüsseln, da der Zugriff auf den KMS-Schlüssel verweigert wurde.
+ `KMSDisabledException`: Lambda konnte dauerhafte Ausführungsdaten nicht entschlüsseln, da der KMS-Schlüssel deaktiviert ist.
+ `KMSInvalidStateException`: Lambda konnte dauerhafte Ausführungsdaten nicht entschlüsseln, da der Status des KMS-Schlüssels nicht gültig ist für. `Decrypt`
+ `KMSNotFoundException`: Lambda konnte dauerhafte Ausführungsdaten nicht entschlüsseln, da der KMS-Schlüssel nicht gefunden wurde.

Durch die Wiederherstellung des Zugriffs auf den KMS-Schlüssel können diese Lese-APIs bei Ausführungen, die bereits fehlgeschlagen sind, wieder erfolgreich sein. Fehlgeschlagene Ausführungen bleiben fehlschlagen. Sie müssen eine neue Ausführung starten.

Um die Ausführungsmetadaten zu überprüfen, während der KMS-Schlüssel nicht verfügbar ist, rufen Sie `GetDurableExecution` mit `IncludeExecutionData=false` an. Dadurch werden der Status, die Zeitstempel und `DurableConfig` (einschließlich des KMS-Schlüssels ARN) der Ausführung ohne Aufruf AWS KMS zurückgegeben.

Da Lambda Datenschlüssel zwischenspeichert, wird die Deaktivierung eines Schlüssels nicht sofort wirksam. Details hierzu finden Sie unter [Datenschlüssel-Caching](#durable-encryption-data-key-caching).

**Wichtig**  
Durch das Löschen eines KMS-Schlüssels, von dem laufende oder beibehaltene Ausführungen immer noch abhängen, werden diese Ausführungen und ihr Verlauf dauerhaft zerstört.

## Überwachung von KMS-Schlüsseln im Hinblick auf dauerhafte Funktionen
<a name="durable-encryption-monitoring"></a>

Wenn Sie einen vom Kunden verwalteten Schlüssel mit einer dauerhaften Funktion verwenden, können Sie [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)damit die AWS KMS Anrufe verfolgen, die Lambda in Ihrem Namen tätigt. Allgemeine Hinweise zur Suche nach AWS KMS Ereignissen finden Sie unter [Suchen nach AWS KMS API-Aktivitäten](https://docs.aws.amazon.com/kms/latest/developerguide/logging-using-cloudtrail.html#searching-kms-ct).

Um zu überprüfen, ob Lambda Ihren Schlüssel wie vorgesehen verwendet, suchen Sie in jedem Ereignis nach diesen Feldern:
+ `eventName`: einer von `GenerateDataKey``Decrypt`, oder `DescribeKey`
+ `eventSource`: `kms.amazonaws.com`
+ `userIdentity.invokedBy`: `lambda.amazonaws.com`
+ `requestParameters.encryptionContext.aws:lambda:FunctionArn`: der ARN der dauerhaften Funktion

Bei den folgenden Beispielen handelt es sich um CloudTrail Ereignisse aus einem `CreateFunction` `UpdateFunctionConfiguration` OR-Aufruf, bei dem ein vom Kunden verwalteter Schlüssel für eine dauerhafte Funktion konfiguriert wird. Lambda gibt drei AWS KMS Aufrufe aus, um den Schlüssel zu validieren: einen echten und einen `DescribeKey` Probelauf und. `GenerateDataKey` `Decrypt`

------
#### [ GenerateDataKey ]

Wenn Sie die `KMSKeyArn` Eingabe festlegen oder ändern`DurableConfig`, führt Lambda einen Probelauf mit Ihrem vom `GenerateDataKey` Kunden verwalteten Schlüssel aus, um zu überprüfen, ob die Schlüsselrichtlinie es Lambda ermöglicht, Datenschlüssel für den Verschlüsselungskontext dieser Funktion abzuleiten. Der Testlauf führt keine kryptografische Arbeit durch, sondern zeichnet ein vollständiges Ereignis auf. CloudTrail Das folgende Beispielereignis zeichnet den Probelauf auf: `GenerateDataKey`

```
{
    "eventVersion": "1.11",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROA123456789EXAMPLE:example",
        "arn": "arn:aws:sts::111122223333:assumed-role/FunctionAuthor/example",
        "accountId": "111122223333",
        "accessKeyId": "ASIA123456789EXAMPLE",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROA123456789EXAMPLE",
                "arn": "arn:aws:iam::111122223333:role/FunctionAuthor",
                "accountId": "111122223333",
                "userName": "FunctionAuthor"
            },
            "attributes": {
                "creationDate": "2026-01-15T16:54:42Z",
                "mfaAuthenticated": "false"
            }
        },
        "invokedBy": "lambda.amazonaws.com"
    },
    "eventTime": "2026-01-15T16:55:00Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "GenerateDataKey",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "lambda.amazonaws.com",
    "userAgent": "lambda.amazonaws.com",
    "errorCode": "DryRunOperationException",
    "errorMessage": "The request would have succeeded, but the DryRun option is set.",
    "requestParameters": {
        "encryptionContext": {
            "aws:lambda:FunctionArn": "arn:aws:lambda:us-east-1:111122223333:function:myDurableFunction"
        },
        "dryRun": true,
        "keyId": "arn:aws:kms:us-east-1:111122223333:key/key-id",
        "keySpec": "AES_256"
    },
    "responseElements": null,
    "additionalEventData": {
        "keyMaterialId": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0EXAMPLE"
    },
    "requestID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa",
    "eventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEbbbbb",
    "readOnly": true,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-east-1:111122223333:key/key-id"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "eventCategory": "Management"
}
```

------
#### [ Decrypt ]

Wenn Sie die `KMSKeyArn` Eingabe festlegen oder ändern`DurableConfig`, führt `Decrypt` Lambda auch einen Probelauf mit Ihrem vom Kunden verwalteten Schlüssel aus, um zu überprüfen, ob die Schlüsselrichtlinie es Lambda ermöglicht, Daten für den Verschlüsselungskontext dieser Funktion zu entschlüsseln. Der Testlauf verwendet, sodass kein echter Chiffretext erforderlich `IGNORE_CIPHERTEXT` ist. Das folgende Beispielereignis zeichnet den Probelauf auf: `Decrypt`

```
{
    "eventVersion": "1.11",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROA123456789EXAMPLE:example",
        "arn": "arn:aws:sts::111122223333:assumed-role/FunctionAuthor/example",
        "accountId": "111122223333",
        "accessKeyId": "ASIA123456789EXAMPLE",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROA123456789EXAMPLE",
                "arn": "arn:aws:iam::111122223333:role/FunctionAuthor",
                "accountId": "111122223333",
                "userName": "FunctionAuthor"
            },
            "attributes": {
                "creationDate": "2026-01-15T16:54:42Z",
                "mfaAuthenticated": "false"
            }
        },
        "invokedBy": "lambda.amazonaws.com"
    },
    "eventTime": "2026-01-15T16:55:00Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "Decrypt",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "lambda.amazonaws.com",
    "userAgent": "lambda.amazonaws.com",
    "errorCode": "DryRunOperationException",
    "errorMessage": "The request would have succeeded, but the DryRun option is set.",
    "requestParameters": {
        "encryptionContext": {
            "aws:lambda:FunctionArn": "arn:aws:lambda:us-east-1:111122223333:function:myDurableFunction"
        },
        "dryRun": true,
        "keyId": "arn:aws:kms:us-east-1:111122223333:key/key-id",
        "dryRunModifiers": ["IGNORE_CIPHERTEXT"],
        "encryptionAlgorithm": "SYMMETRIC_DEFAULT"
    },
    "responseElements": null,
    "additionalEventData": {
        "keyMaterialId": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0EXAMPLE"
    },
    "requestID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa",
    "eventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEbbbbb",
    "readOnly": true,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-east-1:111122223333:key/key-id"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "eventCategory": "Management"
}
```

------
#### [ DescribeKey ]

Wenn Sie das `KMSKeyArn` In setzen oder ändern`DurableConfig`, ruft Lambda auf, `DescribeKey` um zu bestätigen, dass der Schlüssel symmetrisch und aktiviert ist, bevor es die Änderung akzeptiert. Im Gegensatz zu den `Decrypt` Sonden `GenerateDataKey` und ist dies ein echter Aufruf, kein Probelauf. Das folgende Beispielereignis zeichnet den Vorgang `DescribeKey` auf:

```
{
    "eventVersion": "1.11",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "AROA123456789EXAMPLE:example",
        "arn": "arn:aws:sts::111122223333:assumed-role/FunctionAuthor/example",
        "accountId": "111122223333",
        "accessKeyId": "ASIA123456789EXAMPLE",
        "sessionContext": {
            "sessionIssuer": {
                "type": "Role",
                "principalId": "AROA123456789EXAMPLE",
                "arn": "arn:aws:iam::111122223333:role/FunctionAuthor",
                "accountId": "111122223333",
                "userName": "FunctionAuthor"
            },
            "attributes": {
                "creationDate": "2026-01-15T16:54:42Z",
                "mfaAuthenticated": "false"
            }
        },
        "invokedBy": "lambda.amazonaws.com"
    },
    "eventTime": "2026-01-15T16:55:00Z",
    "eventSource": "kms.amazonaws.com",
    "eventName": "DescribeKey",
    "awsRegion": "us-east-1",
    "sourceIPAddress": "lambda.amazonaws.com",
    "userAgent": "lambda.amazonaws.com",
    "requestParameters": {
        "keyId": "arn:aws:kms:us-east-1:111122223333:key/key-id"
    },
    "responseElements": null,
    "requestID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEaaaaa",
    "eventID": "a1b2c3d4-5678-90ab-cdef-EXAMPLEbbbbb",
    "readOnly": true,
    "resources": [
        {
            "accountId": "111122223333",
            "type": "AWS::KMS::Key",
            "ARN": "arn:aws:kms:us-east-1:111122223333:key/key-id"
        }
    ],
    "eventType": "AwsApiCall",
    "managementEvent": true,
    "recipientAccountId": "111122223333",
    "eventCategory": "Management"
}
```

------

## Verwandte Verschlüsselungsthemen
<a name="durable-encryption-related"></a>
+ [Datenverschlüsselung im Ruhezustand für Lambda](security-encryption-at-rest.md)
+ [Sicherung von Lambda-Umgebungsvariablen](configuration-envvars-encryption.md)
+ [Verschlüsselung von Lambda-ZIP-Bereitstellungspaketen](encrypt-zip-package.md)
+ [Sicherheitsmodell für Lambda SnapStart](snapstart-security.md)
+ [Dauerhafte Lambda-Funktionen konfigurieren](durable-configuration.md)