Saltar al contenido

¿Cómo utilizo una imagen de Amazon ECR y Docker para crear una capa de Lambda?

3 minutos de lectura
0

Quiero usar una imagen de Amazon Elastic Container Registry (Amazon ECR) y Docker para crear una capa de AWS Lambda que sea compatible con las versiones ejecutables de mi entorno.

Solución

Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulte Solución de problemas de AWS CLI. Además, asegúrese de utilizar la versión más reciente de la AWS CLI. La siguiente resolución usa Python y Linux. Los pasos pueden variar en otros lenguajes de codificación y sistemas operativos (SO).

Requisito previo: Instale Docker en su ordenador. Para conocer los pasos de instalación, consulte Obtener Docker e Instalación de Docker Engine (solo Linux) en el sitio web de Docker Docs.

Creación de la estructura de directorios y especificación de las dependencias

Cree la estructura de directorios y especifique las dependencias en el archivo de requisitos pip requirements.txt. Para más información sobre cómo especificar las dependencias, consulte los archivos de requisitos en el sitio web de pip.

El siguiente ejemplo de estructura de directorios es aplicable a una capa de Lambda compatible con Python 3.x:

my-layer/
├── requirements.txt
└── python/

Nota: El tamaño total descomprimido de la función y de todas las capas no puede superar el límite de tamaño del paquete de despliegue descomprimido de 250 MB. Para más información sobre la compatibilidad de las versiones de Python en Lambda, consulte Creación de funciones de Lambda con Python.

Instalación de las dependencias de la biblioteca en sus subcarpetas

Ejecute el siguiente comando una vez por cada versión ejecutable que haya especificado en la estructura de directorios:

docker run -v "$PWD":/var/task "public.ecr.aws/sam/build-python3.x" /bin/sh -c "pip install -r requirements.txt -t python/; exit"

Nota: Sustituya 3.x por la biblioteca de Python compatible que desee instalar.

Creación de un archivo.zip para su capa

Ejecute el siguiente comando para comprimir la carpeta python y crear el paquete de capas:

zip -r mypythonlibs.zip python > /dev/null

Nota: Sustituya mypythonlibs por un nombre para su paquete de capas.

Creación o actualización de su capa

Ejecute el siguiente comando de AWS CLI publish-layer-version:

aws lambda publish-layer-version --layer-name mypythonlibs --description "My python libs" --zip-file fileb://mypythonlibs.zip --compatible-runtimes "python3.x"

Nota: Sustituya mypythonlibs por el nombre de su paquete de capas, My python libs por una descripción del paquete de capas y python3.x por la biblioteca de Python instalada.

En el resultado, anote el nombre de recurso de Amazon (ARN) de la capa.

Actualización de la configuración de la función de Lambda para usar la capa

Ejecute el siguiente comando update-function-configuration:

aws lambda update-function-configuration --layers arn:aws:lambda:us-east-2:123456789012:layer:mypythonlibs:1 --function-name my-function

Nota: Sustituya arn:aws:lambda:us-east-2:123456789012:layer:mypythonlibs:1 por la capa ARN y my-function por el nombre de su función. El comando anterior coloca la capa en la carpeta /opt del entorno Lambda. Puede acceder a la carpeta /opt desde el código de la función de Lambda.

Información relacionada

¿Cómo puedo resolver los errores "unknown service", "parameter validation failed" o de una función de Lambda de Python (Boto3)?"object has no attribute"

Nuevo para AWS Lambda: utilice cualquier lenguaje de programación y comparta componentes comunes

Galería pública de Amazon ECR

OFICIAL DE AWSActualizada hace 6 meses