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.
Use la AWS FIS aws:lambda:function actions
Puede utilizar las acciones aws:lambda:function para inyectar errores en las invocaciones de sus funciones. AWS Lambda
Estas acciones utilizan una extensión gestionada para inyectar 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 que se comunique entre la extensión y la extensión. AWS FIS
Cuando ejecuta un AWS FIS experimento orientado a aws:lambda:function, AWS FIS lee la configuración de Amazon S3 de su función de 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.
Acciones
Limitaciones
La extensión AWS FIS Lambda no se puede usar 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 transmisión. Para obtener más información, consulte Response Streaming para funciones de Lambda en la guía del AWS Lambda usuario.
Requisitos previos
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 usar un solo bucket de Amazon S3 para varios experimentos y compartir el bucket entre varias AWS cuentas. Sin embargo, debe tener un bucket independiente para cada uno Región de AWS.
Cree una política de IAM para conceder acceso de lectura para la extensión Lambda al bucket de Amazon S3 ‐ En la siguiente plantilla,
my-config-distribution-bucketsustitúyalo por el nombre del bucket de Amazon S3 que creó anteriormente yFisConfigspor el nombre de la carpeta de su bucket de Amazon S3 que quiera usar.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-bucketsustitúyalo por el nombre del bucket de Amazon S3 que creó anteriormente yFisConfigspor el nombre de la carpeta de su bucket de Amazon S3 que quiera usar.
Configuración de las funciones de Lambda
Siga los pasos que se indican a continuación para cada función de Lambda a la que quiera afectar:
-
Adjunte la política de acceso de lectura de Amazon S3 creada anteriormente a la función Lambda.
-
Adjunte la AWS FIS extensión como una capa a la función. Para obtener más información sobre los ARN de las capas, consulteVersiones disponibles de AWS FIS extensión para Lambda.
-
Establezca la
AWS_FIS_CONFIGURATION_LOCATIONvariable en el ARN de la carpeta de configuración de Amazon S3, por ejemplo.arn:aws:s3:::my-config-distribution-bucket/FisConfigs/ -
Establezca la variable
AWS_LAMBDA_EXEC_WRAPPERen/opt/aws-fis/bootstrap.
Configure un AWS FIS Experimento
Antes de ejecutar el experimento, asegúrese de adjuntar la política de acceso de escritura de Amazon S3 que creó en los requisitos previos a las funciones del experimento que utilizarán las 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 FIS
Registro
La extensión AWS FIS Lambda escribe los registros en la consola y los CloudWatch registros. 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 de Lambda.
El siguiente es un ejemplo de un formato de texto de inicio de sesión:
2024-08-09T18:51:38.599984Z INFO AWS FIS EXTENSION - extension enabled 1.0.1
El siguiente es un ejemplo de un 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 CloudWatch métricos de Amazon para generar métricas personalizadas. Para obtener más información sobre los filtros de métricas, consulte Crear métricas a partir de eventos de registro mediante filtros en la guía del usuario de Amazon CloudWatch Logs.
Uso del formato métrico CloudWatch incorporado (EMF)
Puede configurar la extensión AWS FIS Lambda para que emita registros EMF estableciendo la AWS_FIS_EXTENSION_METRICS variable en. all De forma predeterminada, la extensión no emite registros de campos electromagnéticos yAWS_FIS_EXTENSION_METRICS, de forma predeterminada, es. none Los registros de EMF se publican aws-fis-extension namespace en la consola. CloudWatch
En el espacio de aws-fis-extension nombres, puede seleccionar determinadas métricas para mostrarlas en un gráfico. El siguiente ejemplo muestra algunas de las métricas disponibles en el espacio de aws-fis-extension nombres.
Temas avanzados
En esta sección se proporciona información adicional sobre cómo AWS FIS funciona con la extensión Lambda y sobre casos de uso especiales.
Temas
Entender las encuestas
Es posible que observes un período de hasta 60 segundos antes de que los errores empiecen a afectar a todas las invocaciones. Esto se debe a que la extensión Lambda busca 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 (60 segundos por defecto). Un valor más bajo sondeará con más frecuencia, pero tendrá un mayor impacto en el rendimiento y el costo. También es posible que observe un período de ralentizació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 realizan los experimentos.
Entender la concurrencia
Puede segmentar las mismas funciones de Lambda con varias acciones al mismo tiempo. Si las acciones son todas diferentes entre sí, se aplicarán todas las acciones. Por ejemplo, puede añadir un retraso inicial antes de devolver un error. Si se aplican dos acciones idénticas o contradictorias a la misma función, solo se aplicará la acción con la fecha de inicio más temprana.
La siguiente figura muestra dos acciones contradictorias, aws:lambda:invocation-error y aws:lambda:invocation-http-integration-response, que se superponen. Inicialmente, aws:lambda:invocation-error aumenta 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 el ritmo del experimento, aws:lambda:invocation-http-integration-response aún finaliza a las 11:41, a la hora prevista originalmente.
Entender el porcentaje de invocaciones
Las acciones de AWS Fault Injection Service Lambda utilizan un objetivo aws:lambda:function que permite seleccionar uno o más ARN de funciones. AWS Lambda Al usar estos ARN, las acciones de Lambda pueden inyectar errores en cada invocación de la función de AWS Fault Injection Service Lambda seleccionada. Para poder inyectar errores solo en una fracción de las invocaciones, cada acción permite especificar un invocationPercentage parámetro con valores del 0 al 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
AWS Lambda las funciones que SnapStart estén habilitadas tendrán más probabilidades de esperar todo el tiempo necesario AWS_FIS_SLOW_POLL_INTERVAL_SECONDS para detectar la primera configuración defectuosa, incluso si ya se está realizando un experimento. Esto se debe a que Lambda SnapStart usa una única instantánea como estado inicial para varios entornos de ejecución y conserva el almacenamiento temporal. En el caso de 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 Mejorar el rendimiento de inicio con Lambda SnapStart en la guía del usuario. AWS Lambda
Consideraciones especiales para funciones rápidas y poco frecuentes
Si la función de Lambda se ejecuta durante menos tiempo que la duración media de una encuesta, que es de 70 milisegundos, es posible que el subproceso de sondeo necesite varias invocaciones para obtener configuraciones erróneas. Si la función se ejecuta con poca frecuencia, por ejemplo, una vez cada 15 minutos, la encuesta nunca se completará. Para garantizar que el proceso 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 curso 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
La extensión Lambda usa el proxy de la API AWS Lambda Runtime para interceptar las invocaciones de funciones antes de que lleguen al tiempo de ejecución. Para ello, expone un proxy de la API AWS Lambda Runtime al 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 de ejecución de Lambda:
Para usar la extensión AWS FIS Lambda con otra extensión que utilice el patrón de proxy de la API AWS Lambda Runtime, tendrá que 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 formato127.0.0.1:9876que representa la IP local y el puerto de escucha de la API AWS Lambda Runtime. Puede ser el valor originalAWS_LAMBDA_RUNTIME_APIo 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 proxy9100.
Con esta configuración, puede encadenar la AWS FIS extensión con otra extensión utilizando el proxy de la API Lambda Runtime en dos órdenes diferentes.
Para obtener más información sobre el proxy de la API en tiempo de AWS Lambda ejecución, consulte Mejorar la seguridad y el control del tiempo de ejecución con la extensión de proxy AWS Lambda de la API en tiempo de ejecución
Utilización AWS FIS con tiempos de ejecución de contenedores
Para AWS Lambda las funciones que utilizan imágenes de contenedor que aceptan la variable de AWS_LAMBDA_RUNTIME_API entorno, puedes empaquetar la extensión AWS FIS Lambda en tu imagen de contenedor siguiendo los pasos que se indican a continuación:
Determine el ARN de la capa de la que desea extraer la extensión. Para obtener más información sobre cómo encontrar el ARN, consulte. Configuración de las funciones de Lambda
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á unLocationcampo con una URL prefirmada desde la que podrá descargar la extensión FIS como un archivo ZIP.Descomprime el contenido de la extensión en tu sistema
/optde archivos Docker. El siguiente es un ejemplo de Dockerfile basado en el tiempo 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 Crear una función de Lambda con una imagen de contenedor en la guía del usuario. AWS Lambda
AWS FIS Variables de entorno de Lambda
La siguiente es una lista de variables de entorno para la extensión AWS FIS Lambda
AWS_FIS_CONFIGURATION_LOCATION‐ Obligatorio. Ubicación en la que AWS FIS se escribirán las configuraciones de errores activas y la extensión se encargará de leer las configuraciones de errores. Las ubicaciones deben estar en formato ARN de Amazon S3, incluidos 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 utilizado para configurar la extensión AWS FIS Lambda. Debe configurarse en el/opt/aws-fis/bootstrapscript que se incluye con la extensión.AWS_FIS_LOG_LEVEL‐ Opcional. Nivel de registro de los mensajes emitidos por la extensión AWS FIS Lambda. Los valores admitidos sonINFO,WARNyERROR. Si no se establece, la AWS FIS extensión se establecerá de forma predeterminada enINFO.AWS_FIS_EXTENSION_METRICS‐ Opcional. Los posibles valores sonallynone. Si se establece enallla extensión, emitirá métricas de campos electromagnéticos bajo elaws-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 detecte errores y espere a que se añada una configuración de errores a la ubicación de la configuración. El valor predeterminado es60.AWS_FIS_PROXY_RUNTIME_API_ENDPOINT‐ Opcional. Si se establece, anulará el valor deAWS_LAMBDA_RUNTIME_APIpara 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:9000Para obtener más informaciónAWS_LAMBDA_RUNTIME_API, consulte Uso de la API de tiempo de ejecución de Lambda para tiempos de ejecución personalizados 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 motor de ejecución. El valor predeterminado es9100.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á hasta que finalice una encuesta asíncrona en curso antes de evaluar las configuraciones de errores e iniciar la invocación del motor de ejecución. El valor predeterminado es0. Al usarpreventExecutionset totrueen en laaws:lambda:invocation-erroracción, recomendamos establecer esta variable en al menos2000(2 segundos) para garantizar que la extensión tenga una configuración de errores actualizada antes de decidir si se bloquea la ejecución de la función.