Creación de funciones de Lambda con Ruby - AWS Lambda

Creación de funciones de Lambda con Ruby

Puede ejecutar código Ruby en AWS Lambda. Lambda ofrece tiempos de ejecución para Ruby que ejecutan código para procesar eventos. El código se ejecuta en un entorno que incluye AWS SDK for Ruby, con credenciales de un rol de AWS Identity and Access Management (IAM) que usted administre. Para obtener más información sobre las versiones del SDK incluidas en los tiempos de ejecución de Ruby, consulte Versiones del SDK incluidas en el tiempo de ejecución.

Lambda admite los siguientes entornos de tiempos de ejecución de Ruby.

Ruby
Nombre Identificador Sistema operativo Fecha de baja Bloqueo de la función Crear Bloqueo de la función Actualizar

Ruby 3.3

ruby3.3

Amazon Linux 2023

Ruby 3.2

ruby3.2

Amazon Linux 2

Para crear una función Ruby
  1. Abra la consola de Lambda.

  2. Elija Crear función.

  3. Configure los siguientes ajustes:

    • En Nombre de la función: ingrese el nombre de la función.

    • Tiempo de ejecución: elija Ruby 3.2.

  4. Elija Crear función.

  5. Para configurar un evento de prueba, seleccione Prueba.

  6. En Nombre del evento, escriba test.

  7. Elija Guardar cambios.

  8. Elija Test (Probar) para invocar la función.

La consola crea una función de Lambda con un único archivo de origen llamado lambda_function.rb. Puede editar este archivo y agregar más archivos en el editor de código integrado. Para guardar los cambios, elija Guardar. A continuación, para ejecutar el código, elija Pruebas.

nota

La consola de Lambda utiliza AWS Cloud9 para proporcionar un entorno de desarrollo integrado en el navegador. También puede utilizar AWS Cloud9 para desarrollar funciones de Lambda en su propio entorno. Para obtener más información, consulte Trabajar con funciones de AWS Lambda utilizando AWS Toolkit en la guía del usuario de AWS Cloud9.

El archivo lambda_function.rb exporta una función denominada lambda_handler que toma un objeto de evento y un objeto context. Esta es la función de controlador a la que llama Lambda cuando se invoca la función. El tiempo de ejecución de la función de Ruby obtiene eventos de Lambda y los pasa al controlador. En la configuración de función, el valor de controlador es lambda_function.lambda_handler.

Al guardar el código de función, la consola de Lambda crea un paquete de implementación de archivo .zip. Cuando desarrolle el código de función fuera de la consola (mediante un IDE), debe crear un paquete de implementación para cargar el código a la función de Lambda.

nota

Para comenzar con el desarrollo de aplicaciones en su entorno local, implemente una de las aplicaciones de ejemplo disponibles en el repositorio de GitHub de esta guía.

Aplicaciones de Lambda de ejemplo en Ruby
  • blank-ruby: una función de Ruby que muestra el uso del registro, las variables de entorno, el seguimiento de AWS X-Ray, las pruebas de unidad y el AWS SDK.

  • Ejemplos de código de Ruby para AWS Lambda: muestras de código escritas en Ruby que demuestran cómo interactuar con AWS Lambda.

El tiempo de ejecución de la función pasa un objeto context al controlador, además del evento de invocación. El objeto context contiene información adicional acerca de la invocación, la función y el entorno de ejecución. Hay más información disponible en las variables de entorno.

Su función de Lambda tiene un grupo de registros de Registros de CloudWatch. El tiempo de ejecución de la función envía detalles de cada invocación a Registros de CloudWatch. Se transmite cualquier registro que su función genere durante la invocación. Si su función devuelve un error, Lambda formatea el error y lo devuelve al invocador.

Versiones del SDK incluidas en el tiempo de ejecución

La versión del AWS SDK incluida en el tiempo de ejecución de Ruby depende de la versión del tiempo de ejecución y de su Región de AWS. AWS SDK para Ruby está diseñado para ser modular y está separado por Servicio de AWS. Para encontrar el número de versión de una gema de servicio concreta incluida en el tiempo de ejecución que está utilizando, cree una función de Lambda con código en el siguiente formato. Sustituya aws-sdk-s3 y Aws::S3 por el nombre de las gemas de servicio que utilice su código.

require 'aws-sdk-s3' def lambda_handler(event:, context:) puts "Service gem version: #{Aws::S3::GEM_VERSION}" puts "Core version: #{Aws::CORE_GEM_VERSION}" end

Habilitación de otro JIT de Ruby (YJIT)

El tiempo de ejecución de Ruby 3.2 es compatible con YJIT, un compilador JIT de Ruby ligero y minimalista. YJIT proporciona un rendimiento significativamente mayor, pero también utiliza más memoria que el intérprete de Ruby. Se recomienda YJIT para cargas de trabajo de Ruby on Rails.

YJIT no está habilitado de forma predeterminada. Para habilitar YJIT para una función de Ruby 3.2, establezca la variable de entorno RUBY_YJIT_ENABLE en 1. Para confirmar que YJIT está habilitado, imprima el resultado del método RubyVM::YJIT.enabled?.

ejemplo — Confirme que YJIT está habilitado
puts(RubyVM::YJIT.enabled?()) # => true