¿Cómo configuro las funciones de Lambda como destinos para los equilibradores de carga de aplicación y soluciono los problemas relacionados?

7 minutos de lectura
0

Necesito configurar las funciones de AWS Lambda como destinos para los equilibradores de carga de aplicación y saber cómo solucionar los problemas que puedan surgir.

Solución

Elastic Load Balancing admite el uso de funciones de Lambda como destinos para procesar las solicitudes de los equilibradores de carga de aplicación. Para obtener más información, consulte Uso de AWS Lambda con un equilibrador de carga de aplicación.

Paso 1: Crear una función de Lambda

1.    Abra la página Funciones de la consola de Lambda.

2.    Elija Crear función.

3.    Elija Crear desde cero.

4.    Introduzca un Nombre de función.

5.    En el menú desplegable Tiempo de ejecución, elija Python 3.9 como la versión ejecutable para este escenario.

6.    En Rol de ejecución, elija Crear un nuevo rol con permisos básicos de Lambda.

Nota: Para obtener más información sobre los roles de ejecución, consulte Rol de ejecución de Lambda.

7.    Elija Crear función.

8.     Una vez creada la función, seleccione la pestaña Código. En la sección Código fuente, sustituya el código de función existente por el siguiente código:

import json

def lambda_handler(event, context):
  return {
    "statusCode": 200,
    "statusDescription": "200 OK",
    "headers": {
      "Content-Type": "text/html"
    },
    "isBase64Encoded": False,
    "body": "<h1>Hello from Lambda!</h1>"
  }

9.    Elija Desplegar.

Paso 2: Crear un grupo de destino para la función de Lambda

**Nota:**Para obtener más información, consulte el Paso 1: Configurar un grupo de destino.

1.    Abra la consola de Amazon EC2.

2.    En el panel de navegación, en Equilibrio de carga, seleccione Grupos de destino.

3.    Seleccione Crear grupo de destino.

4.    En Configuración básica, en Elegir un tipo de destino, elija Función de Lambda.

5.    En Nombre del grupo de destino, introduzca el nombre del grupo de destino.

6.    (Opcional) Para activar las comprobaciones de estado, en la sección Comprobaciones de estado, seleccione Habilitar.

7.    (Opcional) Añada una o más etiquetas de la siguiente manera:

  • Expanda la sección Etiquetas.
  • Seleccione Añadir etiqueta.
  • Introduzca la clave y el valor de la etiqueta.

8.    Elija Siguiente.

9.    Elija una función de Lambda como destino.
-or-
Seleccione Añadir una función más tarde para especificar una función de Lambda más tarde.

10.    Seleccione Crear grupo de destino.

Nota: Los permisos del equilibrador de carga para invocar una función de Lambda se otorgan de forma diferente según el método utilizado para crear un grupo de destino y registrar una función. Para obtener más información, consulte Permisos para invocar la función de Lambda.

Paso 3: Configurar un equilibrador de carga y un agente de escucha

Para configurar un equilibrador de carga y un agente de escucha, siga las indicaciones del Paso 3: Configurar un equilibrador de carga y un agente de escucha.

Paso 4: Probar el equilibrador de carga

Para probar el equilibrador de carga, siga las indicaciones del Paso 4: Probar el equilibrador de carga. Si la configuración funciona, el navegador mostrará el mensaje «¡Hola desde Lambda!»

Nota: Si no ha activado las comprobaciones de estado de la función de Lambda, el estado estará no disponible. Puede probar el equilibrador de carga sin hacer una comprobación de estado, ya que no afecta a las funciones de Lambda como destinos de los equilibradores de carga de aplicación.

Límites de las funciones de Lambda como destinos

Para obtener más información sobre los límites de las funciones de Lambda como destinos, consulte Funciones de Lambda como destinos y revise la información indicada en Límites.

Los grupos de destino de Lambda están limitados a un único destino de función de Lambda. Para obtener más información, consulte Preparar la función de Lambda.

