Trabajar con capas - AWS Serverless Application Model

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.

Trabajar con capas

Uso deAWS SAM, puede incluir capas en las aplicaciones sin servidor. Para obtener más información acerca de las capas, consulteAWS LambdaCapas deen laAWS LambdaGuía para desarrolladores.

Este tema proporciona información acerca de los siguientes temas:

  • Inclusión de capas en la aplicación

  • Cómo se almacenan en caché las capas localmente

Para obtener información sobre cómo crear capas personalizadas, consulteCapas de construcción.

Inclusión de capas en la aplicación

Para incluir capas en su aplicación, utilice elLayerspropiedad delAWS::Serverless::FunctionTipo de recurso de .

A continuación se muestra un ejemploAWS SAMplantilla con una función 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 en caché las capas localmente

Cuando invoca su función utilizando uno de lossam 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 de los directorios de caché predeterminadas de 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 en caché el paquete, elAWS SAMCLI superpone las capas en una imagen Docker que se utiliza para invocar la función. LaAWS SAMCLI genera los nombres de las imágenes que crea, así como las LayerVersions que se encuentran en la caché. Puede encontrar más detalles sobre el esquema en las siguientes secciones.

Para inspeccionar las capas superpuestas, ejecute el siguiente comando para iniciar una sesión 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 nombre del directorio de almacenamiento en caché de capas

Dado un LayerVersionARN definido en la plantilla, elAWS SAMLa CLI extrae el nombre de capa y la versión del ARN. Crea un directorio para colocar el contenido de la capa en nombreLayerName-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 Imágenes de Docker

Para calcular el hash de capas único, combine 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 igual que 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 capas único, combine 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, combine este valor con el tiempo de ejecución y la arquitectura de la función, con un delimitador de '-':

python3.7-x86_64-2dd7ac5ffb30d515926aefffd