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.
Pruebas de imágenes de contenedor Lambda en forma local
Puede utilizar el emulador de interfaz de tiempo de ejecución de Lambda para probar de forma local una función de imagen de contenedor antes de subirla a Amazon Elastic Container Registry (Amazon ECR) e implementarla en Lambda. El emulador es un proxy para la Tiempos de ejecución de la API de Lambda. Es un servidor web ligero que convierte solicitudes HTTP en eventos JSON para pasarlos a la función de Lambda en la imagen de contenedor.
Las imágenes base de AWS y las imágenes base exclusivas del sistema operativo incluyen el emulador de interfaz de tiempo de ejecución. Si utiliza una imagen base alternativa, como una imagen de Alpine Linux o Debian, puede compilar el emulador en su imagen o instalarlo en su equipo local.
El emulador de interfaz de ejecución está disponible en el AWS GitHub repositorio
Temas
Directrices para el uso del emulador de interfaz de tiempo de ejecución
Tenga en cuenta las siguientes directrices cuando use el emulador de interfaz de tiempo de ejecución:
-
El RIE no emula las configuraciones de seguridad y autenticación de Lambda, ni la orquestación de Lambda.
Lambda proporciona un emulador para cada una de las arquitecturas del conjunto de instrucciones.
El emulador no admite el seguimiento AWS X-Ray ni otras integraciones de Lambda.
Variables de entorno
El emulador de interfaz de tiempo de ejecución admite un subconjunto de variables de entorno para la función de Lambda en la imagen local en ejecución.
Si su función utiliza credenciales de seguridad, puede configurar las credenciales estableciendo las siguientes variables de entorno:
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_SESSION_TOKEN
AWS_DEFAULT_REGION
Para establecer el tiempo de espera de la función, configure AWS_LAMBDA_FUNCTION_TIMEOUT
. Introduzca el número máximo de segundos que desea permitir que se ejecute la función.
El emulador no rellena las siguientes variables de entorno de Lambda. Sin embargo, puede configurarlos para que coincidan con los valores que espera cuando la función se ejecuta en el servicio de Lambda:
AWS_LAMBDA_FUNCTION_VERSION
AWS_LAMBDA_FUNCTION_NAME
AWS_LAMBDA_FUNCTION_MEMORY_SIZE
Prueba de imágenes creadas a partir de imágenes base de AWS
Las imágenes base AWS para Lambda incluyen el emulador de interfaz de tiempo de ejecución. Después de compilar la imagen de Docker, siga estos pasos para probarla de forma local.
-
Inicie la imagen de Docker con el comando docker run. En este ejemplo,
docker-image
es el nombre de la imagen ytest
es la etiqueta.docker run --platform linux/amd64 -p 9000:8080
docker-image
:test
Este comando ejecuta la imagen como un contenedor y crea un punto de conexión local en
localhost:9000/2015-03-31/functions/function/invocations
.nota
Si creó la imagen de Docker para la arquitectura del conjunto de instrucciones ARM64, asegúrese de utilizar la opción
--platform linux/
en lugar dearm64
--platform linux/
.amd64
-
Desde una nueva ventana de terminal, publique un evento en el punto de conexión local.
-
Obtenga el ID del contenedor.
docker ps
-
Use el comando docker kill
para detener el contenedor. En este comando, reemplace 3766c4ab331c
por el ID del contenedor del paso anterior.docker kill
3766c4ab331c
Prueba de imágenes compiladas a partir de imágenes base alternativas
Si utiliza una imagen base alternativa, como una imagen de Alpine Linux o Debian, puede compilar el emulador en su imagen o instalarlo en su equipo local.
Construcción del emulador de interfaz de tiempo de ejecución en una imagen
Para construir el emulador en su imagen
-
Cree un script y guárdelo en el directorio del proyecto. Configure los permisos de ejecución para el archivo del script.
El script verifica la presencia de la variable de entorno
AWS_LAMBDA_RUNTIME_API
, que indica la presencia de la API de tiempo de ejecución. Si la API de tiempo de ejecución está presente, el script ejecuta el cliente de interfaz de tiempo de ejecución. De lo contrario, el script ejecuta el emulador de interfaz de tiempo de ejecución.Elija un lenguaje para ver un script de ejemplo:
-
Descargue el emulador de interfaz de ejecución para su arquitectura de destino desde GitHub el directorio de su proyecto. Lambda proporciona un emulador para cada una de las arquitecturas del conjunto de instrucciones.
-
Añada las siguientes líneas al Dockerfile.
ENTRYPOINT
incluye el script que ha creado en el paso 1 y su controlador de funciones.ejemplo líneas para agregar a Dockerfile
En el siguiente ejemplo, reemplace
lambda_function.handler
con su controlador de funciones.COPY ./entry_script.sh /entry_script.sh RUN chmod +x /entry_script.sh ADD aws-lambda-rie /usr/local/bin/aws-lambda-rie ENTRYPOINT [ "/entry_script.sh","
lambda_function.handler
" ] -
Compile la imagen de Docker con el comando docker build
. En el ejemplo siguiente se asigna un nombre a la imagen docker-image
y se le asigna la etiquetatest
.docker build --platform linux/amd64 -t
docker-image
:test
.nota
El comando especifica la opción
--platform linux/amd64
para garantizar que el contenedor sea compatible con el entorno de ejecución de Lambda, independientemente de la arquitectura de la máquina de compilación. Si tiene intención de crear una función de Lambda con la arquitectura del conjunto de instrucciones ARM64, asegúrese de cambiar el comando para utilizar la opción--platform linux/arm64
en su lugar. -
Inicie la imagen de Docker con el comando docker run. En este ejemplo,
docker-image
es el nombre de la imagen ytest
es la etiqueta.docker run --platform linux/amd64 -p 9000:8080
docker-image
:test
Este comando ejecuta la imagen como un contenedor y crea un punto de conexión local en
localhost:9000/2015-03-31/functions/function/invocations
.nota
Si creó la imagen de Docker para la arquitectura del conjunto de instrucciones ARM64, asegúrese de utilizar la opción
--platform linux/
en lugar dearm64
--platform linux/
.amd64
-
Desde una nueva ventana de terminal, publique un evento en el punto de conexión local.
-
Obtenga el ID del contenedor.
docker ps
-
Use el comando docker kill
para detener el contenedor. En este comando, reemplace 3766c4ab331c
por el ID del contenedor del paso anterior.docker kill
3766c4ab331c
Instalación local del emulador de la interfaz de tiempo de ejecución
Para instalar el emulador de interfaz de ejecución en su máquina local, descargue el paquete de la arquitectura que prefiera desde GitHub. A continuación, utilice el comando docker run para iniciar la imagen de contenedor y configurar el --entrypoint
en el emulador. Para obtener más información, elija las instrucciones para el lenguaje que prefiera: