Paquete de implementación de AWS Lambda en Ruby - AWS Lambda

Paquete de implementación de AWS Lambda en Ruby

Un paquete de implementación es un archivo ZIP que contiene el código y las dependencias de la función. Debe crear un paquete de implementación si utiliza la API de Lambda para administrar funciones o si necesita incluir bibliotecas y dependencias distintas del AWS SDK. Puede cargar el paquete directamente en Lambda o utilizar un bucket de Amazon S3 y, a continuación, cargarlo en Lambda. Si el paquete de implementación tiene más de 50 MB, debe usar Amazon S3.

Si utiliza el editor de consola de Lambda para crear la función, la consola administra el paquete de implementación. Puede utilizar este método siempre y cuando no tenga que añadir ninguna biblioteca. También puede utilizarlo para actualizar una función que ya tenga bibliotecas en el paquete de implementación, siempre y cuando el tamaño total no supere el 3 MB.

nota

Para que el tamaño del paquete de implementación sea reducido, empaquete las dependencias de la función en capas. Las capas le permiten administrar las dependencias de forma independiente, pueden utilizarlas varias funciones y pueden compartirse con otras cuentas. Para obtener más información, consulte Capas de AWS Lambda.

Actualización de una función sin dependencias

Para actualizar una función mediante la API de Lambda, utilice la operación UpdateFunctionCode. Cree un archivo que contenga el código de la función y cárguelo con la AWS CLI.

Para actualizar una función de Ruby sin dependencias

  1. Cree un archivo ZIP.

    ~/my-function$ zip function.zip function.rb
  2. Utilice el comando update-function-code para cargar el paquete.

    ~/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", ... }

Actualización de una función con dependencias adicionales

Si la función depende de bibliotecas distintas a AWS SDK parar Ruby, instálelas en un directorio local con Bundler e inclúyalas en el paquete de implementación.

Para actualizar una función de Ruby con dependencias

  1. Instale las bibliotecas en el directorio del proveedor con el comando 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 ...

    --path instala las gemas en el directorio del proyecto en lugar de en la ubicación del sistema, y establece este como la ruta predeterminada para las futuras instalaciones. Para instalar luego gemas globalmente, utilice la opción --system.

  2. Cree un archivo 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. Actualice el código de la función.

    ~/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", ... }