Errores habituales de las funciones de Lambda como destinos

«Se ha agotado el tiempo de espera de la conexión»

Este error indica que los grupos de seguridad del equilibrador de carga no permiten el tráfico en el puerto del agente de escucha. Para resolver este error, gestione sus grupos de seguridad y asegúrese de que las reglas de entrada de su grupo de seguridad permitan el tráfico entrante en los puertos del agente de escucha. No se requieren reglas de salida para los grupos de seguridad porque los grupos de seguridad tienen estado. Se permite que las respuestas al tráfico entrante permitido fluyan, independientemente de las reglas de salida.

«No se pudo encontrar el grupo de destino»

Este error indica que se ha eliminado el grupo de destino. Para resolver este error, elimine la política de recursos con el grupo de destino eliminado. Al eliminar la política de recursos, se eliminará el desencadenador.

1.    Abra la página Funciones de la consola de Lambda.

2.    Elija la función de Lambda relacionada con el grupo de destino.

3.    Seleccione la pestaña Configuración y, a continuación, Permisos.

4.    Desplácese hacia abajo hasta la sección Instrucciones de la política basada en recursos y, a continuación, seleccione la política que quiera eliminar.

5.    Elija Eliminar y, a continuación, otra vez Eliminar en el mensaje de advertencia para confirmar que quiere eliminar permanentemente la instrucción de la política de recursos.

También puede utilizar el siguiente comando remove-permission de la Interfaz de la línea de comandos de AWS (AWS CLI) para eliminar la política basada en recursos:

Nota: En el siguiente comando, sustituya EXAMPLE_FUNCTION por el nombre de la función de Lambda y EXAMPLE_ID por el ID de la instrucción.

aws lambda remove-permission --function-name EXAMPLE_FUNCTION --statement-id EXAMPLE_ID

Nota: Si recibe errores al ejecutar los comandos de la AWS CLI, asegúrese de utilizar la versión más reciente de la AWS CLI.

«Se ha producido un error (AccessDenied) al llamar la operación RegisterTargets: la entidad principal elasticloadbalancing no tiene permiso para invocar el arn <Lambda ARN> del grupo de destino <Target Group ARN>»

Cuando se produce un error en una solicitud a una función de Lambda, el equilibrador de carga almacena un código de motivo en el campo error_reason del registro de acceso. El equilibrador de carga también incrementa la métrica de Amazon CloudWatch correspondiente. Para obtener más información, consulte Códigos de motivos de error.

Registre una función de Lambda como destino mediante la AWS CLI. Utilice el comando add-permission de la AWS CLI para conceder permiso a Elastic Load Balancing para invocar su función de Lambda.

Errores conocidos de las funciones de Lambda como destinos

«Las nuevas métricas relacionadas con esta función (LambdaUserError, LambdaInternalError, LambdaTargetProcessedBytes y StandardProcessedBytes) no están disponibles en el panel de control de la consola de ELB».

Acceda a las nuevas métricas de Lambda desde la consola de Amazon CloudWatch.

«La nueva API ModifyTargetGroup permite configurar un valor de tiempo de espera de 120 segundos para la comprobación de estado, pero la consola de ELB no permite valores superiores a 60 segundos».

Para configurar un tiempo de espera para la comprobación de estado superior a 60 segundos, llame a la API ModifyTargetGroup a través de la AWS CLI. Puede configurar el valor hasta 120 segundos como máximo.

Ejemplo de comando modify-target-group:

Nota: En el siguiente comando, sustituya EXAMPLE_TARGET_GROUP_ARN por el ARN de su grupo de destino y EXAMPLE_REGION por su código de región de AWS.

aws elbv2 modify-target-group \
--target-group-arn EXAMPLE_TARGET_GROUP_ARN \
--health-check-timeout-seconds 120 \
--region EXAMPLE_REGION

Información relacionada

Funciones de Lambda como destinos

Versiones y alias de la función de Lambda

Cambio de tráfico mediante alias

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año