Implementar funciones de Lambda de Ruby con archivos .zip - AWS Lambda

Implementar funciones de Lambda de Ruby con archivos .zip

El código de la función AWS Lambda se compone de scripts o programas compilados y sus dependencias. Utiliza un paquete de implementación para implementar su código de función en Lambda. Lambda admite dos tipos de paquetes de implementación: imágenes de contenedor y archivos .zip.

Para crear un paquete de implementación de un archivo de archivos .zip, puede utilizar una utilidad de archivo de archivos. zip integrada o cualquier otra utilidad de archivo.zip (como 7zip) para la herramienta de línea de comandos. Tenga en cuenta los siguientes requisitos para utilizar un archivo.zip como paquete de implementación:

  • El archivo.zip contiene el código de su función y cualquier dependencia utilizada para ejecutar el código de su función (si corresponde) en Lambda. Si su función depende solo de bibliotecas estándar o bibliotecas SDK AWS, no necesita incluir estas bibliotecas en su archivo.zip. Estas bibliotecas se incluyen con los entornos de tiempo de ejecución de Lambda admitidos.

  • Si el archivo .zip tiene más de 50 MB, le recomendamos cargarlo a su función desde un bucket Amazon Simple Storage Service (AmazonS3).

  • Si el paquete de implementación contiene bibliotecas nativas, puede compilar el paquete de implementación con AWS Serverless Application Model (AWS SAM). Puede utilizar el comando AWS SAM de la CLI de sam build con --use-container para crear el paquete de implementación. Esta opción crea un paquete de implementación dentro de una imagen de Docker que es compatible con el entorno de ejecución de Lambda.

    Para obtener más información, consulte creación de sam en la Guía para desarrolladores de AWS Serverless Application Model.

  • Lambda usa permisos de archivo de POSIX, por lo que puede necesitar establecer permisos para la carpeta del paquete de implementación antes de crear el archivo .zip.

Prerequisites

La AWS CLI es una herramienta de código abierto que le permite interactuar con los servicios de AWS mediante el uso de comandos en el shell de la línea de comandos. Para completar los pasos en esta sección, debe disponer de lo siguiente:

Herramientas y bibliotecas

Lambda proporciona las siguientes herramientas y bibliotecas para el tiempo de ejecución de Ruby:

Herramientas y bibliotecas para Ruby

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 Command Line Interface (AWS CLI).

Para actualizar una función de Ruby sin dependencias

  1. Cree un archivado mediante archivos .zip.

    zip function.zip function.rb
  2. Utilice el comando update-function-code para cargar el paquete.

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

    Debería ver los siguientes datos de salida:

    { "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 for 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.

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

    Debería ver los siguientes datos de salida:

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

    Esto instala las gemas en el directorio del proyecto en lugar de en la ubicación del sistema, y establece vendor/bundle este como la ruta predeterminada para las futuras instalaciones. Para instalar luego gemas globalmente, utilice bundle config set --local system 'true'.

  2. Cree un archivado mediante archivos .zip.

    zip -r function.zip function.rb vendor

    Debería ver los siguientes datos de salida:

    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.

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

    Debería ver los siguientes datos de salida:

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