Quero criar imagens de contêiner do AWS Lambda com dependências. Como fazer isso?
Resolução
Verifique se você tem permissões configuradas para o usuário ou perfil do IAM que cria as imagens do contêiner do Lambda. Em seguida, siga estas etapas para usar o Docker para implantar suas imagens de contêiner:
1. Acesse a página da Web do Get Docker. Escolha a aplicação Docker Desktop que atenda às suas necessidades. Siga as instruções fornecidas para instalar o Docker Desktop.
Observação: o Docker é um site de terceiros.
2. No computador local, crie uma pasta com três arquivos: Dockerfile, requirements.txt com bibliotecas e app.py com instruções de importação. Observação: use a versão mais recente do Python para o registro público do Amazon Elastic Container Registry (Amazon ECR).
Este exemplo do Dockerfile usa Python 3.8:
FROM public.ecr.aws/lambda/python:3.8
# Copy function code
COPY app.py ${LAMBDA_TASK_ROOT}
# Install the function's dependencies using file requirements.txt
# from your project folder.
COPY requirements.txt .
RUN pip3 install -r requirements.txt —target "${LAMBDA_TASK_ROOT}"
# Set the CMD to your handler (could also be done as a parameter override outside of the Dockerfile)
CMD [ "app.handler" ]
Este exemplo de arquivo app.py contém um exemplo de declaração de importação:
import sys
def handler(event, context):
return 'Hello from AWS Lambda using Python' + sys.version + '!'
3. Crie sua imagem do Docker com o comando docker build e um nome de imagem.
Este é um comando docker build com um exemplo de “hello-world”:
docker build -t hello-world .
4. Inicie a imagem do Docker com o comando docker run.
Este é um comando docker run com um exemplo de “hello-world”:
docker run -p 9000:8080 hello-world
5. Teste sua aplicação usando o Lambda Runtime Interface Emulator (RIE). Em uma nova janela do terminal, publique um evento no endpoint a seguir usando um comando curl:
curl -XPOST "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{}'
Esse comando invoca a função em execução na imagem do contêiner e retorna uma resposta.
6. Autentique a CLI do Docker em seu registro do Amazon ECR. Altere o ID da conta e a região da AWS no comando para garantir que atenda aos seus requisitos.
Este é um exemplo de autenticação da CLI do Docker no registro do Amazon ECR:
aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 123456789012.dkr.ecr.us-east-1.amazonaws.com
7. Crie um repositório no Amazon ECR usando o comando create-repository.
Este é um exemplo de comando create-repository:
aws ecr create-repository --repository-name hello-world --image-scanning-configuration scanOnPush=true --image-tag-mutability MUTABLE
8. Marque sua imagem para corresponder ao nome do repositório usando o comando docker tag. Em seguida, implante a imagem no Amazon ECR usando o comando docker push.
Altere o ID da conta e a região da AWS nesses comandos para garantir que atendam aos seus requisitos.
Este é um exemplo do comando docker tag:
docker tag hello-world:latest 123456789012.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest
Este é um exemplo do comando docker push:
docker push 123456789012.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest
9. Com sua imagem de contêiner no registro de contêineres do Amazon ECR, crie e execute uma função Lambda. Para obter mais informações, consulte Como criar a função.