

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Utilice las acciones AWS FIS aws:lambda:function
<a name="use-lambda-actions"></a>

Puede utilizar las acciones **aws:lambda:function para introducir errores en las invocaciones de sus funciones**. AWS Lambda 

Estas acciones utilizan una extensión gestionada para introducir errores. AWS FIS Para usar las acciones de **aws:lambda:function**, tendrá que adjuntar la extensión como una capa a sus funciones de Lambda y configurar un bucket de Amazon S3 para comunicarse entre la extensión y la extensión. AWS FIS 

Cuando ejecuta un AWS FIS experimento dirigido a **aws:lambda:function, lee** la configuración de AWS FIS Amazon S3 de su función Lambda y escribe la información sobre la inyección de errores en la ubicación de Amazon S3 especificada, como se muestra en el siguiente diagrama.

![\[Diagrama que muestra la configuración de la AWS Fault Injection Service extensión Lambda.\]](http://docs.aws.amazon.com/es_es/fis/latest/userguide/images/Serverless-config-distro-3.png)


## Acciones
<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)

## Limitaciones
<a name="lambda-limitations"></a>
+ La extensión AWS FIS Lambda no se puede utilizar con funciones que utilizan la transmisión de respuestas. Incluso cuando no se aplique ningún error, la extensión AWS FIS Lambda suprimirá las configuraciones de streaming. Para obtener más información, consulte [Transmisión de respuestas para funciones Lambda](https://docs.aws.amazon.com/lambda/latest/dg/configuration-response-streaming.html) en la guía del *AWS Lambda usuario*.

## Requisitos previos
<a name="lambda-prerequisites"></a>

Antes de usar las acciones de AWS FIS Lambda, asegúrese de haber completado estas tareas únicas:
+ **Cree un bucket de Amazon S3 en la región desde la que planea iniciar un experimento** ‐ Puede utilizar un único bucket de Amazon S3 para varios experimentos y compartir el bucket entre varias AWS cuentas. Sin embargo, debe tener un depósito independiente para cada uno Región de AWS.
+ **Cree una política de IAM para conceder acceso de lectura a la extensión Lambda al bucket de Amazon S3** ‐ En la siguiente plantilla, `my-config-distribution-bucket` sustitúyalo por el nombre del bucket de Amazon S3 que creó anteriormente `FisConfigs` y por el nombre de la carpeta del bucket de Amazon S3 que desee utilizar.

------
#### [ 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/*"]
        }
    ]
  }
  ```

------
+ **Cree una política de IAM para conceder acceso de escritura para el AWS FIS experimento al bucket de Amazon S3** ‐ En la siguiente plantilla, `my-config-distribution-bucket` sustitúyalo por el nombre del bucket de Amazon S3 que creó anteriormente y `FisConfigs` por el nombre de la carpeta del bucket de Amazon S3 que desee usar.

------
#### [ 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": "*"
        }
    ]
  }
  ```

------

## Configuración de las funciones de Lambda
<a name="configure-lambda-functions"></a>

Siga los pasos que se indican a continuación para cada función de Lambda en la que desee influir:

1. Adjunte la política de acceso de lectura de Amazon S3 creada anteriormente a la función Lambda.

1. Adjunte la AWS FIS extensión como una capa a la función. Para obtener más información sobre la capa ARNs, consulte[Versiones disponibles de la AWS FIS extensión para Lambda](actions-lambda-extension-arns.md). 

1. Establezca la `AWS_FIS_CONFIGURATION_LOCATION` variable en el ARN de la carpeta de configuración de Amazon S3, por ejemplo. `arn:aws:s3:::my-config-distribution-bucket/FisConfigs/`

1. Establezca la variable `AWS_LAMBDA_EXEC_WRAPPER` en `/opt/aws-fis/bootstrap`.

## Configure un experimento AWS FIS
<a name="configure-fis-experiment-lambda-actions"></a>

Antes de ejecutar el experimento, asegúrese de haber adjuntado la política de acceso de escritura de Amazon S3 que creó en los requisitos previos a las funciones del experimento que utilizarán acciones de AWS FIS Lambda. Para obtener más información sobre cómo configurar un AWS FIS experimento, consulte. [Gestión de AWS plantillas de experimentos FISGestionar sus experimentos de AWS FIS](experiments.md)

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

La extensión AWS FIS Lambda escribe registros y CloudWatch registros en la consola. El registro se puede configurar mediante la `AWS_FIS_LOG_LEVEL` variable. Los valores admitidos son `INFO`, `WARN` y `ERROR`. Los registros se escribirán en el formato de registro configurado para la función Lambda.

