Quero usar uma imagem do Amazon Elastic Container Registry (Amazon ECR) e o Docker para criar uma camada do AWS Lambda compatível com os runtimes do meu ambiente.
Resolução
Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI. A resolução a seguir usa Python e Linux. As etapas podem variar para outras linguagens de codificação e sistemas operacionais (SO).
Pré-requisito: Instalar o Docker no seu computador. Para ver as etapas de instalação, consulte Get Docker (Obter o Docker) e Install Docker Engine (instalar o Docker Engine) (somente Linux) no site Docker Docs.
Crie a estrutura de diretório e especifique suas dependências
Crie a estrutura de diretório e especifique suas dependências no arquivo de requisitos do pip requirements.txt. Para obter mais informações sobre como especificar dependências, consulte Requirements files (Arquivos de requisitos) no site do pip.
O exemplo de estrutura de diretório a seguir é para uma camada do Lambda compatível com o Python 3.x:
my-layer/
├── requirements.txt
└── python/
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 Criar funções do Lambda com Python.
Instale as dependências da biblioteca em suas subpastas
Execute o seguinte comando uma vez para cada runtime especificado na estrutura de diretório:
docker run -v "$PWD":/var/task "public.ecr.aws/sam/build-python3.x" /bin/sh -c "pip install -r requirements.txt -t python/; exit"
Observação: Substitua 3.x pela biblioteca Python compatível que você deseja instalar.
Crie um arquivo .zip para sua camada
Execute o comando a seguir para compactar a pasta python e criar o pacote de camadas:
zip -r mypythonlibs.zip python > /dev/null
Observação: Substitua mypythonlibs por um nome para seu pacote de camadas.
Crie ou atualize sua camada
Execute o seguinte comando da AWS CLI publish-layer-version:
aws lambda publish-layer-version --layer-name mypythonlibs --description "My python libs" --zip-file fileb://mypythonlibs.zip --compatible-runtimes "python3.x"
Observação: Substitua mypythonlibs pelo nome do seu pacote de camadas, My python libs por uma descrição do pacote de camadas e python3.x pela biblioteca Python instalada.
Na saída, anote o nome de recurso da Amazon (ARN) da camada.
Atualize sua configuração de função do Lambda para usar a camada
Execute o seguinte comando update-function-configuration:
aws lambda update-function-configuration --layers arn:aws:lambda:us-east-2:123456789012:layer:mypythonlibs:1 --function-name my-function
Observação: Substitua arn:aws:lambda:us-east-2:123456789012:layer:mypythonlibs:1 pelo ARN camada e my-function pelo nome da sua função. O comando anterior coloca a camada na pasta /opt do ambiente Lambda. É possível acessar a pasta /opt a partir do seu código de função do Lambda.
Informações relacionadas
Como resolvo os erros "unknown service", "parameter validation failed", ou de uma função do Lambda do Python (Boto3)?"object has no attribute"
New for AWS Lambda – use any programming language and share common components (Novidade no AWS Lambda — use qualquer linguagem de programação e compartilhe componentes comuns)
Galeria pública do Amazon ECR