Package de déploiement AWS Lambda en Ruby - AWS Lambda

Package de déploiement AWS Lambda en Ruby

Pour créer une image de conteneur afin de déployer votre code de fonction, veuillez consulter .

Un package de déploiement est une archive .zip qui contient le code et les dépendances de la fonction. Vous devez créer une archive de fichier .zip si vous utilisez l'API Lambda pour gérer les fonctions, ou si vous devez inclure des bibliothèques et des dépendances autres que le kit AWS SDK. Vous pouvez charger le package directement dans Lambda, ou vous pouvez utiliser un compartiment Amazon Simple Storage Service (Amazon S3) puis le charger dans Lambda. Si le package de déploiement est supérieur à 50 Mo, vous devez utiliser Amazon S3.

Si vous utilisez l'éditeur de console Lambda pour créer votre fonction, la console gère le package de déploiement. Vous pouvez utiliser cette méthode tant que vous n'avez pas besoin d'ajouter des bibliothèques. Vous pouvez également l'utiliser pour mettre à jour une fonction qui a déjà des bibliothèques dans le package de déploiement, tant que la taille totale ne dépasse pas 3 MB.

Note

Pour que la taille de votre package de déploiement reste petite, empaquetez les dépendances de votre fonction en couches. Les couches vous permettent de gérer vos dépendances de manière indépendante, peuvent être utilisées par plusieurs fonctions et être partagées avec d'autres comptes. Pour plus d'informations, consultez Couches AWS Lambda.

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épendance

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

    ~/my-function$ zip function.zip function.rb
  2. Utilisez la commande update-function-code pour charger le package.

    ~/my-function$ aws lambda update-function-code --function-name my-function --zip-file fileb://function.zip { "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 Kit SDK AWS pour 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 avec la commande bundle.

    ~/my-function$ bundle install --path vendor/bundle Fetching gem metadata from https://rubygems.org/.............. Resolving dependencies... Fetching aws-eventstream 1.0.1 Installing aws-eventstream 1.0.1 ...

    Le --path installe les gems dans le répertoire de projet au lieu de l'emplacement du système, et définit celui-ci comme chemin d'accès par défaut pour les futures installations. Pour installer des gems de façon globale ultérieurement, utilisez l'option --system.

  2. Créez une archive ZIP.

    package$ zip -r function.zip function.rb vendor 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.

    ~/my-function$ aws lambda update-function-code --function-name my-function --zip-file fileb://function.zip { "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", ... }