Lambda funciona como objetivos en Lattice VPC - Amazon VPC Lattice

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Lambda funciona como objetivos en Lattice VPC

Puede registrar sus funciones de Lambda como destinos en un grupo de destino de VPC Lattice y configurar una regla de escucha para reenviar las solicitudes de su función de Lambda al grupo de destino. Cuando el servicio reenvía la solicitud a un grupo de destino con una función de Lambda como destino, invoca la función de Lambda y pasa el contenido de la solicitud a la función de Lambda, en formato. JSON Para obtener más información, consulte Uso AWS Lambda con Amazon VPC Lattice en la Guía para AWS Lambda desarrolladores.

Limitaciones
  • La función de Lambda y el grupo de destino deben estar en la misma cuenta y en la misma región.

  • El tamaño máximo del cuerpo de la solicitud que puede enviar a una función de Lambda es de 6 MB.

  • El tamaño máximo de la respuesta JSON que puede enviar la función Lambda es de 6 MB.

  • El protocolo debe ser HTTP o. HTTPS

Preparación de la función de Lambda

Las siguientes recomendaciones se aplican si utiliza la función Lambda con un servicio de VPC Lattice.

Permisos para invocar la función de Lambda

Al crear el grupo objetivo y registrar la función Lambda mediante la AWS Management Console o la AWS CLI, VPC Lattice añade los permisos necesarios a la política de funciones de Lambda en su nombre.

También puede añadir permisos por su cuenta mediante la siguiente llamada: API

aws lambda add-permission \ --function-name lambda-function-arn-with-alias-name \ --statement-id vpc-lattice \ --principal vpc-lattice.amazonaws.com \ --action lambda:InvokeFunction \ --source-arn target-group-arn
Control de versiones de función de Lambda

Puede registrar una sola función de Lambda por grupo de destino. Para asegurarse de que puede cambiar la función Lambda y de que el servicio VPC Lattice invoca siempre la versión actual de la función Lambda, cree un alias de función e inclúyalo en la función cuando ARN registre la función Lambda en el servicio Lattice. VPC Para obtener más información, consulte Versiones de funciones Lambda y Creación de un alias para una función Lambda en la Guía para desarrolladores.AWS Lambda

Creación de un grupo de destino para la función de Lambda

Cree el grupo de destino que se va a utilizar para el enrutamiento de solicitudes. Si el contenido de la solicitud coincide con una regla de escucha con una acción para reenviarla a este grupo objetivo, el servicio VPC Lattice invoca la función Lambda registrada.

Cómo crear un grupo de destino y registrar la función de Lambda mediante la consola
  1. Abre la VPC consola de Amazon en https://console.aws.amazon.com/vpc/.

  2. En el panel de navegación, en VPCLattice, selecciona Grupos objetivo.

  3. Elija Crear grupo de destino.

  4. En Elegir un tipo de destino, seleccione Función de Lambda.

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

  6. En Versión de estructura de eventos de Lambda, elija una versión. Para obtener más información, consulte Reciba eventos del servicio Lattice VPC.

  7. (Opcional) Para agregar etiquetas, expanda Etiquetas, elija Agregar nueva etiqueta e ingrese la clave y el valor de la etiqueta.

  8. Elija Next (Siguiente).

  9. En Función de Lambda, realice alguna de las siguientes acciones:

    • Seleccione una función de Lambda existente.

    • Cree una nueva función de Lambda y selecciónela.

    • Registre la función de Lambda más adelante.

  10. Elija Crear grupo de destino.

Cómo crear un grupo de destino y registrar la función de Lambda mediante la AWS CLI

Utilice los comandos create-target-groupy register-targets.

Reciba eventos del servicio Lattice VPC

El servicio VPC Lattice admite la invocación de Lambda para solicitudes a través de y. HTTP HTTPS El servicio envía un evento en JSON formato y agrega el X-Forwarded-For encabezado a cada solicitud.

Codificación en Base64

