Como usar imagens de contêiner com o Lambda?

Última atualização: 26/10/2022

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.


Este artigo foi útil?


Precisa de ajuda com faturamento ou suporte técnico?