Como resolvo o erro “Não é possível importar o módulo” que recebo quando executo o código do Lambda no Python?
Eu recebo o erro “Não é possível importar o módulo” quando tento executar meu código do AWS Lambda no Python.
Breve descrição
Normalmente, você recebe esse erro quando seu ambiente do Lambda não consegue encontrar a biblioteca especificada no código Python. Isso ocorre porque o Lambda não vem pré-empacotado com todas as bibliotecas do Python.
Para resolver isso, crie um pacote de implantação ou uma camada do Lambda que inclua as bibliotecas que você deseja usar em seu código Python para Lambda.
Importante: Certifique-se de colocar a biblioteca que você importa para o Python dentro da pasta /python.
Resolução
Observação: s etapas a seguir mostram como criar uma camada do Lambda em vez de um pacote de implantação. Isso ocorre porque você pode reutilizar a camada do Lambda em várias funções do Lambda. Cada runtime do Lambda adiciona pastas específicas dentro do diretório /opt referenciado pela variável PATH. Se a camada usar a mesma estrutura de pastas, o código da função do Lambda poderá acessar o conteúdo da camada sem especificar o caminho.
É uma prática recomendada criar uma camada do Lambda no mesmo sistema operacional em que seu runtime do Lambda se baseia. Por exemplo, o Python 3.8 é baseado em uma imagema de máquina da Amazon (AMI) do Amazon Linux 2. No entanto, o Python 3.7 e o Python 3.6 são baseados na AMI do Amazon Linux.
Para criar uma camada do Lambda para uma biblioteca do Python 3.8, faça o seguinte:
Observação: as etapas 1 a 3 são opcionais.
1. No console do AWS Cloud9, crie uma instância do Amazon Elastic Compute Cloud (Amazon EC2) com a AMI do Amazon Linux 2. Para obter instruções, consulte Como criar um ambiente do EC2 no Guia do usuário do AWS Cloud9.
2. Crie uma política do AWS Identity and Access Management (IAM) que conceda permissões para chamar a operação da API PublishLayerVersion.
Exemplo de declaração de política do IAM que concede permissões para chamar a operação da API PublishLayerVersion
{ "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. Em seguida, anexe o perfil do IAM à instância do Amazon EC2.
Observação: sua instância do EC2 agora tem permissões para fazer upload de camadas do Lambda para a chamada da API PublishLayerVersion.
4. Abra seu ambiente do Amazon EC2 no AWS Cloud9. Em seguida, instale o Python 3.8 e o pip3 executando os seguintes comandos:
$ sudo amazon-linux-extras install python3.8 $ curl -O https://bootstrap.pypa.io/get-pip.py $ python3.8 get-pip.py --user
5. Crie uma pasta python executando o seguinte comando:
$ mkdir python
6. Instale os arquivos da biblioteca Pandas na pasta python executando o seguinte comando:
Importante: Substitua Pandas pelo nome da biblioteca do Python que você deseja importar.
$ python3.8 -m pip install pandas -t python/
7. Compacte o conteúdo da pasta python em um arquivo layer.zip executando o seguinte comando:
$ zip -r layer.zip python
8. Publique a camada do Lambda executando o seguinte comando:
Importante: Substitua us-east-1 pela região da AWS em que sua função do Lambda está.
$ aws lambda publish-layer-version --layer-name pandas-layer --zip-file fileb://layer.zip --compatible-runtimes python3.8 --region us-east-1
9. Adicione a camada à sua função do Lambda.
Informações relacionadas
Vídeos relacionados

Conteúdo relevante
- AWS OFICIALAtualizada há 8 meses
- AWS OFICIALAtualizada há um ano