Como faço para criar uma camada Lambda usando um ambiente Lambda simulado com o Docker?

4 minuto de leitura
0

Quero criar uma camada do AWS Lambda que seja compatível com runtimes do ambiente de destino. Como posso fazer isso?

Breve descrição

Ao desenvolver funções do Lambda, você escolhe entre as versões de runtime do Lambda compatíveis. Para criar funções e camadas do Lambda compatíveis com runtimes específicos, você pode fazer o seguinte:

Para obter mais informações, consulte Criar a compartilhar camadas do Lambda.

Resolução

Observação: se houver algum erro ao executar comandos da AWS Command Line Interface (AWS CLI), verifique se você está usando a versão mais recente da AWS CLI.

As instruções a seguir usam Python como linguagem de codificação e uma plataforma de computador baseada em Linux como exemplo. Para outras linguagens e plataformas de codificação, adapte as etapas adequadamente.

Instalar o Docker no seu computador

Se você ainda não tiver feito isso, instale o Docker para Linux, Windows ou macOS no seu computador.

Criar a estrutura de diretórios adequada e especificar suas dependências no arquivo de requisitos do pip (requirements.txt)

Para obter mais informações sobre a criação de estruturas de diretórios, consulte Incluir dependências de biblioteca em uma camada. Para obter mais informações sobre como especificar dependências, consulte Arquivos de requisitos no guia do usuário do pip.

Exemplo de estrutura de diretórios para uma camada do Lambda compatível com as versões 3.6 e 3.8 do Python

├── requirements.txt
└── python/
    └── lib/
        ├── python3.6/
        │   └── site-packages/
        └── python3.8/
            └── site-packages/

Observação: o tamanho total descompactado da função e de todas as camadas não pode exceder o limite de tamanho do pacote de implantação descompactado de 250 MB. Para obter mais informações sobre o suporte à versão do Python no Lambda, consulte Criação de funções do Lambda com Python.

Instalar as dependências da biblioteca em suas subpastas adequadas com base nos runtimes especificados em sua estrutura de diretórios

Execute o seguinte comando da AWS CLI uma vez para cada runtime especificado na estrutura de diretórios:

Importante: substitua 3.6 por 3.7 ou 3.8, dependendo das bibliotecas compatíveis que você deseja instalar.

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

Criar um arquivo de arquivos.zip para sua camada

Execute o comando a seguir para compactar a pasta python e criar o pacote de camadas:

Observação: é possível substituir mypythonlibs por qualquer nome que você preferir.

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

O arquivo.zip é esvaziado na pasta /opt do ambiente Lambda. A pasta /opt pode ser acessada a partir do seu código de função do Lambda.

Criar ou atualizar sua camada

Para criar ou atualizar sua camada do Lambda, execute o seguinte comando:

Importante: certifique-se de incluir os runtimes compatíveis que você especificou anteriormente. Substitua mypythonlibs pelo nome do pacote que você usou na etapa anterior. Substitua Minhas bibliotecas de python por qualquer descrição que você preferir.

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

Revise a saída e copie o nome do recurso da Amazon (ARN) da camada. Você precisa do ARN da camada para concluir a próxima etapa.

Atualizar sua configuração de função do Lambda para usar a camada

Execute o comando a seguir para atualizar sua configuração de função do Lambda para usar a camada:

Importante: substitua arn:aws:lambda:us-east-2:123456789012:layer:mypythonlibs:1 pelo ARN da camada.

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

(Opcional) Usar as imagens do Docker para seu pacote do Lambda em vez de um arquivo do AWS SAM

Em vez de usar um arquivo do AWS SAM, você também pode usar as imagens do Docker amazon/aws-sam-cli-build-image para criar seu pacote do Lambda. O uso das imagens do Docker permite criar o pacote sem criar uma camada.

1.    Execute o comando a seguir para obter as versões necessárias de suas dependências:

Importante: substitua 3.6 por 3.7 ou 3.8, dependendo das bibliotecas compatíveis que você deseja instalar.

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

2.    Crie um pacote de implantação do Lambda que inclua seu código de função e as bibliotecas corretas.


Informações relacionadas

Por que estou recebendo erros de “serviço desconhecido”, “falha na validação de parâmetros” ou “objeto não tem atributo” com minha função Lambda do Python (Boto 3)?

Criar camadas

Usar qualquer linguagem de programação e compartilhe componentes comuns

Lambda (Referência de comando da AWS CLI)

AWS OFICIAL
AWS OFICIALAtualizada há 3 anos