

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 können Sie robuste](durable-functions.md), mehrstufige Anwendungen erstellen, die bis zu einem Jahr lang laufen. Mithilfe von Checkpoints können Sie jede Ausführung nach einem Ausfall wiederherstellen, indem abgeschlossene Arbeiten erneut abgespielt werden.

Lambda verschlüsselt dauerhafte Ausführungsdaten immer im Ruhezustand. Sie können für die Funktion zusätzlich Ihren eigenen, vom AWS KMS Kunden verwalteten Schlüssel zur Rotationskontrolle, Audittransparenz oder Einhaltung von Vorschriften konfigurieren. Mit einem vom Kunden verwalteten Schlüssel können nur von Ihnen autorisierte Prinzipale 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 in der 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 eingegebene Nutzlast, die Sie bei jeder Anfrage übergeben. `Invoke`
+ Checkpoint-Daten, die von der `CheckpointDurableExecution` API beibehalten 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 dauerhafte Ausführungsschlüssel sind unabhängig**  
Die Funktionsebene`KMSKeyArn`, die [ Umgebungsvariablen](configuration-envvars-encryption.md), [ ZIP-Bereitstellungspakete und [ SnapStart ](snapstart-security.md) Snapshots verschlüsselt](encrypt-zip-package.md), ist von der Funktionsebene getrennt, die dauerhafte `KMSKeyArn` Ausführungsdaten `DurableConfig` verschlüsselt. Wenn Sie eine Einstellung festlegen, wird die andere nicht festgelegt. Sie können für beide den gleichen KMS-Schlüssel verwenden, oder Sie können verschiedene KMS-Schlüssel verwenden.

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

Die Einrichtung einer 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 den Aufruf 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, an den die Richtlinie angehängt 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, und zwar in Bezug auf Dienst- und Funktions-ARN. In den folgenden Abschnitten werden die Anweisungen, Bedingungen und ein vollständiges Beispiel beschrieben.

**Erforderliche Grundsatzerklärungen**  
Die Richtlinie gewährt die folgenden Funktionen:
+ **Aktivieren Sie IAM-Benutzerberechtigungen**. Gewährt dem Root-Konto bedingungslosen Zugriff zur Verwaltung des Schlüssels. Für diese Anweisung gibt es keine Bedingungen, da Sie aufgrund des Gültigkeitsbereichs daran gehindert würden, 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-Serviceprinzipal `kms:GenerateDataKey` und. `kms:Decrypt`
+ **Erlaubt der Funktionsausführungsrolle, dauerhafte Ausführungsdaten zu entschlüsseln. ** Gewährt der Ausführungsrolle`kms:Decrypt`, den Status zu lesen und die Ausführung fortzusetzen.
+ **Erlauben Sie dem Autor der Funktion, diesen Schlüssel zu beschreiben**. Gewährt`kms:DescribeKey`, damit Lambda überprüfen kann, ob der Schlüssel symmetrisch ist und während `CreateFunction` oder aktiviert ist. `UpdateFunctionConfiguration`
+ **Erlauben Sie dem Autor der Funktion, diesen Schlüssel für eine bestimmte Funktion zu validieren. ** Zuschüsse`kms:GenerateDataKey`, `kms:Decrypt` sodass Lambda die Schlüsselberechtigungen und den Zugriff mit dem Verschlüsselungskontext der Funktion während `CreateFunction` oder `UpdateFunctionConfiguration` validieren kann. Dies bestätigt, dass die Schlüsselrichtlinie Aufrufe für diese spezielle Funktion akzeptiert, bevor die Funktion erstellt oder aktualisiert wird.
+ **Erlauben Sie dauerhafte Ausführungsoperatoren**. Gewährt Operatoren `kms:Decrypt` für Aufrufe von `GetDurableExecution``IncludeExecutionData=true`, `GetDurableExecutionHistory` mit `GetDurableExecutionState``StopDurableExecution`, und den Callback-APIs.

