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á.
Como criar camadas do Lambda no AWS SAM
Você pode usar o AWS SAM para criar camadas personalizadas. As camadas do Lambda permitem que você extraia código de uma função do Lambda que pode ser reutilizado em várias funções do Lambda. Criar somente camadas do Lambda (em vez de toda a aplicação) pode trazer benefícios de algumas maneiras. Isso pode ajudar na redução do tamanho dos pacotes de implantação, na separação da lógica da função de núcleo das dependências e na permissão para compartilhar dependências em várias funções. Para obter informações sobre camadas, consulte Camadas do AWS Lambda no Guia do desenvolvedor do AWS Lambda.
Como criar uma camada do Lambda no AWS SAM
nota
Antes de criar uma camada do Lambda, você deve primeiro gravar uma camada do Lambda no modelo do AWS SAM. Para obter informações e exemplos, consulte Aumentar a eficiência usando camadas do Lambda com o AWS SAM.
Para criar uma camada personalizada, declare-a em seu arquivo de modelo AWS Serverless Application Model (AWS SAM) e inclua uma seção de atributo de recurso Metadata
com uma entrada BuildMethod
. Os valores válidos para BuildMethod
são identificadores de um AWS Lambda tempo de execução, ou makefile
. Inclua uma entrada BuildArchitecture
para especificar as arquiteturas do conjunto de instruções que sua camada suporta. Os valores válidos para BuildArchitecture
são arquiteturas dos conjuntos de instruções Lambda.
Se você especificar makefile
, forneça o makefile personalizado, onde você declara um destino de construção do formulário build-
que contém os comandos de construção para sua camada. Seu makefile é responsável por compilar a camada, se necessário, e copiar os artefatos de construção no local adequado para as etapas subsequentes do seu fluxo de trabalho. A localização do makefile é especificada pela propriedade layer-logical-id
ContentUri
do recurso de camada e deve ser nomeada Makefile
.
nota
Quando você cria uma camada personalizada, AWS Lambda depende das variáveis de ambiente para encontrar seu código de camada. Os tempos de execução do Lambda incluem caminhos no diretório /opt
em que seu código de camada é copiado. A estrutura de pastas de artefatos de construção do seu projeto deve corresponder à estrutura de pastas esperada do tempo de execução para que seu código de camada personalizado possa ser encontrado.
Por exemplo, para Python, você pode colocar seu código no subdiretório python/
. Para NodeJS, você pode colocar seu código no subdiretório nodejs/node_modules/
.
Para obter mais informações, consulte Incluindo dependências de biblioteca em uma camada no AWS Lambda Guia do desenvolvedor.
Veja a seguir um exemplo de seção de atributo de recurso Metadata
.
Metadata: BuildMethod: python3.8 BuildArchitecture: arm64
nota
Se você não incluir a seção do atributo de recurso Metadata
, AWS SAM não cria a camada. Em vez disso, ele copia os artefatos de construção do local especificado na propriedade CodeUri
do recurso de camada. Para obter mais informações, consulte a propriedade ContentUri do tipo de recurso AWS::Serverless::LayerVersion
.
Ao incluir a seção do atributo do recurso Metadata
, você pode usar o comando sam build
para criar a camada, tanto como um objeto independente quanto como uma dependência de uma função AWS Lambda.
-
Como um objeto independente. Talvez você queira criar apenas o objeto de camada, por exemplo, quando estiver testando localmente uma alteração de código na camada e não precisar criar todo o aplicativo. Para criar a camada de forma independente, especifique o recurso da camada com o comando
sam build
.layer-logical-id
-
Como uma dependência de uma função do Lambda. Quando você inclui o ID lógico de uma camada na propriedade
Layers
de uma função do Lambda no mesmo arquivo de modelo AWS SAM, a camada é uma dependência dessa função do Lambda. Quando essa camada também inclui uma seção de atributo de recursoMetadata
com uma entradaBuildMethod
, você cria a camada criando o aplicativo inteiro com o comandosam build
ou especificando o recurso da função com o comandosam build
.function-logical-id
Exemplos
Exemplo de modelo 1: Criar uma camada com o ambiente de tempo de execução Python 3.9
O modelo AWS SAM de exemplo a seguir cria uma camada em relação ao ambiente de execução do Python 3.9.
Resources: MyLayer: Type: AWS::Serverless::LayerVersion Properties: ContentUri: my_layer CompatibleRuntimes: - python3.9 Metadata: BuildMethod: python3.9 # Required to have AWS SAM build this layer
Exemplo de modelo 2: Crie uma camada usando um makefile personalizado
O modelo AWS SAM de exemplo a seguir usa um makefile
personalizado para criar a camada.
Resources: MyLayer: Type: AWS::Serverless::LayerVersion Properties: ContentUri: my_layer CompatibleRuntimes: - python3.8 Metadata: BuildMethod: makefile
O seguinte makefile
contém o destino da compilação e os comandos que serão executados. Observe que a propriedade ContentUri
está definida como my_layer
, portanto, o makefile deve estar localizado na raiz do subdiretório my_layer
e o nome do arquivo deve ser Makefile
. Observe também que os artefatos de construção são copiados para o subdiretório python/
para que AWS Lambda você possa encontrar o código da camada.
build-MyLayer: mkdir -p "$(ARTIFACTS_DIR)/python" cp *.py "$(ARTIFACTS_DIR)/python" python -m pip install -r requirements.txt -t "$(ARTIFACTS_DIR)/python"
Exemplo de comandos sam build
Os comandos sam build
a seguir criam camadas que incluem as seções de atributos do recurso Metadata
.
# Build the 'layer-logical-id' resource independently
$
sam build
# Build the 'function-logical-id' resource and layers that this function depends onlayer-logical-id
$
sam build
# Build the entire application, including the layers that any function depends onfunction-logical-id
$
sam build