

# Crear un alias para una función de Lambda
<a name="configuration-aliases"></a>

Puede crear alias para una función de Lambda. Un alias de Lambda es un puntero a una versión de la función que se puede actualizar. Los usuarios de la función pueden acceder a la versión de la función utilizando el nombre de recurso de Amazon (ARN) del alias. Cuando se implementa una versión nueva, se puede actualizar el alias para usar la nueva versión o dividir el tráfico entre dos versiones.

------
#### [ Console ]

**Para crear un alias mediante la consola**

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.

1. Elija **Alias** y, a continuación, elija **Crear alias**.

1. En la página **Crear alias**, haga lo siguiente:

   1. En **Nombre**, escriba el nombre del alias.

   1. (Opcional) En **Descripción**, escriba una descripción del alias.

   1. En **Versión**, elija la versión de la función a la que desee que apunte el alias.

   1. (Opcional) Para configurar el direccionamiento del alias, expanda **Weighted alias (Alias ponderado)**. Para obtener más información, consulte [Aplicar implementaciones canarias de Lambda con un alias ponderado](configuring-alias-routing.md).

   1. Elija **Save (Guardar)**.

------
#### [ AWS CLI ]

Para crear un alias a través de AWS Command Line Interface (AWS CLI), utilice el comando [create-alias](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/create-alias.html).

```
aws lambda create-alias \
  --function-name my-function \
  --name alias-name \
  --function-version version-number \
  --description " "
```

Si desea cambiar un alias para que apunte a una nueva versión de la función, utilice el comando [update-alias](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-alias.html).

```
aws lambda update-alias \
  --function-name my-function \
  --name alias-name \
  --function-version version-number
```

Para eliminar un alias, utilice el comando [delete-alias](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/delete-alias.html).

```
aws lambda delete-alias \
  --function-name my-function \
  --name alias-name
```

 Los comandos de la AWS CLI mencionados en los pasos anteriores se corresponden con las siguientes operaciones de la API de Lambda:
