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
-
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.
Sections
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
-
Kit SDK AWS pour Ruby
: le kit SDK AWS officiel pour le langage de programmation 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
-
Créez une archive de fichier .zip.
zip function.zip function.rb
-
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
Pour mettre à jour une fonction Ruby avec dépendances
-
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 commandebundle config set --local system 'true'
. -
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%) ...
-
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", ... }