Passer au contenu

Comment utiliser des couches pour intégrer la dernière version d’AWS SDK pour JavaScript dans ma fonction Lambda Node.js ?

Lecture de 6 minute(s)
0

Certaines fonctionnalités de la dernière version d’un kit AWS SDK sont manquantes dans l’environnement d’exécution AWS Lambda. Je souhaite intégrer la dernière version d’AWS SDK pour JavaScript dans ma fonction Lambda Node.js.

Brève description

Pour intégrer la dernière version d’un kit AWS SDK dans le package de déploiement de votre fonction Lambda, créez une couche Lambda. Ajoutez ensuite cette couche à votre fonction.

Remarque : Pour les versions 16 et ultérieures de Node.js, les exécutions Lambda Node.js incluent le kit AWS SDK pour JavaScript version 2. Pour les versions 18 et ultérieures de Node.js, les exécutions Lambda Node.js incluent le kit AWS SDK pour JavaScript version 3. Pour plus d'informations, consultez la documentation du kit AWS SDK pour JavaScript.

Pour obtenir la liste complète des exécutions et des versions des kits AWS SDK utilisés par Lambda, consultez la page Environnements d’exécution Lambda.

Remarque : La résolution suivante augmente la taille du package de déploiement de votre fonction. Pour en savoir plus sur les quotas de stockage Lambda, consultez la page Quotas Lambda.

Résolution

Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'interface.

(Facultatif) Identifier la version du kit AWS SDK utilisé par votre fonction

Procédez comme suit :

Remarque : Cette méthode doit uniquement être utilisée pour les versions 16 et antérieures de Node.js. 

  1. Créez une fonction dans la console Lambda.

  2. Mettez à jour le code de la fonction pour renvoyer la version du kit AWS SDK que la fonction utilise lorsque vous invoquez celle-ci :

    const AWS = require('aws-sdk')   
    exports.handler = async (event) => {  
    return AWS.VERSION;  
    };
  3. Invoquez votre fonction.

  4. Comparez la version du kit AWS SDK renvoyée par votre fonction avec la dernière version du kit AWS SDK dans la documentation AWS SDK.

Installer et packager la dernière version du kit AWS SDK

Remarque : Les packages de déploiement doivent être compatibles avec l’exécution Lambda que vous utilisez. Il est recommandé d’utiliser le même système d’exploitation (OS) pour votre exécution que celui spécifié dans la section Environnements d’exécution Lambda.

Dans un environnement de développement local compatible avec Lambda, procédez comme suit :

  1. Exécutez la commande suivante pour créer un répertoire :

    mkdir -p aws-sdk-layer/nodejs
  2. Exécutez la commande suivante pour passer au répertoire :

    cd aws-sdk-layer/nodejs
  3. Installez le kit AWS SDK pour votre version d’exécution de Node.js :
    Node.js 16 et versions antérieures (AWS SDK version 2)
    Pour installer la dernière version du kit AWS SDK version 2, utilisez une instance compatible avec Amazon Linux 2 afin d’exécuter la commande suivante :

    npm install aws-sdk

    Pour plus d'informations, consultez la section Tutoriel : Configuration de Node.js sur une instance Amazon EC2.
    Remarque : Il est recommandé d’utiliser un environnement Amazon Linux 2 lors du développement de ressources Lambda.
    -ou-
    Si vous utilisez un système d’exploitation Windows ou macOS pour le développement, utilisez Docker pour exécuter la commande suivante :

    docker run --entrypoint "" -v "$PWD":/var/task "public.ecr.aws/lambda/nodejs:<version>" /bin/sh -c "npm install aws-sdk; exit"

    Remarque : Avant d’exécuter cette commande, consultez le site Web de Docker pour vérifier que vous utilisez la version la plus récente de Docker.

    Node.js 18 et versions ultérieures (AWS SDK version 3)
    Pour installer la dernière version du SDK AWS version 3, consultez la section Installer le kit SDK pour JavaScript.

  4. Créez un fichier .zip à charger sur votre couche Lambda :

    zip -r ../package.zip ../
  5. (Facultatif) Vérifiez la version du kit AWS SDK que vous avez installé :

    cat package-lock.json

    Exemple de sortie :

    {  "requires": true,    "lockfileVersion": 1,  
      "dependencies": {  
        "aws-sdk": {  
          "version": "2.888.0",  
    ...

Utiliser l’AWS CLI ou la console Lambda pour créer une couche Lambda et l’ajouter à votre fonction

AWS CLI

  1. Pour créer une nouvelle couche Lambda qui inclut la dernière version du kit AWS SDK, exécutez la commande publish-layer-version suivante :

    aws lambda publish-layer-version --layer-name node_sdk --description "My layer" --license-info "MIT" --compatible-runtimes --zip-file fileb://../package.zip --region

    Remarque : Remplacez node_sdk par le nom de votre couche et My layer par une description de la couche. Remplacez également la valeur compatible-runtimes par l’exécution que vous utilisez et la valeur region par la région AWS dans laquelle se trouvent votre fonction et votre couche.

  2. Dans la sortie, copiez la valeur de LayerVersionArn à utiliser à l'étape suivante.

  3. Pour ajouter la couche à votre fonction, exécutez la commande update-function-configuration suivante :

    aws lambda update-function-configuration --function-name my-function --layers arn:aws:lambda:us-east-2:123456789012:layer:node_sdk:1 --region

    Remarque : Remplacez les valeurs my-function par le nom de votre fonction, arn:aws:lambda:us-east-2:123456789012:layer:node_sdk:1 par la valeur LayerVersionArn de votre sortie et region par votre région.

Pour plus d'informations, consultez la section Gestion des dépendances Lambda à l'aide de couches.

Console Lambda

Pour créer une couche Lambda et l'ajouter à votre fonction dans la console Lambda, procédez comme suit :

  1. Ouvrez la page Couches de la console Lambda.
  2. Choisissez Créer une couche.
  3. Dans Nom, saisissez un nom pour la nouvelle couche.
  4. Choisissez Charger un fichier .zip, puis choisissez le nom du fichier .zip de votre package de déploiement.
  5. Sélectionnez Créer.
  6. Ouvrez la page Fonctions de la console Lambda, puis choisissez le nom de la fonction à laquelle vous souhaitez ajouter la couche.
  7. Dans Couches, choisissez Ajouter une couche.
  8. Sous Choisir une couche, choisissez Couches personnalisées.
  9. Choisissez la liste déroulante Couches personnalisées, puis choisissez votre couche personnalisée.
  10. Sélectionnez Ajouter.

(Facultatif) Tester la configuration

Suivez les étapes décrites dans la section (Facultatif) Identification de la version du kit AWS SDK utilisé par votre fonction pour invoquer votre fonction. La fonction renvoie la version du kit AWS SDK qu’elle utilise.

Informations connexes

Bonnes pratiques d’utilisation des fonctions AWS Lambda

Comment créer un package de déploiement Lambda pour Node.js ?

Comment créer une couche pour ma fonction Lambda Python ?

AWS OFFICIELA mis à jour il y a 10 mois