

# Administrar las versiones de la función de Lambda
<a name="configuration-versions"></a>

Puede usar versiones para administrar la implementación de funciones. Por ejemplo, puede publicar una nueva versión de una función para pruebas beta sin afectar a los usuarios de la versión de producción estable. Lambda crea una nueva versión de la función de cada vez que se publica la función. La nueva versión es una copia de la versión no publicada de la función. La versión no publicada se denomina `$LATEST`.

Es importante destacar que cada vez que despliega el código de su función, sobrescribe el código actual en `$LATEST`. Para guardar la iteración actual de `$LATEST`, cree una nueva versión de la función. Si `$LATEST` es idéntica a una versión publicada anteriormente, no podrá crear una nueva versión hasta que implemente los cambios en `$LATEST`. Estos cambios pueden incluir la actualización del código o la modificación de los ajustes de la función.

Tras publicar la versión de una función, su código, tiempo de ejecución, arquitectura, memoria, capas y la mayoría de las demás configuraciones son inmutables. Esto significa que no puede cambiar estas configuraciones sin publicar una nueva versión de `$LATEST`. Puede configurar los siguientes elementos para una versión de función publicada:
+ [Desencadenadores](lambda-services.md#lambda-invocation-trigger)
+ [Destinos](invocation-async-retain-records.md#create-destination)
+ [Simultaneidad aprovisionada](provisioned-concurrency.md)
+ [Invocación asincrónica](invocation-async.md)
+ [Conexiones y proxies de bases de datos](services-rds.md#rds-configuration)

**nota**  
Cuando se utilizan los [controles de administración del tiempo de ejecución](runtimes-update.md#runtime-management-controls) con el modo **Automático**, la versión del tiempo de ejecución utilizada por la versión de la función se actualiza automáticamente. Cuando se utilizan los modos **Function update** (Actualización de funciones) o **Manual**, no se actualiza la versión del tiempo de ejecución. Para obtener más información, consulte [Cómo entender la forma en que Lambda administra las actualizaciones de las versiones de tiempo de ejecución](runtimes-update.md).

**Topics**
+ [Creación de versiones de funciones](#configuration-versions-config)
+ [Uso de versiones](#versioning-versions-using)
+ [Concesión de permisos](#versioning-permissions)

## Creación de versiones de funciones
<a name="configuration-versions-config"></a>

Puede cambiar el código y la configuración de la función solo en la versión no publicada de una función. Cuando se publica una versión, Lambda bloquea el código y la mayoría de las opciones de configuración para garantizar una experiencia uniforme a los usuarios de dicha versión.

Puede crear una versión de función usando la consola de Lambda.

**Para crear una nueva versión de función**

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

1. Elija una función y, a continuación, elija la pestaña **Versiones**.

1. En la página de configuración de versiones, elija **Publicar nueva versión**.

1. (Opcional) Especifique una descripción de la versión.

1. Elija **Publicar**.

También puede publicar una versión de una función con la operación de la API [PublishVersion](https://docs.aws.amazon.com/lambda/latest/api/API_PublishVersion.html).

El siguiente comando AWS CLI publica una nueva versión de una función. La respuesta devuelve la información de configuración sobre la nueva versión, incluido el número de la versión y el ARN de la función con el sufijo de la versión.

```
aws lambda publish-version --function-name my-function
```

Debería ver los siguientes datos de salida:

```
{
  "FunctionName": "my-function",
  "FunctionArn": "arn:aws:lambda:us-east-2:123456789012:function:my-function:1",
  "Version": "1",
  "Role": "arn:aws:iam::123456789012:role/lambda-role",
  "Handler": "function.handler",
  "Runtime": "nodejs24.x",
  ...
}
```

**nota**  
Lambda asigna números de secuencia que aumentan de manera monótona para el control de versiones. Lambda nunca vuelve a utilizar los números de versión, ni siquiera después de eliminar y volver a crear una función.

## Uso de versiones
<a name="versioning-versions-using"></a>

Puede hacer referencia a la función de Lambda utilizando un ARN completo o incompleto.
+ **ARN completo**: ARN de la función con el sufijo de la versión. El siguiente ejemplo hace referencia a la versión 42 de la función `helloworld`.

  ```
  arn:aws:lambda:aws-region:acct-id:function:helloworld:42
  ```
+ **ARN incompleto**: ARN de la función sin el sufijo de la versión.

  ```
  arn:aws:lambda:aws-region:acct-id:function:helloworld
  ```

Puede utilizar un ARN completo o incompleto en todas las operaciones de API que corresponda. Sin embargo, no puede utilizar un ARN incompleto para crear un alias.

Si decide no publicar versiones de las funciones, puede utilizar tanto el ARN completo como incompleto en la [asignación de orígenes de eventos](invocation-eventsourcemapping.md). Cuando se invoca una función usando un ARN incompleto, Lambda invoca `$LATEST` implícitamente. 

El ARN completo de cada versión de una función de Lambda es único. Después de publicar una versión, no puede cambiar el ARN o el código de función.

Lambda solo publica una nueva versión de la función si el código nunca se ha publicado o si este ha cambiado desde la última versión publicada. Si no hay ningún cambio, la versión de la función sigue siendo la que se publicó más recientemente.

Al publicar una versión, Lambda crea una instantánea inmutable del código y de la configuración de la función. No todos los cambios de configuración provocan la publicación de una nueva versión. Los siguientes cambios de configuración permiten que una función se publique en una versión:
+ Código de función
+ Variables de entorno
+ Tiempo de ejecución
+ Controlador
+ Capas
+ Tamaño de memoria
+ Tiempo de espera
+ Configuración de la VPC
+ Configuración de cola de mensajes fallidos (DLQ)
+ rol de IAM
+ Descripción
+ Arquitectura (x86\$164 o arm64)
+ Tamaño de almacenamiento efímero
+ Tipo de paquete
+ Configuración de registro
+ Configuración del sistema de archivos
+ SnapStart
+ Configuración de seguimiento

Los ajustes operativos, como la [simultaneidad reservada](configuration-concurrency.md), no activan la publicación de una nueva versión cuando se modifican.

## Concesión de permisos
<a name="versioning-permissions"></a>

Puede utilizar una [política basada en recursos](access-control-resource-based.md) o una [política basada en identidades](access-control-identity-based.md) para conceder acceso a la función. El ámbito del permiso dependerá de si la política se aplica a una función o a una versión de la función. Para obtener más información sobre los nombres de recursos de funciones en las políticas, consulte [Afinar las secciones de recursos y condiciones de las políticas](lambda-api-permissions-ref.md). 

Puede simplificar la administración de los orígenes de eventos y las políticas de AWS Identity and Access Management (IAM) utilizando un alias de función. Para obtener más información, consulte [Crear un alias para una función de Lambda](configuration-aliases.md).