

# Implementación de funciones de Lambda como archivos .zip
<a name="configuration-function-zip"></a>

Cuando se crea una función Lambda, empaquete el código de función en un paquete de implementación. Lambda admite dos tipos de paquetes de implementación: imágenes de contenedor y archivos .zip. El flujo de trabajo para crear una función depende del tipo de paquete de implementación. Para configurar una función definida como una imagen de contenedor, consulte [Crear una función de Lambda con una imagen de contenedor](images-create.md).

Puede utilizar la consola de Lambda y la API de Lambda para crear una función definida con un archivo .zip. También puede cargar un archivo .zip actualizado para cambiar el código de función. 

**nota**  
No puede cambiar el [tipo de paquete de implementación](https://docs.aws.amazon.com/lambda/latest/api/API_CreateFunction.html#lambda-CreateFunction-request-PackageType) (.zip o imagen de contenedor) de una función existente. Por ejemplo, no se puede convertir una función de imagen de contenedor para utilizar un archivo .zip. Debe crear una nueva función.

**Topics**
+ [Creación de la función](#configuration-function-create)
+ [Uso del editor de código de la consola](#configuration-functions-console-update)
+ [Actualización del código de la función](#configuration-function-update)
+ [Cambio del tiempo de ejecución](#configuration-function-runtime)
+ [Modificación de la arquitectura](#configuration-function-arch)
+ [Uso de la API de Lambda](#configuration-function-api)
+ [Descargar el código de la función](#configuration-function-download)
+ [CloudFormation](#configuration-function-cloudformation)
+ [Cifrado de los paquetes de implementación .zip de Lambda](encrypt-zip-package.md)

## Creación de la función
<a name="configuration-function-create"></a>

Cuando se crea una función definida con un archivo .zip, se elige una plantilla de código, la versión de idioma y el rol de ejecución para la función. Agregue su código de función después de que Lambda cree la función.

**Cómo crear la función**

1. Abra la página de [Functions](https://console.aws.amazon.com/lambda/home#/functions) (Funciones) en la consola de Lambda.

1. Elija **Create function (Crear función)**.

1. Seleccione **Author from scratch (Crear desde cero)** o **Use a blueprint (Usar proyecto)** para crear su función. 

1. Bajo **Basic information (Información básica)**, haga lo siguiente:

   1. En **Nombre de la función**, escriba el nombre de la función. Los nombres de las funciones están limitados a 64 caracteres de longitud.

   1. Para **Runtime (Tiempo de ejecución)**, elija la versión del idioma que desea utilizar para su función.

   1. (Opcional) Para **Architecture** (Arquitectura), elija la arquitectura del conjunto de instrucciones que utilizará para su función. La arquitectura predeterminada es x86\_64. Cuando cree el paquete de implementación para su función, asegúrese de que sea compatible con esta [arquitectura del conjunto de instrucciones](foundation-arch.md).

1. (Opcional) En **Permisos**, expanda **Cambiar función de ejecución predeterminada**. Puede crear un nuevo **Rol de ejecución** o crear un rol existente.

1. (Opcional) Expanda **Advanced settings (Configuración avanzada)**. Puede elegir una **Configuración de firma de código** para la función. También puede configurar una (Amazon VPC) para que tenga acceso a la función.

1. Elija **Create function (Crear función)**.

Lambda crea la nueva función. Ahora puede usar la consola para agregar el código de función y configurar otros parámetros y características de función. Para obtener instrucciones de implementación de código, consulte la página del controlador para conocer el tiempo de ejecución que utiliza la función. 

------
#### [ Node.js ]

[Implementar funciones Node.js de Lambda con archivos de archivo.zip](nodejs-package.md) 

------
#### [ Python ]

 [Uso de archivos .zip para funciones de Lambda en Python](python-package.md) 

------
#### [ Ruby ]

 [Implementar funciones de Lambda de Ruby con archivos .zip](ruby-package.md) 

------
#### [ Java ]

 [Implementar funciones de Lambda Java con archivos de archivo .zip o JAR](java-package.md) 

------
#### [ Go ]

 [Implementar funciones de Lambda en Go con archivos .zip](golang-package.md) 

------
#### [ C\# ]

 [Crear e implementar funciones de Lambda C\# con archivos de archivo .zip](csharp-package.md) 

------
#### [ PowerShell ]

 [Implementar funciones Lambda de PowerShell con archivos .zip](powershell-package.md) 

------

## Uso del editor de código de la consola
<a name="configuration-functions-console-update"></a>

La consola crea una función de Lambda con un único archivo de fuente. Para los lenguajes de scripting, puede editar este archivo y agregar más archivos con el editor de código integrado. Para guardar los cambios, elija **Guardar**. A continuación, para ejecutar el código, elija **Pruebas**.

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](nodejs-package.md) para cargar el código a la función de Lambda.

## Actualización del código de la función
<a name="configuration-function-update"></a>

Para los lenguajes de scripting (Node.js, Python y Ruby), puede editar el código de la función en el editor de código integrado. Si el tamaño del código supera los 3 MB, o si necesita agregar bibliotecas, o para lenguajes incompatibles con el editor (Java, Go, C\#), debe cargar el código de función como un archivo .zip. Si el archivo .zip tiene un tamaño inferior a los 50 MB, puede cargarlo desde su equipo local. Si el tamaño del archivo supera los 50 MB, cárguelo a la función desde un bucket de Amazon S3.

**Para cargar código de función como un archivo .zip**

1. Abra la página de [Funciones](https://console.aws.amazon.com/lambda/home#/functions) en la consola de Lambda.

1. Elija la función que desea actualizar y elija la pestaña **Código**.

1. En **Fuente de código**, seleccione **Cargar desde**.

1. Elija **.zip file** (Archivo .zip) y, a continuación, elija **Upload** (Cargar). 

   1. En el selector de archivos, seleccione la versión de imagen nueva y elija **Open** (Abrir) y, luego, **Save** (Guardar).

1. (Alternativa al paso 4) Elija **Amazon S3 location (Ubicación de Amazon S3)**.

   1. En el cuadro de texto, introduzca el vínculo URL de S3 del archivo .zip y, después, elija **Save (Guardar)**.

## Cambio del tiempo de ejecución
<a name="configuration-function-runtime"></a>

Si actualiza la configuración de la función para utilizar un nuevo tiempo de ejecución, es posible que deba actualizar el código de la función para que sea compatible con el tiempo de ejecución nuevo. Si actualiza la configuración de la función para utilizar un tiempo de ejecución diferente, **debe** proporcionar un nuevo código de función que sea compatible con el tiempo de ejecución y la arquitectura. Para obtener instrucciones acerca de cómo crear un paquete de implementación para el código de función, consulte la página del controlador para conocer el tiempo de ejecución que utiliza la función.

Las imágenes base de Node.js 20, Python 3.12, Java 21, .NET 8, Ruby 3.3 y versiones posteriores se basan en la imagen de contenedor mínima de Amazon Linux 2023. Las imágenes base anteriores utilizan Amazon Linux 2. AL2023 ofrece varias ventajas con respecto a Amazon Linux 2, incluida una huella de implementación más reducida y versiones actualizadas de bibliotecas como `glibc`. Para obtener más información, consulte [Presentación del tiempo de ejecución de Amazon Linux 2023 para AWS Lambda](https://aws.amazon.com/blogs/compute/introducing-the-amazon-linux-2023-runtime-for-aws-lambda/) en el Blog de informática de AWS.

**Para cambiar el tiempo de ejecución**

1. Abra la página de [Funciones](https://console.aws.amazon.com/lambda/home#/functions) en la consola de Lambda.

1. Elija la función que desea actualizar y elija la pestaña **Código**.

1. Desplácese hasta la sección **Configuración de tiempo de ejecución**, que se encuentra en el editor de código.

1. Elija **Edit (Edición de)**.

   1. Para **Runtime** (Tiempo de ejecución), seleccione el identificador del tiempo de ejecución.

   1. Para **Handler (Controlador)**, especifique el nombre de archivo y el controlador de au función.

   1. Para **Architecture** (Arquitectura), elija la arquitectura del conjunto de instrucciones que utilizará para su función.

1. Seleccione **Save**.

## Modificación de la arquitectura
<a name="configuration-function-arch"></a>

Antes de cambiar la arquitectura del conjunto de instrucciones, debe asegurarse de que el código de función sea compatible con la arquitectura de destino. 

Si utiliza Node.js, Python o Ruby y edita el código de función en el editor integrado, el código existente puede ejecutarse sin modificaciones.

Sin embargo, si proporciona el código de función mediante un paquete de implementación de archivo .zip, debe preparar un nuevo archivo .zip recopilado y creado de forma correcta para el tiempo de ejecución de destino y la arquitectura del conjunto de instrucciones. Para obtener instrucciones, consulte la página del controlador para conocer el tiempo de ejecución de la función.

**Para cambiar la arquitectura del conjunto de instrucciones**

1. Abra la página de [Funciones](https://console.aws.amazon.com/lambda/home#/functions) en la consola de Lambda.

1. Elija la función a actualizar y luego elija la pesetaña **Code (Código)**.

1. En **Runtime settings (Configuración de tiempo de ejecución)**, elija **Edit (Editar)**.

1. Para **Architecture** (Arquitectura), elija la arquitectura del conjunto de instrucciones que utilizará para su función.

1. Seleccione **Save**.

## Uso de la API de Lambda
<a name="configuration-function-api"></a>

Para crear y configurar una función que utilice un archivo .zip, utilice las siguientes operaciones de la API: 
+ [CreateFunction](https://docs.aws.amazon.com/lambda/latest/api/API_CreateFunction.html)
+ [UpdateFunctionCode](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionCode.html)
+ [UpdateFunctionConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionConfiguration.html)

## Descargar el código de la función
<a name="configuration-function-download"></a>

Puede descargar la versión no publicada (`$LATEST`) actual del archivo .zip con el código de la función a través de la consola de Lambda. Para ello, primero asegúrese de que dispone de los siguientes permisos de IAM:
+ `iam:GetPolicy`
+ `iam:GetPolicyVersion`
+ `iam:GetRole`
+ `iam:GetRolePolicy`
+ `iam:ListAttachedRolePolicies`
+ `iam:ListRolePolicies`
+ `iam:ListRoles`

**Para descargar el archivo .zip con el código de la función**

1. Abra la página de [Funciones](https://console.aws.amazon.com/lambda/home#/functions) en la consola de Lambda.

1. Elija la función para la que desea descargar el archivo .zip con el código de la función.

1. En la **Descripción general de la función**, pulse el botón **Descargar** y, a continuación, seleccione **Descargar archivo .zip con el código de la función**.

   1. También puede seleccionar **Descargar archivo AWS SAM** para generar y descargar una plantilla SAM basada en la configuración de la función. También puede seleccionar **Descargar ambos** para descargar tanto el archivo .zip como la plantilla SAM.

## CloudFormation
<a name="configuration-function-cloudformation"></a>

Puede usar CloudFormation para crear una función Lambda con archivos .zip. En su plantilla CloudFormation, el recurso `AWS::Lambda::Function` especifica la función Lambda. Para obtener descripciones de las propiedades del recurso `AWS::Lambda::Function`, consulte [AWS::Lambda::Function](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html) en la *Guía del usuario de AWS CloudFormation*.

En el recurso `AWS::Lambda::Function`, establezca las siguientes propiedades para crear una función definida como un archivo .zip:
+ AWS::Lambda::Function
  + PackageType: estableca en `Zip`.
  + Código: introduzca el nombre del bucket de Amazon S3 y el nombre del archivo .zip en los campos `S3Bucket` y `S3Key`. Para Node.js o Python, puede proporcionar código fuente en línea de su función Lambda.
  + Tiempo de ejecución: establece el valor de tiempo de ejecución.
  + Arquitectura: establezca el valor de la arquitectura en `arm64` para utilizar el procesador Graviton2 de AWS. De forma predeterminada, el valor de la arquitectura es `x86_64`.