Comment puis-je résoudre l’erreur « Unable to import module » qui s’affiche lorsque j’exécute du code Lambda en Python ?

Lecture de 3 minute(s)
0

Le message d’erreur « Unable to import module » s’affiche lorsque je tente d’exécuter mon code AWS Lambda en Python.

Brève description

Le message d’erreur « Unable to import module » s’affiche lorsque l’environnement AWS Lambda ne trouve pas la bibliothèque spécifiée dans votre package de déploiement Lambda.

Pour résoudre cette erreur, créez un package de déploiement contenant toutes les bibliothèques requises. Vous pouvez aussi créer une couche Lambda avec les bibliothèques nécessaires et l’associer à votre fonction Lambda. La méthode de la couche Lambda vous permet de réutiliser cette couche dans plusieurs fonctions Lambda.

Résolution

Créer une couche Lambda à associer à plusieurs fonctions Lambda

Remarque : lorsque vous créez la couche Lambda, placez les bibliothèques dans les dossiers /python ou python/lib/python3.x/site-packages. Il est recommandé de créer la couche Lambda sur le même système d’exploitation (OS) que celui sur lequel est basé votre environnement d’exécution Lambda. Par exemple, Python 3.12 est basé sur une Amazon Machine Image (AMI) Amazon Linux 2023. Créez donc la couche sur un système d’exploitation Amazon Linux 2023.

Si votre instance Amazon Elastic Compute Cloud (Amazon EC2) n’est pas autorisée à charger des couches Lambda via l’appel d’API PublishLayerVersion, suivez les étapes 1 à 3. Si votre instance dispose déjà des autorisations nécessaires, passez à l’étape 4.

  1. Utilisez la console Amazon EC2 pour créer une instance avec l’AMI Amazon Linux 2023. Vous pouvez aussi utiliser la console AWS Cloud9.

  2. Créez une politique AWS Identity and Access Management (IAM) qui accorde les autorisations nécessaires pour appeler l’opération d’API PublishLayerVersion.
    Exemple de déclaration de politique IAM :

    {
     "Version": "2012-10-17",
     "Statement": [
     {
     "Sid": "VisualEditor0",
     "Effect": "Allow",
     "Action": "lambda:PublishLayerVersion",
     "Resource": "*"
     }
     ]
    }
  3. Créez un rôle IAM, puis associez-y la politique IAM.

  4. Attachez le rôle IAM à l’instance.

  5. Connectez-vous à votre instance ou à l’environnement Cloud9.

  6. Exécutez les commandes suivantes pour créer un nouveau dossier et utilisez pip pour installer la bibliothèque nommée « 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

    Remarque : mettez à jour le paramètre de plateforme correspondant à votre type de fonction. Pour une fonction Lambda x86_64, définissez la valeur sur manylinux2014_x86_64. Pour une fonction arm64, définissez la valeur sur manylinux2014_aarch64. Mettez à jour le paramètre python-version vers la même version que celle utilisée par votre fonction Lambda.

  7. Exécutez la commande suivante pour placer le contenu du dossier python dans un fichier layer.zip :

    cd ..
    zip -r layer.zip python

    Exécutez la commande suivante pour publier la couche Lambda :

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

    Remarque : remplacez us-east-1 par la région AWS de votre fonction Lambda.

  8. Ajoutez la couche à votre fonction Lambda.

  9. Pour tester votre fonction Lambda, importez le package et imprimez la version.
    Exemple de sortie réussie : 

    import json
    import numpy
    
    
    def lambda_handler(event, context):
     print(numpy.__version__)
     return {
     'statusCode': 200,
     'body': json.dumps('Hello from Lambda!')
     }	
AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 3 mois