El siguiente es un ejemplo de registro en formato de texto:

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

El siguiente es un ejemplo de registro en formato JSON:

```
{
  "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"
  }
}
```

Los registros emitidos se pueden usar con los filtros de CloudWatch métricas de Amazon para generar métricas personalizadas. Para obtener más información sobre los filtros de métricas, consulte [Creación de métricas a partir de eventos de registro mediante filtros](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/MonitoringLogData.html) en la *guía del usuario de Amazon CloudWatch Logs*.

### Uso del formato métrico CloudWatch integrado (EMF)
<a name="lambda-actions-emf-metrics"></a>

Puede configurar la extensión AWS FIS Lambda para que emita registros de EMF configurando la `AWS_FIS_EXTENSION_METRICS` variable en. `all` De forma predeterminada, la extensión no emite registros de EMF y `AWS_FIS_EXTENSION_METRICS` su valor predeterminado es. `none` Los registros de EMF se publican `aws-fis-extension namespace` en la consola. CloudWatch 

Dentro del espacio de `aws-fis-extension` nombres, puede seleccionar determinadas métricas para que se muestren en un gráfico. El siguiente ejemplo muestra algunas de las métricas disponibles en el `aws-fis-extension` espacio de nombres.

![\[Ejemplo de gráfico de las métricas de EMF de salida en el panel de control. CloudWatch\]](http://docs.aws.amazon.com/es_es/fis/latest/userguide/images/emf-metrics-graph.png)


## Temas avanzados
<a name="lambda-actions-advanced-topics"></a>

En esta sección se proporciona información adicional sobre cómo AWS FIS funciona la extensión Lambda y casos de uso especiales.

**Topics**
+ [Entender las encuestas](#understanding-polling)
+ [Entender la simultaneidad](#understanding-concurrency)
+ [Entendiendo el porcentaje de invocación](#understanding-invocation-percentage)
+ [Consideraciones especiales para SnapStart](#considerations-for-snapshot)
+ [Consideraciones especiales para funciones rápidas e infrecuentes](#considerations-for-fast-infrequent-functions)
+ [Configuración de varias extensiones mediante el proxy de la API Lambda Runtime](#configuring-multiple-extensions)
+ [Utilización AWS FIS con tiempos de ejecución de contenedores](#container-runtimes)
+ [AWS FIS Variables de entorno Lambda](#fis-extension-environment-variables)

### Entender las encuestas
<a name="understanding-polling"></a>

Es posible que observe un período de aceleración de hasta 60 segundos antes de que los errores comiencen a afectar a todas las invocaciones. Esto se debe a que la extensión Lambda sondea la información de configuración con poca frecuencia mientras espera a que comience un experimento. Puede ajustar el intervalo de sondeo configurando la variable de `AWS_FIS_SLOW_POLL_INTERVAL_SECONDS` entorno (por defecto, 60s). Un valor más bajo generará sondeos con más frecuencia, pero tendrá un mayor impacto en el rendimiento y los costes. También es posible que observe un período de reducción de hasta 20 segundos después de que se haya detectado la avería. Esto se debe a que la extensión sondea con más frecuencia mientras se están realizando los experimentos.

### Entender la simultaneidad
<a name="understanding-concurrency"></a>

Puede apuntar a las mismas funciones de Lambda con varias acciones de forma simultánea. Si todas las acciones son diferentes entre sí, se aplicarán todas las acciones. Por ejemplo, puede añadir un retraso inicial antes de que se devuelva un error. Si se aplican dos acciones idénticas o contradictorias a la misma función, solo se aplicará la acción que tenga la fecha de inicio más temprana. 

 **En la siguiente figura se muestran dos acciones conflictivas, **aws:lambda:invocation-error y aws:lambda:**, que se superponen. invocation-http-integration-response** **Inicialmente, aws:lambda:invocation-error se activa a las 11:38 y dura 2 minutos.** A continuación, **aws:lambda: invocation-http-integration-response** intenta empezar a las 11:39, pero no entra en vigor hasta las 11:40 una vez finalizada la primera acción. Para mantener la sincronización del experimento, **aws:lambda: invocation-http-integration-response** sigue finalizando a las 11:41, la hora inicialmente prevista. 

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


### Entendiendo el porcentaje de invocación
<a name="understanding-invocation-percentage"></a>

Las acciones de AWS Fault Injection Service Lambda utilizan un objetivo **aws:lambda:function** que le permite seleccionar una o más funciones. AWS Lambda ARNs Al usarlos ARNs, las acciones de AWS Fault Injection Service Lambda pueden inyectar errores en cada invocación de la función Lambda seleccionada. Para poder introducir errores solo en una fracción de las invocaciones, cada acción permite especificar un `invocationPercentage` parámetro con valores de 0 a 100. Con el `invocationPercentage` parámetro, puede asegurarse de que las acciones sean simultáneas incluso con porcentajes de invocación inferiores al 100%. 

### Consideraciones especiales para SnapStart
<a name="considerations-for-snapshot"></a>

AWS Lambda Las funciones SnapStart activadas tendrán más probabilidades de esperar todo el tiempo `AWS_FIS_SLOW_POLL_INTERVAL_SECONDS` antes de detectar la primera configuración de error, incluso si ya se está realizando un experimento. Esto se debe a que Lambda SnapStart utiliza una sola instantánea como estado inicial para varios entornos de ejecución y conserva el almacenamiento temporal. Para la extensión AWS Fault Injection Service Lambda, mantendrá la frecuencia de sondeo y omitirá la comprobación de configuración inicial al inicializar el entorno de ejecución. *Para obtener más información sobre Lambda SnapStart, consulte [Mejora del rendimiento de arranque con Lambda SnapStart](https://docs.aws.amazon.com/lambda/latest/dg/snapstart.html) en la guía del usuario.AWS Lambda * 

### Consideraciones especiales para funciones rápidas e infrecuentes
<a name="considerations-for-fast-infrequent-functions"></a>

Si la función Lambda se ejecuta durante menos de la duración media del sondeo de 70 milisegundos, es posible que el hilo de sondeo necesite varias invocaciones para obtener configuraciones de error. Si la función se ejecuta con poca frecuencia, por ejemplo, una vez cada 15 minutos, el sondeo nunca se completará. Para garantizar que el hilo de sondeo pueda finalizar, defina el `AWS_FIS_POLL_MAX_WAIT_MILLISECONDS` parámetro. La extensión esperará hasta el tiempo que hayas establecido para que finalice una encuesta en vuelo antes de iniciar la función. Ten en cuenta que esto aumentará la duración de la función facturada y provocará un retraso adicional en algunas invocaciones.

### Configuración de varias extensiones mediante el proxy de la API Lambda Runtime
<a name="configuring-multiple-extensions"></a>

La extensión Lambda usa el proxy de la API de AWS Lambda tiempo de ejecución para interceptar las invocaciones de funciones antes de que lleguen al tiempo de ejecución. Para ello, expone un proxy de la API de AWS Lambda tiempo de ejecución en el motor de ejecución y anuncia su ubicación en la variable. `AWS_LAMBDA_RUNTIME_API` 

El siguiente diagrama muestra la configuración de una sola extensión mediante el proxy de la API Lambda Runtime:

![\[La configuración predeterminada.\]](http://docs.aws.amazon.com/es_es/fis/latest/userguide/images/Proxy-1.png)


Para usar la extensión AWS FIS Lambda con otra extensión que utilice el patrón de proxy AWS Lambda de la API Runtime, necesitará encadenar los proxies mediante un script de arranque personalizado. La extensión AWS FIS Lambda acepta las siguientes variables de entorno:
+ `AWS_FIS_PROXY_RUNTIME_API_ENDPOINT`‐ Toma una cadena con el formato `127.0.0.1:9876` que representa la IP local y el puerto de escucha de la API AWS Lambda Runtime. Puede ser el valor original `AWS_LAMBDA_RUNTIME_API` o la ubicación de otro proxy.
+ `AWS_FIS_PROXY_LISTENER_PORT`‐ De forma predeterminada, toma un número de puerto en el que la AWS FIS extensión debe iniciar su propio proxy`9100`.

Con esta configuración, puede encadenar la AWS FIS extensión con otra extensión mediante el proxy de la API Lambda Runtime en dos órdenes diferentes.

![\[Dos extensiones encadenadas que utilizan el proxy de la API Lambda.\]](http://docs.aws.amazon.com/es_es/fis/latest/userguide/images/lambda-runtime-api-proxy.png)


*Para obtener más información sobre el proxy de la API AWS Lambda de tiempo de ejecución, consulte [Mejora de la seguridad y la gobernanza del tiempo de ejecución con la extensión de proxy de la API de tiempo de AWS Lambda ejecución](https://aws.amazon.com/blogs/compute/enhancing-runtime-security-and-governance-with-the-aws-lambda-runtime-api-proxy-extension/) de [Lambda y Uso de la API de tiempo de ejecución de Lambda para tiempos de ejecución personalizados](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-api.html) en la AWS Lambda guía del usuario.*

### Utilización AWS FIS con tiempos de ejecución de contenedores
<a name="container-runtimes"></a>

Para AWS Lambda las funciones que utilizan imágenes de contenedor que aceptan la variable de `AWS_LAMBDA_RUNTIME_API` entorno, puede empaquetar la extensión AWS FIS Lambda en la imagen de contenedor siguiendo los pasos que se indican a continuación:

1. Determine el ARN de la capa de la que se va a extraer la extensión. Para obtener más información sobre cómo encontrar el ARN, consulte. [Configuración de las funciones de Lambda](#configure-lambda-functions)

1. Utilice la AWS Command Line Interface (CLI) para solicitar detalles sobre la extensión`aws lambda get-layer-version-by-arn --arn fis-extension-arn`. La respuesta contendrá un `Location` campo con una URL prefirmada desde la que podrá descargar la extensión FIS como un archivo ZIP.

1. Descomprime el contenido de la extensión en tu sistema `/opt` de archivos Docker. A continuación, se muestra un ejemplo de Dockerfile basado en el entorno de ejecución de Nodejs Lambda:

   ```
   # 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" ]
   ```

Para obtener más información sobre las imágenes de contenedores, consulte [Creación de una función Lambda mediante una imagen de contenedor](https://docs.aws.amazon.com/lambda/latest/dg/images-create.html) en la guía del *AWS Lambda usuario*.

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

La siguiente es una lista de variables de entorno para la extensión AWS FIS Lambda:
+ `AWS_FIS_CONFIGURATION_LOCATION`‐ Necesario. Ubicación donde AWS FIS se escribirán las configuraciones de fallas activas y la extensión leerá las configuraciones de fallas. Las ubicaciones deben estar en formato ARN de Amazon S3 e incluir un bucket y una ruta. Por ejemplo, `arn:aws:s3:::my-fis-config-bucket/FisConfigs/`.
+ `AWS_LAMBDA_EXEC_WRAPPER`‐ Obligatorio. Ubicación del [script AWS Lambda contenedor](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-modify.html#runtime-wrapper) utilizado para configurar la extensión AWS FIS Lambda. Debe configurarse en el `/opt/aws-fis/bootstrap` script que se incluye con la extensión.
+ `AWS_FIS_LOG_LEVEL`‐ Opcional. Nivel de registro de los mensajes emitidos por la AWS FIS extensión Lambda. Los valores admitidos son `INFO`, `WARN` y `ERROR`. Si no se establece, la AWS FIS extensión se establecerá de forma predeterminada en`INFO`.
+ `AWS_FIS_EXTENSION_METRICS`‐ Opcional. Los posibles valores son `all` y `none`. Si se establece en `all` la extensión, emitirá métricas de EMF en el`aws-fis-extension namespace`.
+ `AWS_FIS_SLOW_POLL_INTERVAL_SECONDS`‐ Opcional. Si se establece, anulará el intervalo de sondeo (en segundos) mientras la extensión no esté introduciendo errores y esperando a que se añada una configuración de errores a la ubicación de configuración. El valor predeterminado es `60`.
+ `AWS_FIS_PROXY_RUNTIME_API_ENDPOINT`‐ Opcional. Si se establece, anulará el valor de `AWS_LAMBDA_RUNTIME_API` para definir dónde interactúa la AWS FIS extensión con la API en tiempo de AWS Lambda ejecución para controlar la invocación de funciones. Espera IP:PORT, por ejemplo,. `127.0.0.1:9000` *Para obtener más información`AWS_LAMBDA_RUNTIME_API`, consulte [Uso de la API de tiempo de ejecución de Lambda para tiempos de ejecución personalizados](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-api.html) en la guía del AWS Lambda usuario.*
+ `AWS_FIS_PROXY_LISTENER_PORT`‐ Opcional. Define el puerto en el que la extensión AWS FIS Lambda expone un proxy de API en AWS Lambda tiempo de ejecución que puede ser utilizado por otra extensión o por el tiempo de ejecución. El valor predeterminado es `9100`.
+ `AWS_FIS_POLL_MAX_WAIT_MILLISECONDS`‐ Opcional. Si se establece en un valor distinto de cero, esta variable define el número de milisegundos que la extensión esperará a que finalice una encuesta asíncrona en curso antes de evaluar las configuraciones de los errores e iniciar la invocación del tiempo de ejecución. El valor predeterminado es `0`.