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.
Aumenta la eficiencia con las capas Lambda con AWS SAM
ConAWS SAM, puede incluir capas en sus aplicaciones sin servidor. AWS Lambdalas capas permiten extraer código de una función de Lambda a una capa de Lambda, que luego se puede utilizar en varias funciones de Lambda. Esto te permite reducir el tamaño de los paquetes de implementación, separar la lógica de las funciones principales de las dependencias y compartir las dependencias entre varias funciones. Para obtener más información acerca de las capas, consulta Capas Lambda de , en la Guía para desarrolladores de AWS Lambda.
Este tema proporciona información sobre lo siguiente:
-
Incluir capas en la aplicación
-
Cómo se almacenan las capas en caché local
Para obtener información sobre la creación de capas personalizadas, consulta Creación de capas Lambda en AWS SAM.
Incluir capas en la aplicación
Para incluir capas en la aplicación, utiliza la propiedad Layers
del tipo de recurso AWS::Serverless::Function.
A continuación, se presenta un ejemplo de plantilla de AWS SAM con una función de Lambda que incluye una capa:
ServerlessFunction: Type: AWS::Serverless::Function Properties: CodeUri: . Handler: my_handler Runtime: Python3.7 Layers: - <LayerVersion ARN>
Cómo se almacenan las capas en caché local
Al invocar la función mediante uno de los comandos sam local
, el paquete de capas de la función se descarga y se almacena en caché en el host local.
En la tabla siguiente se muestran las ubicaciones predeterminadas de los directorios de caché para los distintos sistemas operativos.
SO | Ubicación |
---|---|
Windows 7 | C:\Users\<user>\AppData\Roaming\AWS SAM |
Windows 8 | C:\Users\<user>\AppData\Roaming\AWS SAM |
Windows 10 | C:\Users\<user>\AppData\Roaming\AWS SAM |
macOS | ~/.aws-sam/layers-pkg |
Unix | ~/.aws-sam/layers-pkg |
Una vez almacenado el paquete en caché, la CLI de AWS SAM superpone las capas en una imagen de Docker que se utiliza para invocar la función. La CLI de AWS SAM genera los nombres de las imágenes que crea, así como las LayerVersions que se guardan en la memoria caché. Encontrará más detalles sobre el esquema en las secciones siguientes.
Para inspeccionar las capas superpuestas, ejecuta el siguiente comando para iniciar una sesión de bash en la imagen que desea inspeccionar:
docker run -it --entrypoint=/bin/bash samcli/lambda:<Tag following the schema outlined in Docker Image Tag Schema> -i
Esquema de nombres del directorio de almacenamiento en caché de capas
Dado un LayerVersionARN definido en la plantilla, la CLI de AWS SAM extrae el LayerName y la Version del ARN. Crea un directorio para colocar el contenido de la capa denominada LayerName-Version-<first 10 characters of sha256 of
ARN>
.
Ejemplo:
ARN = arn:aws:lambda:us-west-2:111111111111:layer:myLayer:1 Directory name = myLayer-1-926eeb5ff1
Esquema de etiquetas de Docker Images
Para calcular el hash de las capas únicas, combina todos los nombres de capa únicos con un delimitador de «-», tome el hash SHA256 y, a continuación, tome los primeros 10 caracteres.
Ejemplo:
ServerlessFunction: Type: AWS::Serverless::Function Properties: CodeUri: . Handler: my_handler Runtime: Python3.7 Layers: - arn:aws:lambda:us-west-2:111111111111:layer:myLayer:1 - arn:aws:lambda:us-west-2:111111111111:layer:mySecondLayer:1
Los nombres únicos se calculan de la misma manera que en el esquema de nombres del directorio de almacenamiento en caché de capas:
arn:aws:lambda:us-west-2:111111111111:layer:myLayer:1 = myLayer-1-926eeb5ff1 arn:aws:lambda:us-west-2:111111111111:layer:mySecondLayer:1 = mySecondLayer-1-6bc1022bdf
Para calcular el hash de las capas únicas, combina todos los nombres de capa únicos con un delimitador de «-», tome el hash sha256 y, a continuación, tome los primeros 25 caracteres:
myLayer-1-926eeb5ff1-mySecondLayer-1-6bc1022bdf = 2dd7ac5ffb30d515926aef
A continuación, combina este valor con el tiempo de ejecución y la arquitectura de la función, con un delimitador de '-':
python3.7-x86_64-2dd7ac5ffb30d515926aefffd