El servicio Base64 codifica el cuerpo si el encabezado content-encoding está presente y el tipo de contenido no es uno de los siguientes:

  • text/*

  • application/json

  • application/xml

  • application/javascript

Si el encabezado content-encoding no está presente, la codificación en Base64 depende del tipo de contenido. Para los tipos de contenido anteriores, el servicio envía el cuerpo tal cual, sin la codificación en Base64.

Formato de estructura de evento

Al crear o actualizar un tipo de grupo de destino LAMBDA, puede especificar la versión de la estructura de eventos que recibe la función de Lambda. Las versiones posibles son V1 y V2.

ejemplo Ejemplo de evento: V2
{ "version": "2.0", "path": "/", "method": "GET|POST|HEAD|...", "headers": { "header-key": ["header-value", ...], ... }, "queryStringParameters": { "key": ["value", ...] }, "body": "request-body", "isBase64Encoded": true|false, "requestContext": { "serviceNetworkArn": "arn:aws:vpc-lattice:region:123456789012:servicenetwork/sn-0bf3f2882e9cc805a", "serviceArn": "arn:aws:vpc-lattice:region:123456789012:service/svc-0a40eebed65f8d69c", "targetGroupArn": "arn:aws:vpc-lattice:region:123456789012:targetgroup/tg-6d0ecf831eec9f09", "identity": { "sourceVpcArn": "arn:aws:ec2:region:123456789012:vpc/vpc-0b8276c84697e7339", "type": "AWS_IAM", "principal": "arn:aws:iam::123456789012:assumed-role/my-role/my-session", "principalOrgID": "o-50dc6c495c0c9188", "sessionName": "i-0c7de02a688bde9f7", "x509IssuerOu": "string", "x509SanDns": "string", "x509SanNameCn": "string", "x509SanUri": "string", "x509SubjectCn": "string" }, "region": "region", "timeEpoch": "1690497599177430" } }
body

El cuerpo de la solicitud. Está presente solo si el protocolo es HTTPHTTPS, o gRPC.

headers

Los HTTP encabezados de la solicitud. Está presente solo si el protocolo es HTTPHTTPS, o g. RPC

identity

La información de identidad. A continuación se indican los posibles campos.

  • principal: la entidad principal autenticada. Está presente solo si AWS la autenticación se realiza correctamente.

  • principalOrgID: el ID de la organización para la entidad principal autenticada. Está presente solo si AWS la autenticación se realiza correctamente.

  • sessionName: el nombre de sesión autenticada. Está presente solo si AWS la autenticación se realiza correctamente.

  • sourceVpcArn— El ARN lugar VPC donde se originó la solicitud. Está presente solo si se VPC puede identificar la fuente.

  • type— El valor corresponde a AWS_IAM si se utiliza una política de AWS autenticación y la autenticación se realiza correctamente.

Si se utilizan las credenciales de Roles Anywhere y la autenticación se realiza con éxito, los siguientes campos son posibles.

  • x509IssuerOu: el emisor (OU).

  • x509SanDns— El nombre alternativo del sujeto (DNS).

  • x509SanNameCn: el nombre alternativo del emisor (nombre/CN).

  • x509SanUri— El nombre alternativo del sujeto (URI).

  • x509SubjectCn: el nombre del sujeto (CN).

isBase64Encoded

Indica si el cuerpo tenía codificación en Base64. Está presente solo si el protocolo es HTTPHTTPS, o g RPC y el cuerpo de la solicitud aún no es una cadena.

method

El HTTP método de la solicitud. Está presente solo si el protocolo es HTTPHTTPS, o gRPC.

path

La ruta de la solicitud. Está presente solo si el protocolo es HTTPHTTPS, o gRPC.

queryStringParameters

Los parámetros de la cadena de HTTP consulta. Está presente solo si el protocolo es HTTPHTTPS, o gRPC.

serviceArn

El ARN del servicio que recibe la solicitud.

serviceNetworkArn

El ARN de la red de servicios que entrega la solicitud.

targetGroupArn

El ARN del grupo objetivo que recibe la solicitud.

timeEpoch

El tiempo, en microsegundos.

ejemplo Ejemplo de evento: V1
{ "raw_path": "/path/to/resource", "method": "GET|POST|HEAD|...", "headers": {"header-key": "header-value", ... }, "query_string_parameters": {"key": "value", ...}, "body": "request-body", "is_base64_encoded": true|false }

Responda al servicio VPC Lattice

La respuesta de la función de Lambda debe incluir el estado de codificación en Base64, el código de estado y los encabezados. Puede omitir el cuerpo.

Para incluir contenido binario en el cuerpo de la respuesta, debe codificar en Base64 el contenido y establecer isBase64Encoded en true. El servicio decodifica el contenido para recuperar el contenido binario y lo envía al cliente en el cuerpo de la HTTP respuesta.

El servicio VPC Lattice no respeta hop-by-hop los encabezados, como o. Connection Transfer-Encoding Puede omitir el encabezado Content-Length porque el servicio lo procesa antes de enviar las respuestas a los clientes.

A continuación, se muestra un ejemplo de la respuesta de una función de Lambda:

{ "isBase64Encoded": false, "statusCode": 200, "statusDescription": "200 OK", "headers": { "Set-cookie": "cookies", "Content-Type": "application/json" }, "body": "Hello from Lambda (optional)" }

Encabezados de varios valores

VPCLattice admite las solicitudes de un cliente o las respuestas de una función de Lambda que contienen encabezados con varios valores o contienen el mismo encabezado varias veces. VPCLattice pasa todos los valores a los objetivos.

En el siguiente ejemplo, hay dos encabezados denominados header1 con valores diferentes.

header1 = value1 header1 = value2

Con una estructura de eventos V2, VPC Lattice envía los valores de una lista. Por ejemplo:

"header1": ["value1", "value2"]

Con una estructura de eventos V1, VPC Lattice combina los valores en una sola cadena. Por ejemplo:

"header1": "value1, value2"

Parámetros de cadena de consulta con varios valores

VPCLattice admite parámetros de consulta con varios valores para la misma clave.

En el siguiente ejemplo, hay dos parámetros denominados QS1 con valores diferentes.

http://www.example.com?&QS1=value1&QS1=value2

Con una estructura de eventos V2, VPC Lattice envía los valores de una lista. Por ejemplo:

"QS1": ["value1", "value2"]

Con una estructura de eventos V1, VPC Lattice usa el último valor pasado. Por ejemplo:

"QS1": "value2"

Anulación del registro de la función de Lambda

Si ya no necesita enviar tráfico a la función de Lambda, puede anular su registro. Tras anular el registro de una función Lambda, las solicitudes en curso fallan con errores de 5XX. HTTP

Para sustituir una función de Lambda, le recomendamos que cree un nuevo grupo de destino, registre la nueva función en el nuevo grupo de destino y actualice las reglas del oyente para que utilicen el nuevo grupo de destino en lugar del existente.

Cómo anular el registro de la función de Lambda mediante la consola
  1. Abre la VPC consola de Amazon en https://console.aws.amazon.com/vpc/.

  2. En el panel de navegación, en VPCLattice, selecciona Grupos objetivo.

  3. Elija el nombre del grupo de destino para mostrar sus detalles.

  4. En la pestaña Destinos, elija Anular registro.

  5. Cuando se le pida confirmación, ingrese confirm y luego elija Anular registro.

Para anular el registro de la función Lambda mediante el AWS CLI

Use el comando deregister-targets.