+ [CreateAlias](https://docs.aws.amazon.com/lambda/latest/api/API_CreateAlias.html)
+ [UpdateAlias](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateAlias.html)
+ [DeleteAlias](https://docs.aws.amazon.com/lambda/latest/api/API_DeleteAlias.html)

------

# Uso de alias de Lambda en las fuentes de eventos y las políticas de permisos
<a name="using-aliases"></a>

Cada alias tiene un ARN único. Un alias solo puede apuntar a una versión de una función, no a otro alias. Puede actualizar un alias para que apunte a una nueva versión de la función.

Las fuentes de eventos como Amazon Simple Storage Service (Amazon S3) invocan su función Lambda. Estos orígenes de eventos mantienen un mapeo que identifica la función que invocarán cuando se produzcan eventos. Si especifica un alias de función de Lambda en la configuración de mapeo, no es necesario actualizar el mapeo cuando cambie la versión de la función. Para obtener más información, consulte [Cómo procesa Lambda registros de orígenes de eventos basados en secuencias y colas](invocation-eventsourcemapping.md).

En una política de recursos, puede conceder permisos para que las fuentes de eventos utilicen la función de Lambda. Si especifica un ARN de alias en la política, no es necesario que actualice la política cuando cambie la versión de la función.

## Políticas de recursos
<a name="versioning-permissions-alias"></a>

Puede utilizar una [política basada en recursos](access-control-resource-based.md) para proporcionar a la función acceso a un servicio, recurso o cuenta. El ámbito de ese permiso dependerá de si se aplica a un alias, a una versión o a toda la función. Por ejemplo, si utiliza un nombre de alias (como `helloworld:PROD`), el permiso le permitirá invocar la función `helloworld` utilizando el ARN del alias (`helloworld:PROD`).

Si intenta invocar la función sin un alias o una versión específica, se producirá un error con los permisos. Este error de los permisos tendrá lugar aunque intente invocar directamente la versión de la función asociada al alias.

Por ejemplo, el siguiente comando de AWS CLI otorga permisos a Amazon S3 para invocar el alias PROD de la función `helloworld` cuando Amazon S3 actúa en nombre de `amzn-s3-demo-bucket`.

```
aws lambda add-permission \
  --function-name helloworld \
  --qualifier PROD \
  --statement-id 1 \
  --principal s3.amazonaws.com \
  --action lambda:InvokeFunction \
  --source-arn arn:aws:s3:::amzn-s3-demo-bucket \
  --source-account 123456789012
```

Para obtener más información sobre el uso de nombres de recursos en las políticas, consulte [Afinar las secciones de recursos y condiciones de las políticas](lambda-api-permissions-ref.md).

# Aplicar implementaciones canarias de Lambda con un alias ponderado
<a name="configuring-alias-routing"></a>

Puede utilizar un alias ponderado para dividir el tráfico entre dos [versiones](configuration-versions.md) diferentes de la misma función. Bajo este enfoque, puede probar nuevas versiones de las funciones con un pequeño porcentaje del tráfico y revertir rápidamente si es necesario. Esto se conoce como [implementación canaria](https://docs.aws.amazon.com/whitepapers/latest/overview-deployment-options/canary-deployments.html). Las implementaciones canarias difieren de las azules/verdes en la medida en que exponen la nueva versión únicamente a una parte de las solicitudes, en lugar de cambiar todo el tráfico a la vez.

Puede apuntar un alias a un máximo de dos versiones de una función de Lambda. Las versiones deben cumplir los siguientes criterios:
+ Ambas versiones deben tener el mismo [rol de ejecución](lambda-intro-execution-role.md).
+ Ambas versiones deben tener la misma configuración de [cola de mensajes fallidos](invocation-async-retain-records.md#invocation-dlq) o ninguna configuración de cola de mensajes fallidos.
+ Ambas versiones deben publicarse. El alias no puede apuntar a `$LATEST`.

**nota**  
Lambda utiliza un modelo probabilístico simple para distribuir el tráfico entre las dos versiones de funciones. En niveles de tráfico bajos, es posible que vea una gran variación entre el porcentaje configurado y el porcentaje real de tráfico en cada versión. Si su función utiliza la concurrencia aprovisionada, puede evitar [Invocaciones de casos de superación](monitoring-metrics-types.md#invocation-metrics) configurando un mayor número de instancias de simultaneidad aprovisionadas durante el tiempo en que el enrutamiento de alias está activo. 

## Creación de un alias ponderado
<a name="create-weighted-alias"></a>

------
#### [ Console ]

**Para configurar el direccionamiento en un alias con la consola**
**nota**  
Verifique que la función tenga al menos dos versiones publicadas. Si necesita crear otras versiones, siga las instrucciones que se indican en [Creación de versiones de funciones](configuration-versions.md#configuration-versions-config).

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.

1. Elija **Alias** y, a continuación, elija **Crear alias**.

1. En la página **Crear alias**, haga lo siguiente:

   1. En **Nombre**, escriba el nombre del alias.

   1. (Opcional) En **Descripción**, escriba una descripción del alias.

   1. En **Versión**, elija la primera versión de la función a la que desea que apunte el alias.

   1. Expanda **Weighted alias (Alias ponderados)**.

   1. En **Versión adicional**, elija la segunda versión de la función a la que desea que apunte el alias.

   1. En **Weight (%) [Ponderación (%)]**, especifique la ponderación de la función. La *ponderación* es el porcentaje de tráfico que se asigna a dicha versión cuando se invoca el alias. La primera versión recibe la ponderación residual. Por ejemplo, si especifica un 10 por ciento en **Additional version (Versión adicional)**, a la primera versión se asigna automáticamente el 90 %.

   1. Seleccione **Save**.

------
#### [ AWS CLI ]

Utilice los comandos [create-alias](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/create-alias.html) y [update-alias](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/lambda/update-alias.html) de AWS CLI para configurar las ponderaciones de tráfico entre dos versiones de funciones. Cuando se crea o actualiza el alias, se especifica la ponderación del tráfico en el parámetro `routing-config`.

En el ejemplo siguiente se crea un alias de una función de Lambda llamado **routing-alias** que apunta a la versión 1 de la función. La versión 2 de la función recibe el 3 por ciento del tráfico. El 97 por ciento restante del tráfico se dirige a la versión 1.

```
aws lambda create-alias \
  --name routing-alias \
  --function-name my-function \
  --function-version 1  \
  --routing-config AdditionalVersionWeights={"2"=0.03}
```

Utilice el comando `update-alias` para aumentar el porcentaje de tráfico entrante a la versión 2. En el ejemplo siguiente, aumenta el tráfico al 5 por ciento.

```
aws lambda update-alias \
  --name routing-alias \
  --function-name my-function \
  --routing-config AdditionalVersionWeights={"2"=0.05}
```

So desea dirigir todo el tráfico a la versión 2, utilice el comando `update-alias` para cambiar la propiedad `function-version` y dirigir el alias a la versión 2. El comando también restablece la configuración de direccionamiento.

```
aws lambda update-alias \
  --name routing-alias \
  --function-name my-function  \
  --function-version 2 \
  --routing-config AdditionalVersionWeights={}
```

 Los comandos de la AWS CLI mencionados en los pasos anteriores se corresponden con las siguientes operaciones de la API de Lambda:
+ [CreateAlias](https://docs.aws.amazon.com/lambda/latest/api/API_CreateAlias.html)
+ [UpdateAlias](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateAlias.html)

------

## Cómo saber qué versión se invocó
<a name="determining-routing-version"></a>

Al configurar las ponderaciones de tráfico entre dos versiones de función, hay dos formas de determinar la versión de la función de Lambda que se ha invocado:
+ **Registros de CloudWatch:** Lambda emite automáticamente una entrada de registro `START` que contiene el ID de la versión invocada para cada invocación de función. Ejemplo:

  `START RequestId: 1dh194d3759ed-4v8b-a7b4-1e541f60235f Version: 2` 

  En las invocaciones de alias, Lambda utiliza la dimensión `ExecutedVersion` para filtrar los datos de las métricas por la versión ejecutada. Para obtener más información, consulte [Visualización de métricas para funciones de Lambda](monitoring-metrics-view.md).
+ **Carga de respuesta (invocaciones sincrónicas)**: las respuestas a invocaciones de funciones sincrónicas incluyen un encabezado `x-amz-executed-version` para indicar qué versión de función se ha invocado.

## Creación de una implementación continua con alias ponderados
<a name="lambda-rolling-deployments"></a>

Utilice AWS CodeDeploy y AWS Serverless Application Model (AWS SAM) para crear una implementación continua que detecte automáticamente los cambios en el código de la función, implemente una nueva versión de la función y aumente gradualmente la cantidad de tráfico que fluye hacia la nueva versión. La cantidad de tráfico y la tasa de aumento son parámetros que puede configurar.

En una implementación continua, AWS SAM realiza las siguientes tareas:
+ Configura la función de Lambda y crea un alias. La configuración de direccionamiento de alias ponderado es la capacidad subyacente que implementa la implementación continua.
+ Crea una aplicación CodeDeploy y un grupo de implementación. El grupo de implementación administra la implementación continua y la reversión, si es necesario.
+ Detecta cuando se crea una nueva versión de la función de Lambda.
+ Activa CodeDeploy para iniciar la implementación de la nueva versión.

### Plantilla de AWS SAM de ejemplo
<a name="sam-template"></a>

En el siguiente ejemplo se muestra una [plantilla de AWS SAM](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/serverless-sam-template-basics.html) para una implementación continua simple. 

```
AWSTemplateFormatVersion : '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: A sample SAM template for deploying Lambda functions

Resources:
# Details about the myDateTimeFunction Lambda function
  myDateTimeFunction:
    Type: [AWS::Serverless::Function](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-function.html)
    Properties:
      Handler: myDateTimeFunction.handler
      Runtime: nodejs24.x
# Creates an alias named "live" for the function, and automatically publishes when you update the function.
      AutoPublishAlias: live
      DeploymentPreference:
# Specifies the deployment configuration
          Type: Linear10PercentEvery2Minutes
```

Esta plantilla define una función de Lambda denominada `myDateTimeFunction` con las siguientes propiedades. 

**AutoPublishAlias **  
La propiedad `AutoPublishAlias` crea un alias denominado `live`. Además, el marco de AWS SAM detecta automáticamente cuando guarda código nuevo para la función. A continuación, el marco publica una nueva versión de función y actualiza el alias `live` para que apunte a la nueva versión.

**DeploymentPreference**  
La propiedad `DeploymentPreference` determina la velocidad a la que la aplicación CodeDeploy cambia el tráfico de la versión original de la función de Lambda a la nueva versión. El valor `Linear10PercentEvery2Minutes` desplaza un diez por ciento adicional del tráfico a la nueva versión cada dos minutos.   
Para obtener una lista de las configuraciones de implementación predefinidas, consulte [Configuraciones de implementación](https://docs.aws.amazon.com/codedeploy/latest/userguide/deployment-configurations.html). 

Para obtener más información sobre cómo crear implementaciones continuas con CodeDeploy y AWS SAM, consulte lo siguiente:
+ [Tutorial: Implementación de una función de Lambda actualizada con CodeDeploy y el AWS Serverless Application Model](https://docs.aws.amazon.com/codedeploy/latest/userguide/tutorial-lambda-sam.html)
+ [Implementación de aplicaciones sin servidor de forma gradual con AWS SAM](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/automating-updates-to-serverless-apps.html)