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.
Funciones de Lambda como destinos en VPC Lattice
Puede registrar sus funciones de Lambda como destinos con un grupo de destino de VPC Lattice y configurar una regla del oyente para reenviar las solicitudes al grupo de destino de la función de Lambda. 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 AWS Lambda Guía para 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 del JSON de respuesta que la función de Lambda puede enviar es de 6 MB.
-
El protocolo debe ser HTTP o HTTPS.
Preparación de la función de Lambda
Se aplican las siguientes recomendaciones si está utilizando su función de 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 AWS Management Console o el AWS CLI VPC Lattice, agrega 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 a la API:
aws lambda add-permission \ --function-name
lambda-function-arn-with-alias-name
\ --statement-idvpc-lattice
\ --principal vpc-lattice.amazonaws.com \ --action lambda:InvokeFunction \ --source-arntarget-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 de Lambda y de que el servicio de VPC Lattice siempre invoque la versión actual de la función de Lambda, cree un alias de función e incluya el alias en el ARN de la función cuando registre la función de Lambda en el servicio de VPC Lattice. Para obtener más información, consulte Versiones de funciones de Lambda y Creación de un alias para una función de 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 del oyente con una acción para reenviarlo a este grupo de destino, el servicio de VPC Lattice invoca la función de Lambda registrada.
Cómo crear un grupo de destino y registrar la función de Lambda mediante la consola
Abra la consola de Amazon VPC en https://console.aws.amazon.com/vpc/
. -
En el panel de navegación, en VPC Lattice, elija Grupos de destino.
-
Elija Crear grupo de destino.
-
En Elegir un tipo de destino, seleccione Función de Lambda.
-
En Nombre del grupo de destino, escriba el nombre del grupo de destino.
-
En Versión de estructura de eventos de Lambda, elija una versión. Para obtener más información, consulte Recepción de eventos del servicio de VPC Lattice.
-
(Opcional) Para agregar etiquetas, expanda Etiquetas, elija Agregar nueva etiqueta e ingrese la clave y el valor de la etiqueta.
-
Elija Siguiente.
-
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.
-
-
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.
Recepción de eventos del servicio de VPC Lattice
El servicio de VPC Lattice admite la invocación de Lambda de solicitudes a través de HTTP y HTTPS. El servicio envía un evento en formato JSON y agrega el encabezado X-Forwarded-For
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 únicamente si el protocolo es HTTP, HTTPS o gRPC.
headers
El encabezado HTTP de la solicitud. Está presente únicamente si el protocolo es HTTP, HTTPS o gRPC.
identity
-
La información de identidad. A continuación se indican los posibles campos.
principal
: la entidad principal autenticada. Está presente solo si la AWS 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 de la VPC en donde se originó la solicitud. Está presente solo si se puede identificar la VPC de origen.type
— El valor corresponde aAWS_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 HTTP, HTTPS o gRPC y el cuerpo de la solicitud aún no es una cadena.
method
El método HTTP de la solicitud. Está presente únicamente si el protocolo es HTTP, HTTPS o gRPC.
path
La ruta de la solicitud. Está presente únicamente si el protocolo es HTTP, HTTPS o gRPC.
queryStringParameters
Los parámetros de cadenas de consulta HTTP. Está presente únicamente si el protocolo es HTTP, HTTPS 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 de destino 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
}
Respuesta al servicio de 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 descodifica el contenido para recuperar el contenido binario y lo envía al cliente en el cuerpo de la respuesta HTTP.
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
De forma predeterminada, VPC Lattice admite 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. VPC Lattice también admite parámetros de consulta con varios valores para la misma clave.
En el caso de los encabezados de las solicitudes, si varios parámetros comparten el mismo nombre, VPC Lattice pasará ambos valores a los destinos. A continuación se muestra un ejemplo en el que header
1
es el nombre de dos encabezados independientes:
header1 = foo header1 = bar
A continuación, VPC Lattice envía ambos valores a los destinos:
"header1": ["foo", "bar"]
En el caso de las cadenas de consulta, si varios parámetros comparten el mismo nombre, gana el último valor. Esto significa que los parámetros son _not_ coalesced
en un único valor si comparten el mismo nombre de clave.
A continuación se muestra un ejemplo en el que foo
y bar
son los valores de los parámetros con el mismo nombre, QS1
:
http://www.example.com?&QS1=foo&QS1=bar
A continuación, VPC Lattice envía el último valor a los destinos:
"QS1": "bar"
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. Después de anular el registro de una función de Lambda, las solicitudes en tránsito producirán errores HTTP 5XX.
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
Abra la consola de Amazon VPC en https://console.aws.amazon.com/vpc/
. -
En el panel de navegación, en VPC Lattice, elija Grupos de destino.
-
Elija el nombre del grupo de destino para mostrar sus detalles.
-
En la pestaña Destinos, elija Anular registro.
-
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.