

# Creación de funciones de Lambda con Ruby
<a name="lambda-ruby"></a>

Puede ejecutar código Ruby en AWS Lambda. Lambda ofrece [tiempos de ejecución](lambda-runtimes.md) para Ruby que ejecutan código para procesar eventos. El código se ejecuta en un entorno que incluye AWS SDK para 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](#ruby-sdk-included).

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


| Nombre | Identificador | Sistema operativo | Fecha de baja | Bloqueo de la función Crear | Bloqueo de la función Actualizar | 
| --- | --- | --- | --- | --- | --- | 
|  Ruby 3.4  |  `ruby3.4`  |  Amazon Linux 2023  |   31 de marzo de 2028   |   30 de abril de 2028   |   31 de mayo de 2028   | 
|  Ruby 3.3  |  `ruby3.3`  |  Amazon Linux 2023  |   31 de marzo de 2027   |   30 de abril de 2027   |   31 de mayo de 2027   | 
|  Ruby 3.2  |  `ruby3.2`  |  Amazon Linux 2  |   31 de marzo de 2026   |   31 de agosto de 2026   |   30 de septiembre de 2026   | 

**Para crear una función Ruby**

1. Abra la [consola de Lambda](https://console.aws.amazon.com/lambda).

1. Seleccione **Creación de función**.

1. Configure los siguientes ajustes:
   + En **Nombre de la función**: ingrese el nombre de la función.
   + **Tiempo de ejecución**: elija **Ruby 3.4**.

1. Elija **Crear 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. En la sección **IMPLEMENTAR**, elija **Implementar** para actualizar el código de la función. A continuación, para ejecutar el código, seleccione **Crear evento de prueba** en la sección **EVENTOS DE PRUEBA**.

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](ruby-handler.md) 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](ruby-package.md) para cargar el código a la función de 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](ruby-context.md) 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](ruby-logging.md) durante la invocación. Si su función devuelve un error, Lambda formatea el error y lo devuelve al invocador.

**Topics**
+ [Versiones del SDK incluidas en el tiempo de ejecución](#ruby-sdk-included)
+ [Habilitación de otro JIT de Ruby (YJIT)](#ruby-yjit)
+ [Definir el controlador de la función de Lambda en Ruby](ruby-handler.md)
+ [Implementar funciones de Lambda de Ruby con archivos .zip](ruby-package.md)
+ [Implementación de funciones de Lambda de Ruby con imágenes de contenedor](ruby-image.md)
+ [Uso de capas para funciones de Lambda en Ruby](ruby-layers.md)
+ [Uso del objeto de contexto Lambda para recuperar la información de la función de Ruby](ruby-context.md)
+ [Registro y supervisión de las funciones de Lambda](ruby-logging.md)
+ [Instrumentación del código Ruby en AWS Lambda](ruby-tracing.md)

## Versiones del SDK incluidas en el tiempo de ejecución
<a name="ruby-sdk-included"></a>

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)
<a name="ruby-yjit"></a>

Los tiempos de ejecución de Ruby admiten [YJIT](https://docs.ruby-lang.org/en/master/jit/yjit_md.html), 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, configure la variable de entorno `RUBY_YJIT_ENABLE` en `1`. Para confirmar que YJIT está habilitado, imprima el resultado del método `RubyVM::YJIT.enabled?`.

**Example — Confirme que YJIT está habilitado**  

```
puts(RubyVM::YJIT.enabled?())
# => true
```