Como resolvo o erro “Não é possível importar o módulo” que aparece quando executo o código do Lambda no Python?

3 minuto de leitura
0

Eu recebo o erro “Não é possível importar o módulo” quando tento executar meu programa do AWS Lambda no Python.

Resumo

O erro “Não é possível importar o módulo” aparece quando o ambiente do AWS Lambda não consegue encontrar no pacote de implantação do Lambda a biblioteca definida.

Para solucionar o erro, crie um pacote de implantação com todas as bibliotecas exigidas. Ou então, crie uma camada do Lambda com as bibliotecas necessárias e anexe‑a à função do Lambda. Esse método permite que você reutilize a camada em várias funções do Lambda.

Resolução

Criar uma camada do Lambda para poder anexá‑la a funções do Lambda

Observação: ao criar a camada do Lambda, coloque as bibliotecas nas pasta /python ou na pasta python/lib/python3.x/site-packages. Recomenda-se criar a camada do Lambda no mesmo sistema operacional no qual o runtime do Lambda se baseia. Por exemplo, o Python 3.12 se baseia na imagem de máquina da Amazon (AMI) do Amazon Linux 2023. Portanto, crie a camada no sistema operacional Amazon Linux 2023.

Se a instância do Amazon Elastic Compute Cloud (Amazon EC2) não tiver permissão de chamar a operação de API PublishLayerVersion para fazer upload de camadas do Lambda, siga as etapas de 1 a 3. Se a instância já tiver as permissões necessárias, vá para a etapa 4.

  1. Use o console do Amazon EC2 para criar uma instância com a AMI Amazon Linux 2023. Ou, então, use o console do AWS Cloud9.

  2. Crie uma política do AWS Identity and Access Management (IAM) que conceda as permissões necessárias para chamar a operação de API PublishLayerVersion.
    Exemplo de declaração de política do IAM:

    {
     "Version": "2012-10-17",
     "Statement": [
     {
     "Sid": "VisualEditor0",
     "Effect": "Allow",
     "Action": "lambda:PublishLayerVersion",
     "Resource": "*"
     }
     ]
    }
  3. Crie um perfil do IAM e anexe a política do IAM ao perfil.

  4. Associe o perfil do IAM à instância.

  5. Conecte‑se à instância ou ao ambiente do Cloud9.

  6. Execute os comandos a seguir para criar uma pasta e use o pip para instalar a biblioteca de nome “numpy”:

    mkdir -p lambda-layer/python
    cd lambda-layer/python
    pip3 install --platform manylinux2014_x86_64 --target . --python-version 3.12 --only-binary=:all: numpy

    Observação: edite o parâmetro platform de acordo com o tipo de função. Se a função do Lambda for x86_64, defina o valor como manylinux2014_x86_64. Se a função for arm64, defina o valor como manylinux2014_aarch64. Edite o parâmetro python-version com a versão do Python usada pela função do Lambda.

  7. Execute o comando a seguir para colocar o conteúdo da pasta do python em um arquivo chamado layer.zip:

    cd ..
    zip -r layer.zip python

    Execute o comando a seguir para publicar a camada do Lambda:

    aws lambda publish-layer-version --layer-name numpy-layer --zip-file fileb://layer.zip --compatible-runtimes python3.12 --region us-east-1

    Observação: substitua us-east-1 pela região da AWS onde está a função do Lambda.

  8. Adicione a camada à função do Lambda.

  9. Para testar a função do Lambda, importe o pacote e imprima a versão.
    Exemplo de uma saída bem‑sucedida: 

    import json
    import numpy
    
    
    def lambda_handler(event, context):
     print(numpy.__version__)
     return {
     'statusCode': 200,
     'body': json.dumps('Hello from Lambda!')
     }	
AWS OFICIAL
AWS OFICIALAtualizada há 3 meses