Déployer des fonctions Lambda en Ruby avec des archives de fichiers .zip - AWS Lambda

Déployer des fonctions Lambda en Ruby avec des archives de fichiers .zip

Le code de votre fonction AWS Lambda se compose de scripts ou de programmes compilés et leurs dépendances. Pour déployer votre code de fonction vers Lambda, vous utilisez un package de déploiement. Lambda prend en charge deux types de packages de déploiement : les images conteneurs et les archives de fichiers .zip.

Pour créer le package de déploiement pour une archive de fichier .zip, vous pouvez utiliser un utilitaire d’archivage de fichier .zip intégré ou tout autre utilitaire de fichier .zip (tel que 7zip) pour votre outil de ligne de commande. Remarque : les exigences suivantes s’applique à l’utilisation d’un fichier .zip en tant que package de déploiement :

  • Le fichier .zip contient le code de votre fonction et toutes les dépendances utilisées pour exécuter le code de votre fonction (le cas échéant) sur Lambda. Si votre fonction dépend uniquement des bibliothèques standard ou des bibliothèques de kits SDK AWS, vous n’avez pas besoin d’inclure ces bibliothèques dans votre fichier .zip. Ces bibliothèques sont incluses dans les environnements de l’environnement d’exécution Lambda pris en charge.

  • Si le fichier .zip est supérieur à 50 Mo, nous vous recommandons de le charger dans votre fonction à partir d’un compartiment Amazon Simple Storage Service (Amazon S3).

  • Si votre package de déploiement contient des bibliothèques natives, vous pouvez créer le package de déploiement avec AWS Serverless Application Model (AWS SAM). Vous pouvez utiliser la commande AWS SAM de la CLI sam build avec le --use-container pour créer votre package de déploiement. Cette option génère un package de déploiement à l’intérieur d’une image Docker compatible avec l’environnement d’exécution Lambda.

    Pour plus d’informations, consultez sam build dans le Guide du développeur AWS Serverless Application Model.

  • Vous devez créer le package de déploiement pour être compatible avec cette architecture de l’ensemble des instructions de la fonction.

  • Lambda utilise les autorisations de fichiers POSIX. Ainsi, vous pourriez devoir définir des autorisations pour le dossier du package de déploiement avant de créer l’archive de fichiers .zip.

Prérequis

La AWS CLI est un outil à code open source qui vous permet d’interagir avec les services AWS à l’aide des commandes du terminal de ligne de commande. Pour exécuter la procédure indiquée dans cette section, vous devez satisfaire aux exigences suivantes :

Outils et bibliothèques

Lambda fournit les outils et bibliothèques suivants pour le runtime Ruby :

Outils et bibliothèques pour Ruby

Mise à jour d'une fonction sans dépendances

Pour mettre à jour une fonction à l'aide de l'API Lambda, utilisez l'opération UpdateFunctionCode. Créez une archive contenant le code de votre fonction et téléchargez-la à l'aide de l'AWS Command Line Interface (AWS CLI).

Pour mettre à jour une fonction Ruby sans dépendances
  1. Créez une archive de fichier .zip.

    zip function.zip function.rb
  2. Pour charger le package, utilisez la commande update-function-code.

    aws lambda update-function-code --function-name my-function --zip-file fileb://function.zip

    Vous devriez voir la sortie suivante:

    { "FunctionName": "my-function", "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:my-function", "Runtime": "ruby2.5", "Role": "arn:aws:iam::123456789012:role/lambda-role", "Handler": "function.handler", "CodeSha256": "Qf0hMc1I2di6YFMi9aXm3JtGTmcDbjniEuiYonYptAk=", "Version": "$LATEST", "TracingConfig": { "Mode": "Active" }, "RevisionId": "983ed1e3-ca8e-434b-8dc1-7d72ebadd83d", ... }

Mise à jour d'une fonction avec dépendances supplémentaires

Si votre fonction dépend de bibliothèques autres que le AWS SDK for Ruby, installez-les dans un répertoire local avec Bundler, et incluez-les dans votre package de déploiement.

Pour mettre à jour une fonction Ruby avec dépendances
  1. Installez les bibliothèques dans le répertoire des fournisseurs à l'aide de la commande bundle.

    bundle config set --local path 'vendor/bundle' \ bundle install

    Vous devriez voir la sortie suivante:

    Fetching gem metadata from https://rubygems.org/.............. Resolving dependencies... Fetching aws-eventstream 1.0.1 Installing aws-eventstream 1.0.1 ...

    Cela a pour effet d'installer les gems dans le répertoire du projet au lieu de l'emplacement système, et de définir vendor/bundle comme chemin d'accès par défaut pour les futures installations. Pour installer les gems de façon globale ultérieurement, utilisez la commande bundle config set --local system 'true'.

  2. Créez une archive de fichier .zip.

    zip -r function.zip function.rb vendor

    Vous devriez voir la sortie suivante:

    adding: function.rb (deflated 37%) adding: vendor/ (stored 0%) adding: vendor/bundle/ (stored 0%) adding: vendor/bundle/ruby/ (stored 0%) adding: vendor/bundle/ruby/2.7.0/ (stored 0%) adding: vendor/bundle/ruby/2.7.0/build_info/ (stored 0%) adding: vendor/bundle/ruby/2.7.0/cache/ (stored 0%) adding: vendor/bundle/ruby/2.7.0/cache/aws-eventstream-1.0.1.gem (deflated 36%) ...
  3. Mettez à jour le code de la fonction.

    aws lambda update-function-code --function-name my-function --zip-file fileb://function.zip

    Vous devriez voir la sortie suivante:

    { "FunctionName": "my-function", "FunctionArn": "arn:aws:lambda:us-west-2:123456789012:function:my-function", "Runtime": "ruby2.5", "Role": "arn:aws:iam::123456789012:role/lambda-role", "Handler": "function.handler", "CodeSize": 300, "CodeSha256": "Qf0hMc1I2di6YFMi9aXm3JtGTmcDbjniEuiYonYptAk=", "Version": "$LATEST", "RevisionId": "983ed1e3-ca8e-434b-8dc1-7d72ebadd83d", ... }