Aumente a eficiência usando camadas Lambda com AWS SAM - AWS Serverless Application Model

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Aumente a eficiência usando camadas Lambda com AWS SAM

Usando AWS SAM, você pode incluir camadas em seus aplicativos sem servidor. AWS Lambda camadas permitem que você extraia código de uma função Lambda em uma camada Lambda que pode ser usada em várias funções Lambda. Isso permite que você reduza o tamanho dos pacotes de implantação, separe a lógica da função principal das dependências e compartilhe dependências entre várias funções. Para obter mais informações sobre camadas, consulte Camadas Lambda no Guia do AWS Lambda desenvolvedor.

Este tópico fornece informações sobre o seguinte:

  • Incluindo camadas em seu aplicativo

  • Como as camadas são armazenadas em cache localmente

Para obter informações sobre como construir camadas personalizadas, consulte Construindo camadas Lambda.

Incluindo camadas em seu aplicativo

Para incluir camadas em seu aplicativo, use a propriedade Layers do tipo de recurso AWS::Serverless::Function.

Veja a seguir um exemplo AWS SAM de modelo com uma função Lambda que inclui uma camada:

ServerlessFunction: Type: AWS::Serverless::Function Properties: CodeUri: . Handler: my_handler Runtime: Python3.7 Layers: - <LayerVersion ARN>

Como as camadas são armazenadas em cache localmente

Quando você invoca sua função usando um dos sam local comandos, o pacote de camadas da sua função é baixado e armazenado em cache no seu host local.

A tabela a seguir mostra os locais padrão dos diretórios de cache de diferentes sistemas operacionais.

SO Local
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

Depois que o pacote é armazenado em cache, as camadas são AWS SAMCLI sobrepostas em uma imagem do Docker usada para invocar sua função. Ele AWS SAMCLI gera os nomes das imagens que ele cria, bem como as LayerVersions que são mantidas no cache. Você pode encontrar mais detalhes sobre o esquema nas seções a seguir.

Para inspecionar as camadas sobrepostas, execute o seguinte comando para iniciar uma sessão bash na imagem que você deseja inspecionar:

docker run -it --entrypoint=/bin/bash samcli/lambda:<Tag following the schema outlined in Docker Image Tag Schema> -i

Esquema de nome do diretório de cache de camadas

Dado LayerVersionArn que está definido em seu modelo, o AWS SAMCLI extrai a versão LayerName e do ARN. Ele cria um diretório para colocar o conteúdo da camada em chamado LayerName-Version-<first 10 characters of sha256 of ARN>.

Exemplo:

ARN = arn:aws:lambda:us-west-2:111111111111:layer:myLayer:1 Directory name = myLayer-1-926eeb5ff1

Esquema de tags do Docker Images

Para calcular o hash de camadas exclusivo, combine todos os nomes de camadas exclusivos com um delimitador de '-', use o hash SHA256 e, em seguida, use os primeiros 10 caracteres.

Exemplo:

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

Os nomes exclusivos são computados da mesma forma que o esquema de nomes do Layer Caching Directory:

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 o hash de camadas exclusivo, combine todos os nomes de camadas exclusivos com um delimitador de '-', use o hash sha256 e, em seguida, use os primeiros 25 caracteres:

myLayer-1-926eeb5ff1-mySecondLayer-1-6bc1022bdf = 2dd7ac5ffb30d515926aef

Em seguida, combine esse valor com o tempo de execução e a arquitetura da função, com um delimitador de '-':

python3.7-x86_64-2dd7ac5ffb30d515926aefffd