

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.

# Verwenden Sie die Aktionen AWS FIS aws:lambda:function
<a name="use-lambda-actions"></a>

Sie können die Aktionen **aws:lambda:function** verwenden, um Fehler in Aufrufe Ihrer Funktionen einzufügen. AWS Lambda 

Diese Aktionen verwenden eine verwaltete Erweiterung, um Fehler einzufügen. AWS FIS Um **aws:lambda:function** actions zu verwenden, müssen Sie die Erweiterung als Ebene an Ihre Lambda-Funktionen anhängen und einen Amazon S3 S3-Bucket für die Kommunikation zwischen und der Erweiterung konfigurieren. AWS FIS 

Wenn Sie ein AWS FIS Experiment ausführen, das auf **aws:lambda:function** abzielt, AWS FIS liest die Amazon S3 S3-Konfiguration aus Ihrer Lambda-Funktion und schreibt Informationen zur Fehlerinjektion an den angegebenen Amazon S3 S3-Speicherort, wie in der folgenden Abbildung dargestellt.

![\[Diagramm, das die Konfiguration der AWS Fault Injection Service Lambda-Erweiterung zeigt.\]](http://docs.aws.amazon.com/de_de/fis/latest/userguide/images/Serverless-config-distro-3.png)


## Aktionen
<a name="supported-lambda-actions"></a>
+ [aws:lambda:invocation-add-delay](fis-actions-reference.md#invocation-add-delay)
+ [aws:lambda:invocation-error](fis-actions-reference.md#invocation-error)
+ [aws:lambda:invocation-http-integration-response](fis-actions-reference.md#invocation-http-integration-response)

## Einschränkungen
<a name="lambda-limitations"></a>
+ Die AWS FIS Lambda-Erweiterung kann nicht mit Funktionen verwendet werden, die Antwort-Streaming verwenden. Selbst wenn keine Fehler auftreten, unterdrückt die AWS FIS Lambda-Erweiterung Streaming-Konfigurationen. Weitere Informationen finden Sie im *AWS Lambda Benutzerhandbuch* unter [Antwortstreaming für Lambda-Funktionen](https://docs.aws.amazon.com/lambda/latest/dg/configuration-response-streaming.html).

## Voraussetzungen
<a name="lambda-prerequisites"></a>

Stellen Sie vor der Verwendung von AWS FIS Lambda-Aktionen sicher, dass Sie diese einmaligen Aufgaben abgeschlossen haben:
+ **Erstellen Sie einen Amazon S3 S3-Bucket in der Region, von der aus Sie ein Experiment starten möchten**. Sie können einen einzelnen Amazon S3 S3-Bucket für mehrere Experimente verwenden und den Bucket von mehreren AWS Konten gemeinsam nutzen. Sie müssen jedoch für jedes Bucket einen eigenen Bucket haben AWS-Region.
+ **Erstellen Sie eine IAM-Richtlinie, um der Lambda-Erweiterung Lesezugriff auf den Amazon S3 S3-Bucket zu gewähren**. `my-config-distribution-bucket` Ersetzen Sie ihn in der folgenden Vorlage durch den Namen des Amazon S3 S3-Buckets, den Sie oben erstellt haben, und `FisConfigs` durch den Namen eines Ordners in Ihrem Amazon S3 S3-Bucket, den Sie verwenden möchten.

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowListingConfigLocation",
            "Effect": "Allow",
            "Action": ["s3:ListBucket"],
            "Resource": ["arn:aws:s3:::my-config-distribution-bucket"],
            "Condition": {
                "StringLike": {
                    "s3:prefix": ["FisConfigs/*"]
                }
            }
        },
        {
            "Sid": "AllowReadingObjectFromConfigLocation",
            "Effect": "Allow",
            "Action": "s3:GetObject",
            "Resource": ["arn:aws:s3:::my-config-distribution-bucket/FisConfigs/*"]
        }
    ]
  }
  ```

------
+ **Erstellen Sie eine IAM-Richtlinie, um Schreibzugriff für das AWS FIS Experiment auf den Amazon S3 S3-Bucket zu gewähren**. `my-config-distribution-bucket` Ersetzen Sie ihn in der folgenden Vorlage durch den Namen des Amazon S3 S3-Buckets, den Sie oben erstellt haben, und `FisConfigs` durch den Namen eines Ordners in Ihrem Amazon S3 S3-Bucket, den Sie verwenden möchten.

------
#### [ JSON ]

****  

  ```
  {
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowFisToWriteAndDeleteFaultConfigurations",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:DeleteObject"
            ],
            "Resource": "arn:aws:s3:::my-config-distribution-bucket/FisConfigs/*"
        },
        {
            "Sid": "AllowFisToInspectLambdaFunctions",
            "Effect": "Allow",
            "Action": [
                "lambda:GetFunction"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowFisToDoTagLookups",
            "Effect": "Allow",
            "Action": [
                "tag:GetResources"
            ],
            "Resource": "*"
        }
    ]
  }
  ```

------

## Konfigurieren von Lambda-Funktionen
<a name="configure-lambda-functions"></a>

Gehen Sie für jede Lambda-Funktion, auf die Sie Einfluss nehmen möchten, wie folgt vor:

1. Hängen Sie die oben erstellte Amazon S3 S3-Lesezugriffsrichtlinie an die Lambda-Funktion an.

1. Hängen Sie die AWS FIS Erweiterung als Ebene an die Funktion an. Weitere Informationen zur Ebene finden Sie ARNs unter[Verfügbare Versionen der AWS FIS Erweiterung für Lambda](actions-lambda-extension-arns.md). 

1. Setzen Sie die `AWS_FIS_CONFIGURATION_LOCATION` Variable beispielsweise auf den ARN des Amazon S3 S3-Konfigurationsordners`arn:aws:s3:::my-config-distribution-bucket/FisConfigs/`.

1. Setzen Sie die Variable `AWS_LAMBDA_EXEC_WRAPPER` auf `/opt/aws-fis/bootstrap`.

## Konfigurieren Sie ein AWS FIS Experiment
<a name="configure-fis-experiment-lambda-actions"></a>

Bevor Sie Ihr Experiment ausführen, stellen Sie sicher, dass Sie die Amazon S3 S3-Schreibzugriffsrichtlinie, die Sie in den Voraussetzungen erstellt haben, an die Experimentrollen angehängt haben, die AWS FIS Lambda-Aktionen verwenden werden. Weitere Informationen zur Einrichtung eines AWS FIS Experiments finden Sie unter[Verwaltung von AWS FIS-ExperimentvorlagenVerwaltung Ihrer AWS FIS-Experimente](experiments.md).

## Protokollierung
<a name="lambda-actions-logging"></a>

Die AWS FIS Lambda-Erweiterung schreibt Protokolle in die Konsole und CloudWatch protokolliert. Die Protokollierung kann mithilfe der `AWS_FIS_LOG_LEVEL` Variablen konfiguriert werden. Unterstützte Werte sind `INFO`, `WARN` und `ERROR`. Protokolle werden in dem für Ihre Lambda-Funktion konfigurierten Protokollformat geschrieben.

Das Folgende ist ein Beispiel für ein Protokoll im Textformat:

```
2024-08-09T18:51:38.599984Z INFO AWS FIS EXTENSION - extension enabled 1.0.1
```

Im Folgenden finden Sie ein Beispiel für ein Protokoll im JSON-Format:

```
{
  "timestamp": "2024-10-08T17:15:36.953905Z",
  "level": "INFO",
  "fields": {
    "message": "AWS FIS EXTENSION - adding 5000 milliseconds of latency to function invocation",
    "requestId":"0608bf70-908f-4a17-bbfe-3782cd783d8b"
  }
}
```

Die ausgegebenen Protokolle können mit CloudWatch Amazon-Metrikfiltern verwendet werden, um benutzerdefinierte Metriken zu generieren. Weitere Informationen zu Metrikfiltern finden Sie unter [Metriken aus Protokollereignissen mithilfe von Filtern erstellen](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/MonitoringLogData.html) im *Amazon CloudWatch Logs-Benutzerhandbuch*.

### Verwenden des CloudWatch eingebetteten metrischen Formats (EMF)
<a name="lambda-actions-emf-metrics"></a>

Sie können die AWS FIS Lambda-Erweiterung so konfigurieren, dass sie EMF-Protokolle ausgibt, indem Sie die `AWS_FIS_EXTENSION_METRICS` Variable auf setzen. `all` Standardmäßig gibt die Erweiterung keine EMF-Protokolle aus und `AWS_FIS_EXTENSION_METRICS` ist standardmäßig auf. `none` EMF-Protokolle werden in der `aws-fis-extension namespace` auf der Konsole veröffentlicht. CloudWatch 

Innerhalb des `aws-fis-extension` Namespace können Sie bestimmte Metriken auswählen, die in einem Diagramm angezeigt werden sollen. Das folgende Beispiel zeigt einige der verfügbaren Metriken im `aws-fis-extension` Namespace.

![\[Beispieldiagramm der EMF-Ausgabemetriken im CloudWatch Dashboard.\]](http://docs.aws.amazon.com/de_de/fis/latest/userguide/images/emf-metrics-graph.png)


## Fortschrittliche Themen
<a name="lambda-actions-advanced-topics"></a>

Dieser Abschnitt enthält zusätzliche Informationen zur AWS FIS Funktionsweise der Lambda-Erweiterung und zu speziellen Anwendungsfällen.

**Topics**
+ [Grundlegendes zu Umfragen](#understanding-polling)
+ [Parallelität verstehen](#understanding-concurrency)
+ [Den Prozentsatz der Aufrufe verstehen](#understanding-invocation-percentage)
+ [Besondere Überlegungen für SnapStart](#considerations-for-snapshot)
+ [Besondere Überlegungen für schnelle, seltene Funktionen](#considerations-for-fast-infrequent-functions)
+ [Konfiguration mehrerer Erweiterungen mit dem Lambda Runtime API-Proxy](#configuring-multiple-extensions)
+ [Verwendung AWS FIS mit Container-Laufzeiten](#container-runtimes)
+ [AWS FIS Lambda-Umgebungsvariablen](#fis-extension-environment-variables)

### Grundlegendes zu Umfragen
<a name="understanding-polling"></a>

Möglicherweise stellen Sie eine Anlaufzeit von bis zu 60 Sekunden fest, bevor sich Fehler auf alle Aufrufe auswirken. Dies liegt daran, dass die Lambda-Erweiterung selten nach Konfigurationsinformationen fragt, während sie auf den Start eines Experiments wartet. Sie können das Abfrageintervall anpassen, indem Sie die `AWS_FIS_SLOW_POLL_INTERVAL_SECONDS` Umgebungsvariable festlegen (Standard 60s). Bei einem niedrigeren Wert werden häufiger Abfragen durchgeführt, dies hat jedoch größere Auswirkungen auf die Leistung und die Kosten. Möglicherweise stellen Sie auch fest, dass der Fehler bis zu 20 Sekunden heruntergefahren wird. Das liegt daran, dass die Erweiterung während der Ausführung von Experimenten häufiger Abfragen durchführt.

### Parallelität verstehen
<a name="understanding-concurrency"></a>

Sie können auf dieselben Lambda-Funktionen mit mehreren Aktionen gleichzeitig abzielen. Wenn sich die Aktionen alle voneinander unterscheiden, werden alle Aktionen angewendet. Sie können beispielsweise eine anfängliche Verzögerung hinzufügen, bevor ein Fehler zurückgegeben wird. Wenn zwei identische oder widersprüchliche Aktionen auf dieselbe Funktion angewendet werden, wird nur die Aktion mit dem frühesten Startdatum angewendet. 

 **Die folgende Abbildung zeigt, dass sich zwei widersprüchliche Aktionen, **aws:lambda:invocation-error und aws:lambda:**, überschneiden. invocation-http-integration-response** Anfänglich **wird** aws:lambda:invocation-error um 11:38 Uhr hochgefahren und läuft 2 Minuten lang. Dann invocation-http-integration-response versucht **aws:lambda:**, um 11:39 Uhr zu starten, wird aber erst um 11:40 Uhr wirksam, nachdem die erste Aktion abgeschlossen ist. Um das Timing des Experiments beizubehalten, wird **aws:lambda: invocation-http-integration-response** immer noch zur ursprünglich vorgesehenen Zeit von 11:41 Uhr beendet. 

![\[Graphs showing error and response code percentages for x86 and arm during overlapping actions.\]](http://docs.aws.amazon.com/de_de/fis/latest/userguide/images/understanding-concurrency.png)


### Den Prozentsatz der Aufrufe verstehen
<a name="understanding-invocation-percentage"></a>

Die AWS Fault Injection Service Lambda-Aktionen verwenden ein **aws:lambda:function** -Ziel, mit dem Sie eine oder mehrere Funktionen auswählen können. AWS Lambda ARNs Mithilfe dieser ARNs können die AWS Fault Injection Service Lambda-Aktionen bei jedem Aufruf der ausgewählten Lambda-Funktion Fehler auslösen. Damit Sie Fehler nur bei einem Bruchteil der Aufrufe einfügen können, können Sie für jede Aktion einen `invocationPercentage` Parameter mit Werten von 0 bis 100 angeben. Mithilfe des `invocationPercentage` Parameters können Sie sicherstellen, dass Aktionen auch bei Aufruf-Prozentsätzen unter 100% gleichzeitig ausgeführt werden. 

### Besondere Überlegungen für SnapStart
<a name="considerations-for-snapshot"></a>

AWS Lambda Bei SnapStart aktivierten Funktionen ist die Wahrscheinlichkeit höher, dass sie die gesamte Zeit warten, `AWS_FIS_SLOW_POLL_INTERVAL_SECONDS` bis sie die erste Fehlerkonfiguration aufnehmen, selbst wenn bereits ein Experiment läuft. Dies liegt daran, dass Lambda einen einzelnen Snapshot als Ausgangszustand für mehrere Ausführungsumgebungen SnapStart verwendet und temporären Speicher beibehält. Für die AWS Fault Injection Service Lambda-Erweiterung wird die Abfragefrequenz beibehalten und die anfängliche Konfigurationsprüfung bei der Initialisierung der Ausführungsumgebung übersprungen. Weitere Informationen zu Lambda SnapStart finden Sie SnapStart im *AWS Lambda Benutzerhandbuch* unter [Verbesserung der Startleistung mit Lambda](https://docs.aws.amazon.com/lambda/latest/dg/snapstart.html). 

### Besondere Überlegungen für schnelle, seltene Funktionen
<a name="considerations-for-fast-infrequent-functions"></a>

Wenn Ihre Lambda-Funktion weniger als die durchschnittliche Abfragedauer von 70 Millisekunden läuft, benötigt der Abfrage-Thread möglicherweise mehrere Aufrufe, um Fehlerkonfigurationen abzurufen. Wenn die Funktion selten ausgeführt wird, z. B. einmal alle 15 Minuten, wird die Abfrage nie abgeschlossen. Um sicherzustellen, dass der Abfragethread abgeschlossen werden kann, legen Sie den `AWS_FIS_POLL_MAX_WAIT_MILLISECONDS` Parameter fest. Die Erweiterung wartet bis zu der Dauer, die Sie für das Ende einer Umfrage während des Fluges festgelegt haben, bevor sie die Funktion startet. Beachten Sie, dass dadurch die in Rechnung gestellte Funktionsdauer verlängert wird und es bei einigen Aufrufen zu einer zusätzlichen Verzögerung kommt.

### Konfiguration mehrerer Erweiterungen mit dem Lambda Runtime API-Proxy
<a name="configuring-multiple-extensions"></a>

Die Lambda-Erweiterung verwendet den AWS Lambda Runtime-API-Proxy, um Funktionsaufrufen abzufangen, bevor sie die Laufzeit erreichen. Dazu wird der Runtime ein Proxy für die AWS Lambda Runtime-API zur Verfügung gestellt und dessen Position in der Variablen bekannt gegeben. `AWS_LAMBDA_RUNTIME_API` 

Das folgende Diagramm zeigt die Konfiguration für eine einzelne Erweiterung, die den Lambda Runtime API-Proxy verwendet:

![\[Die Standardkonfiguration.\]](http://docs.aws.amazon.com/de_de/fis/latest/userguide/images/Proxy-1.png)


Um die AWS FIS Lambda-Erweiterung mit einer anderen Erweiterung zu verwenden, die das AWS Lambda Runtime-API-Proxymuster verwendet, müssen Sie die Proxys mithilfe eines benutzerdefinierten Bootstrap-Skripts verketten. Die AWS FIS Lambda-Erweiterung akzeptiert die folgenden Umgebungsvariablen:
+ `AWS_FIS_PROXY_RUNTIME_API_ENDPOINT`‐ Akzeptiert eine Zeichenfolge in der Form, die die lokale IP und den Listener-Port für die AWS Lambda Runtime-API `127.0.0.1:9876` darstellt. Dies kann der ursprüngliche Wert `AWS_LAMBDA_RUNTIME_API` oder der Standort eines anderen Proxys sein.
+ `AWS_FIS_PROXY_LISTENER_PORT`‐ Akzeptiert standardmäßig eine Portnummer, auf der die AWS FIS Erweiterung ihren eigenen Proxy starten soll`9100`.

Mit diesen Einstellungen können Sie die AWS FIS Erweiterung mithilfe des Lambda Runtime API-Proxys in zwei verschiedenen Reihenfolgen mit einer anderen Erweiterung verketten.

![\[Zwei verkettete Erweiterungen, die den Lambda-API-Proxy verwenden.\]](http://docs.aws.amazon.com/de_de/fis/latest/userguide/images/lambda-runtime-api-proxy.png)


Weitere Informationen zum AWS Lambda Runtime-API-Proxy finden Sie unter [Verbesserung der Runtime-Sicherheit und -Governance mit der AWS Lambda Runtime-API-Proxyerweiterung](https://aws.amazon.com/blogs/compute/enhancing-runtime-security-and-governance-with-the-aws-lambda-runtime-api-proxy-extension/) und [Verwenden der Lambda-Laufzeit-API für benutzerdefinierte Laufzeiten](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-api.html) im *AWS Lambda Benutzerhandbuch*.

### Verwendung AWS FIS mit Container-Laufzeiten
<a name="container-runtimes"></a>

Für AWS Lambda Funktionen, die Container-Images verwenden, die die `AWS_LAMBDA_RUNTIME_API` Umgebungsvariable akzeptieren, können Sie die AWS FIS Lambda-Erweiterung in Ihr Container-Image packen, indem Sie die folgenden Schritte ausführen:

1. Ermitteln Sie den ARN der Ebene, aus der die Erweiterung extrahiert werden soll. Weitere Informationen zum Auffinden des ARN finden Sie unter[Konfigurieren von Lambda-Funktionen](#configure-lambda-functions).

1. Verwenden Sie die AWS Command Line Interface (CLI), um Details zur Erweiterung anzufordern`aws lambda get-layer-version-by-arn --arn fis-extension-arn`. Die Antwort enthält ein `Location` Feld mit einer vorsignierten URL, von der Sie die FIS-Erweiterung als ZIP-Datei herunterladen können.

1. Entpacken Sie den Inhalt der Erweiterung in Ihr `/opt` Docker-Dateisystem. Im Folgenden finden Sie ein Beispiel für ein Dockerfile, das auf der NodeJS Lambda-Laufzeit basiert:

   ```
   # extension installation #
   FROM amazon/aws-lambda-nodejs:12 AS builder
   COPY extension.zip extension.zip
   RUN yum install -y unzip
   RUN mkdir -p /opt
   RUN unzip extension.zip -d /opt
   RUN rm -f extension.zip
   FROM amazon/aws-lambda-nodejs:12
   WORKDIR /opt
   COPY --from=builder /opt .
   # extension installation finished #
   # JS example. Modify as required by your runtime
   WORKDIR ${LAMBDA_TASK_ROOT}
   COPY index.js package.json .
   RUN npm install
   CMD [ "index.handler" ]
   ```

Weitere Informationen zu Container-Images finden Sie im *AWS Lambda Benutzerhandbuch* unter [Erstellen einer Lambda-Funktion mithilfe eines Container-Images](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html).

### AWS FIS Lambda-Umgebungsvariablen
<a name="fis-extension-environment-variables"></a>

Im Folgenden finden Sie eine Liste von Umgebungsvariablen für die AWS FIS Lambda-Erweiterung
+ `AWS_FIS_CONFIGURATION_LOCATION`‐ Erforderlich. Ort, an AWS FIS den aktive Fehlerkonfigurationen geschrieben und die Erweiterung Fehlerkonfigurationen liest. Die Speicherorte sollten im Amazon S3 S3-ARN-Format vorliegen, einschließlich eines Buckets und eines Pfads. Beispiel, `arn:aws:s3:::my-fis-config-bucket/FisConfigs/`.
+ `AWS_LAMBDA_EXEC_WRAPPER`‐ Erforderlich. Speicherort des AWS Lambda [Wrapper-Skripts](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-modify.html#runtime-wrapper), das zur Konfiguration der AWS FIS Lambda-Erweiterung verwendet wurde. Dies sollte auf das `/opt/aws-fis/bootstrap` Skript gesetzt werden, das in der Erweiterung enthalten ist.
+ `AWS_FIS_LOG_LEVEL`‐ Fakultativ. Protokollebene für Nachrichten, die von der AWS FIS Lambda-Erweiterung ausgegeben werden. Unterstützte Werte sind `INFO`, `WARN` und `ERROR`. Wenn nicht festgelegt, wird die AWS FIS Erweiterung standardmäßig auf `INFO` gesetzt.
+ `AWS_FIS_EXTENSION_METRICS`‐ Fakultativ. Mögliche Werte sind `all` und `none`. Wenn diese Option aktiviert `all` ist, werden EMF-Metriken unter dem `aws-fis-extension namespace` ausgegeben.
+ `AWS_FIS_SLOW_POLL_INTERVAL_SECONDS`‐ Fakultativ. Wenn diese Option gesetzt ist, wird das Abfrageintervall (in Sekunden) außer Kraft gesetzt, solange die Erweiterung keine Fehler einschleust und darauf wartet, dass eine Fehlerkonfiguration zum Konfigurationsspeicherort hinzugefügt wird. Standardeinstellung: `60`.
+ `AWS_FIS_PROXY_RUNTIME_API_ENDPOINT`‐ Fakultativ. Falls gesetzt, wird der Wert von überschrieben`AWS_LAMBDA_RUNTIME_API`, um zu definieren, wo die AWS FIS Erweiterung mit der AWS Lambda Runtime-API interagiert, um den Funktionsaufruf zu steuern. Erwartet IP:PORT, zum Beispiel. `127.0.0.1:9000` Weitere Informationen dazu finden Sie im `AWS_LAMBDA_RUNTIME_API` *AWS Lambda Benutzerhandbuch* [unter Verwenden der Lambda-Laufzeit-API für benutzerdefinierte Laufzeiten](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-api.html).
+ `AWS_FIS_PROXY_LISTENER_PORT`‐ Fakultativ. Definiert den Port, auf dem die AWS FIS Lambda-Erweiterung einen AWS Lambda Runtime-API-Proxy verfügbar macht, der von einer anderen Erweiterung oder der Laufzeit verwendet werden kann. Standardeinstellung: `9100`.
+ `AWS_FIS_POLL_MAX_WAIT_MILLISECONDS`‐ Fakultativ. Wenn diese Variable auf einen Wert ungleich Null gesetzt ist, definiert sie, wie viele Millisekunden die Erweiterung wartet, bis eine asynchrone Abfrage während des Fluges abgeschlossen ist, bevor sie Fehlerkonfigurationen auswertet und den Aufruf der Runtime startet. Standardeinstellung: `0`.