Es hat sich bewährt, separate Principals 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**  
Die Richtlinie verwendet die folgenden Bedingungen, um den Zugriff einzuschränken:
+ [kms: ViaService ](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 Sie dies auf die Anweisungen für die Ausführungsrolle, den Funktionsautor und den Operator anwenden, wird verhindert, dass diese den Schlüssel direkt verwenden. AWS KMS
+ [aws: SourceArn ](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourcearn) und [ aws: SourceAccount ](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-sourceaccount) schützen vor dem [ dienstübergreifenden verwirrten Stellvertreter-Problem](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-Anweisung. Die Anweisungen für die Ausführungsrolle, den Funktionsautor und den Operator werden AWS KMS mit den Forward-Access-Sitzungsanmeldeinformationen des Aufrufers aufgerufen, die diese Header nicht enthalten.
+ [kms: beschränkt den EncryptionContext:aws:lambda:FunctionArn ](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-encryption-context) 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 dauerhafte 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 [ im *AWS Key Management Service Entwicklerhandbuch unter *](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying.html#key-policy-modifying-how-to) So ändern Sie eine wichtige Richtlinie.

### 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 mit erstellen [ CreateFunction](https://docs.aws.amazon.com/lambda/latest/api/API_CreateFunction.html); aktualisieren Sie ihn für eine bestehende dauerhafte 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 dann in der linken Navigationsleiste ** Dauerhafte Ausführung ** aus.

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 [https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/create-function.html](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/create-function.html) Create-Function-Beispiel gibt die `--durable-config` Option den ARN des vom Kunden verwalteten Schlüssels zusammen mit dem dauerhaften Ausführungs-Timeout und der Aufbewahrungsfrist 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ßen Sie 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 von`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**  
Bei jeder dauerhaften Ausführung wird der vom Kunden verwaltete Schlüssel verwendet, der für die Funktion beim Start konfiguriert wurde. Das Ändern oder Entfernen des Schlüssels wirkt sich nur auf Ausführungen aus, die nach der Änderung beginnen. Während der Ausführung wird 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 Nutzlast, der neuesten Checkpoint-Daten und Ergebnis- oder Fehlerinformationen.
+ `GetDurableExecutionHistory`gibt die geordnete Liste der Ereignisse zurück, die die Ausführung ausgelöst hat. Sie zeigt Checkpoint-Eingaben und -Ergebnisse, Eingaben und Ergebnisse von verketteten Aufrufen sowie das Endergebnis.

Beide APIs akzeptieren einen Anforderungsparameter. `IncludeExecutionData` `IncludeExecutionData`Ist dies der `true` Fall, verwendet Lambda die Anmeldeinformationen des Anrufers, um den vom Kunden verwalteten Schlüssel abzurufen`kms:Decrypt`. 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.

`IncludeExecutionData`Ist dies der `false` Fall, 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 Folgendes`DurableConfig`, was den vom Kunden verwalteten Schlüssel-ARN widerspiegelt, 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 langlebige 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 übergeordneten Elements hat keine Auswirkung auf die Daten des untergeordneten Elements, und die vom Kunden verwaltete Schlüsselkonfiguration des untergeordneten Elements hat keine Auswirkung auf die Daten des übergeordneten Elements.

**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 Serviceprinzipal separat Zugriff auf jeden Schlüssel. Für die Ausführungsrolle der übergeordneten Funktion sind keine Berechtigungen für den vom Kunden verwalteten Schlüssel der untergeordneten Funktion erforderlich.

**Identifizieren Sie, welcher Schlüssel welche Ausführung verschlüsselt hat**  
Beide `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 die Ausführung einer übergeordneten oder untergeordneten Ausführung begann.

## 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 Datenschlüssel, der anhand Ihres vom Kunden verwalteten Schlüssels generiert wurde, bis zu 15 Minuten lang im Cache. Solange der Cache warm ist, verwendet Lambda denselben Datenschlüssel für alle Operationen innerhalb einer Ausführung und für alle während des Cache-Fensters gestarteten Ausführungen wieder.

**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 sich mehr Ausführungen jeden zwischengespeicherten Datenschlüssel teilen. Ihnen werden die AWS KMS Aufrufe in Rechnung gestellt, die Lambda tatsächlich tätigt, nicht für jeden Checkpoint oder 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 Betriebsunterbrechungen bedient Lambda weiterhin den Cache und sorgt so dafür, dass die Ausführung während des Fluges weiterläuft.

**CloudTrail**  
Durch das Zwischenspeichern von Datenschlüsseln sehen Sie weniger `GenerateDataKey` Ereignisse CloudTrail als Ausführungen oder Checkpoints. Siehe [Überwachung der KMS-Schlüssel für dauerhafte Funktionen](#durable-encryption-monitoring) zum Beispiel Ereignisse.

## 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 begonnen hat, deaktiviert ist oder dessen Löschung geplant ist oder ihm der Zugriff durch die Schlüsselrichtlinie entzogen wurde, kann die Ausführung nicht weiter voranschreiten. Beim nächsten Checkpoint schlägt Lambda die Ausführung mit einem Fehler fehl, der nicht wiederholt 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 keine dauerhaften Ausführungsdaten entschlüsseln, da der Zugriff auf den KMS-Schlüssel verweigert wurde.
+ `KMSDisabledException`: Lambda konnte keine dauerhaften Ausführungsdaten entschlüsseln, da der KMS-Schlüssel deaktiviert ist.
+ `KMSInvalidStateException`: Lambda konnte keine dauerhaften Ausführungsdaten entschlüsseln, da der Status des KMS-Schlüssels für nicht gültig ist. `Decrypt`
+ `KMSNotFoundException`: Lambda konnte keine dauerhaften Ausführungsdaten entschlüsseln, da der KMS-Schlüssel nicht gefunden wurde.

Durch die Wiederherstellung des Zugriffs auf den KMS-Schlüssel sind diese Lese-APIs für bereits fehlgeschlagene Ausführungen wieder erfolgreich. Fehlgeschlagene Ausführungen bleiben fehlgeschlagen; Sie müssen eine neue Ausführung starten.

Rufen `GetDurableExecution` Sie mit auf, um die Ausführungsmetadaten zu überprüfen, während der KMS-Schlüssel nicht verfügbar ist. `IncludeExecutionData=false` Dadurch werden der Ausführungsstatus, die Zeitstempel und `DurableConfig` (einschließlich des KMS-Schlüssel-ARN) 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 zurückgehaltene Ausführungen immer noch abhängen, werden diese Ausführungen und ihr Verlauf dauerhaft zerstört.

## Überwachung der KMS-Schlüssel für dauerhafte Funktionen
<a name="durable-encryption-monitoring"></a>

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

Um zu bestätigen, dass Lambda Ihren Schlüssel wie vorgesehen verwendet, suchen Sie bei jedem Ereignis nach diesen Feldern:
+ `eventName`: eines von `GenerateDataKey``Decrypt`, oder `DescribeKey`
+ `eventSource`: `kms.amazonaws.com`
+ `userIdentity.invokedBy`: `lambda.amazonaws.com`
+ `requestParameters.encryptionContext.aws:lambda:FunctionArn`: der ARN der dauerhaften Funktion

Die folgenden Beispiele sind CloudTrail Ereignisse aus einem `CreateFunction` `UpdateFunctionConfiguration` OR-Aufruf, der einen vom Kunden verwalteten Schlüssel für eine dauerhafte Funktion konfiguriert. 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 Kunden verwalteten Schlüssel durch`GenerateDataKey`, um zu überprüfen, ob Lambda aufgrund der Schlüsselrichtlinie Datenschlüssel für den Verschlüsselungskontext dieser Funktion ableiten kann. Der Probelauf führt keine kryptografischen Arbeiten 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 Lambda auch einen Probelauf für Ihren vom Kunden verwalteten Schlüssel `Decrypt` durch, um zu überprüfen, ob Lambda gemäß der Schlüsselrichtlinie Daten für den Verschlüsselungskontext dieser Funktion entschlüsseln kann. Der Probelauf wird 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 den `KMSKeyArn` Eingang setzen oder ändern, ruft Lambda auf`DurableConfig`, `DescribeKey` um zu bestätigen, dass der Schlüssel symmetrisch und aktiviert ist, bevor die Änderung akzeptiert wird. Im Gegensatz zu den `GenerateDataKey` `Decrypt` ND-Sonden handelt es sich um einen echten Anruf, nicht um einen 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 Themen zur Verschlüsselung
<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 der Lambda-ZIP-Bereitstellungspakete ](encrypt-zip-package.md)
+ [Sicherheitsmodell für Lambda SnapStart ](snapstart-security.md)
+ [Dauerhafte Lambda-Funktionen konfigurieren](durable-configuration.md)