Configuración del clúster de Amazon MSK y la red de Amazon VPC para Lambda
Para conectar la función de AWS Lambda al clúster de Amazon MSK, debe configurar correctamente tanto el clúster como la Amazon Virtual Private Cloud (VPC) en la que se encuentra. En esta página se describe cómo configurar el clúster y la VPC. Si el clúster y la VPC ya están configurados correctamente, consulte Configuración de orígenes de eventos de Amazon MSK para Lambda para configurar la asignación de orígenes de eventos.
Temas
Descripción general de los requisitos de configuración de red para las integraciones de Lambda y MSK
La configuración de red necesaria para la integración de Lambda y MSK depende de la arquitectura de red de su aplicación. Esta integración implica tres recursos principales: el clúster de Amazon MSK, la función de Lambda y la asignación de orígenes de eventos de Lambda. Cada uno de estos recursos se encuentra en una VPC diferente:
-
Su clúster de Amazon MSK suele residir en una subred privada de una VPC que administra.
-
Su función de Lambda reside en una VPC administrada por AWS propiedad de Lambda.
-
La asignación de orígenes de eventos de Lambda reside en otra VPC administrada por AWS que es propiedad de Lambda, independiente de la VPC que contiene su función.
La asignación de orígenes de eventos es el recurso intermediario entre el clúster de MSK y la función de Lambda. La asignación de orígenes de eventos tiene dos funciones principales. En primer lugar, sondea su clúster de MSK en busca de mensajes nuevos. A continuación, invoca su función de Lambda con esos mensajes. Dado que estos tres recursos se encuentran en VPC diferentes, tanto las operaciones de sondeo como las de invocación requieren llamadas de red entre VPC.
Los requisitos de configuración de red para su asignación de orígenes de eventos dependen de si utiliza el modo aprovisionado o el modo bajo demanda, como se muestra en el siguiente diagrama:

La forma en que la asignación de orígenes de eventos de Lambda sondea el clúster de MSK en busca de nuevos mensajes es la misma en ambos modos. Para establecer una conexión entre la asignación de orígenes de eventos y el clúster de MSK, Lambda crea una ENI de hiperplano (o reutiliza una existente, si está disponible) en su subred privada para establecer una conexión segura. Como se muestra en el diagrama, esta ENI de hiperplano utiliza la configuración de subredes y grupos de seguridad del clúster de MSK, no la de su función de Lambda.
Tras sondear el mensaje del clúster, la forma en que Lambda invoca su función es diferente en cada modo:
-
En el modo aprovisionado, Lambda gestiona automáticamente la conexión entre la VPC de la asignación de orígenes de eventos y la VPC de la función. Por lo tanto, no necesita ningún componente de red adicional para invocar correctamente su función.
-
En el modo bajo demanda, su asignación de orígenes de eventos de Lambda invoca su función a través de una ruta en su VPC administrada por el cliente. Por ello, debe configurar una puerta de enlace de NAT en la subred pública de su VPC o puntos de conexión de AWS PrivateLink en la subred privada de la VPC que proporcionen acceso a Lambda, AWS Security Token Service (STS) y, opcionalmente, AWS Secrets Manager. La configuración correcta de cualquiera de estas opciones permite establecer una conexión entre su VPC y la VPC de tiempo de ejecución administrada por Lambda, que es necesaria para invocar su función.
Una puerta de enlace de NAT permite a los recursos de su subred privada acceder a la Internet pública. El uso de esta configuración significa que el tráfico atraviesa Internet antes de invocar la función de Lambda. Los puntos de conexión de AWS PrivateLink permiten que las subredes privadas se conecten de forma segura a servicios de AWS u otros recursos de VPC privados sin atravesar la Internet pública. Consulte Configuración de una puerta de enlace de NAT para un origen de eventos de MSK o Configuración de puntos de conexión de AWS PrivateLink para un origen de eventos de MSK para obtener detalles sobre cómo configurar estos recursos.
Hasta ahora, asumimos que el clúster de MSK reside en una subred privada dentro de la VPC, que es el caso más común. Sin embargo, incluso si el clúster de MSK se encuentra en una subred pública dentro de la VPC, debe configurar los puntos de conexión de AWS PrivateLink para permitir una conexión segura. En la siguiente tabla se resumen los requisitos de configuración de red en función de cómo configure el clúster de MSK y la asignación de orígenes de eventos de Lambda:
Ubicación del clúster de MSK (en una VPC administrada por el cliente) | Modo de escalado de la asignación de orígenes de eventos de Lambda | Configuración de red obligatoria |
---|---|---|
Subred privada |
Modo bajo demanda |
Puerta de enlace de NAT (en la subred pública de su VPC) o puntos de conexión de AWS PrivateLink (en la subred privada de su VPC) para permitir el acceso a Lambda, AWS STS y, opcionalmente, Secrets Manager. |
Public subnet |
Modo bajo demanda |
Puntos de conexión de AWS PrivateLink (en la subred pública de su VPC) para permitir el acceso a Lambda, AWS STS y, opcionalmente, Secrets Manager. |
Subred privada |
Modo aprovisionado |
Ninguno |
Public subnet |
Modo aprovisionado |
Ninguno |
Además, los grupos de seguridad asociados a su clúster de MSK deben permitir el tráfico a través de los puertos correctos. Asegúrese de tener configuradas las siguientes reglas de grupos de seguridad:
-
Reglas de entrada: permiten todo el tráfico en el puerto del agente predeterminado. El puerto que usa MSK depende del tipo de autenticación del clúster:
9098
para la autenticación de IAM,9096
para SASL/SCRAM y9094
para TLS. Como alternativa, puede usar una regla de grupo de seguridad con autorreferencia para permitir el acceso desde instancias que pertenecen al mismo grupo de seguridad. -
Reglas de salida: permiten que todo el tráfico del puerto
443
vaya a destinos externos en caso de que su función necesite comunicarse con otros servicios de AWS. Como alternativa, puede usar una regla de grupo de seguridad con autorreferencia para limitar el acceso al agente en caso de que no necesite comunicarse con otros servicios de AWS. -
Reglas de entrada del punto de conexión de Amazon VPC: si usa un punto de conexión de Amazon VPC, el grupo de seguridad asociado al punto de conexión debe permitir el tráfico entrante en el puerto
443
desde el grupo de seguridad del clúster.
Configuración de una puerta de enlace de NAT para un origen de eventos de MSK
Puede configurar una puerta de enlace de NAT para permitir que la asignación de orígenes de eventos sondee los mensajes de su clúster e invoque la función a través de una ruta por su VPC. Esto solo es necesario si la asignación de orígenes de eventos utiliza el modo bajo demanda y el clúster reside en una subred privada de su VPC. Si el clúster reside en una subred pública de su VPC o si la asignación de orígenes de eventos utiliza el modo aprovisionado, no es necesario configurar una puerta de enlace de NAT.
Una puerta de enlace de NAT permite a los recursos de una subred privada acceder a la Internet pública. Si necesita conectividad privada con Lambda, consulte Configuración de puntos de conexión de AWS PrivateLink para un origen de eventos de MSK como alternativa.
Después de configurar la puerta de enlace de NAT, debe configurar las tablas de enrutamiento adecuadas. Esto permite que el tráfico desde su subred privada se dirija a la Internet pública a través de la puerta de enlace de NAT.

Los pasos siguientes le guiarán a través de la configuración de una puerta de enlace de NAT con la consola. Repita estos pasos según sea necesario para cada zona de disponibilidad (AZ).
Para configurar una puerta de enlace de NAT y un enrutamiento adecuado (consola)
-
Siga los pasos que se indican en Creación de una puerta de enlace de NAT y tenga en cuenta lo siguiente:
-
Las puertas de enlace de NAT siempre deben residir en una subred pública. Cree puertas de enlace de NAT con conectividad pública.
-
Si su clúster de MSK está replicado en varias zonas de disponibilidad, cree una puerta de enlace de NAT por AZ. Por ejemplo, en cada AZ, su VPC debe tener una subred privada que contenga su clúster y una subred pública que contenga su puerta de enlace de NAT. Para una configuración con tres AZ, tendrá tres subredes privadas, tres subredes públicas y tres puertas de enlace de NAT.
-
-
Tras crear la puerta de enlace de NAT, abra la consola de Amazon VPC
y elija Tablas de enrutamiento en el menú de la izquierda. -
Elija Create Route Table (Crear tabla de enrutamiento).
-
Asocie esta tabla de enrutamiento con la VPC que contiene su clúster de MSK. Opcionalmente, ingrese un nombre para su tabla de enrutamiento.
-
Elija Create Route Table (Crear tabla de enrutamiento).
-
Elija la tabla de enrutamiento que acaba de crear.
-
En la pestaña Asociaciones de subredes, elija Editar asociaciones de subredes.
-
Asocie esta tabla de enrutamiento con la subred privada que contiene su clúster de MSK.
-
-
Elija Edit routes (Editar rutas).
-
Elija Agregar ruta.
-
Para Destino: elija
0.0.0.0/0
. -
En Destino, elija Puerta de enlace de NAT.
-
En el cuadro de búsqueda, elija la puerta de enlace de NAT que ha creado en el paso 1. Esta debe ser la puerta de enlace de NAT en la misma AZ que la subred privada que contiene su clúster de MSK (la subred privada que asoció a esta tabla de enrutamiento en el paso 6).
-
-
Seleccione Save changes (Guardar cambios).
Configuración de puntos de conexión de AWS PrivateLink para un origen de eventos de MSK
Puede configurar los puntos de conexión de AWS PrivateLink para sondear los mensajes de su clúster e invocar la función a través de una ruta en su VPC. Estos puntos de conexión deberían permitir que su clúster de MSK acceda a lo siguiente:
-
El servicio de Lambda
-
Opcionalmente, el servicio de AWS Secrets Manager. Esto es obligatorio si el secreto obligatorio para la autenticación del clúster se almacena en Secrets Manager.
La configuración de los puntos de conexión de PrivateLink solo es obligatoria si la asignación de orígenes de eventos utiliza el modo bajo demanda. Si la asignación de orígenes de eventos utiliza el modo aprovisionado, Lambda establece las conexiones que necesita.
Los puntos de conexión de PrivateLink permiten un acceso seguro y privado a los servicios de AWS a través de AWS PrivateLink. Como alternativa, para configurar una puerta de enlace de NAT que dé acceso a su clúster de MSK a la Internet pública, consulte Configuración de una puerta de enlace de NAT para un origen de eventos de MSK.
Tras configurar los puntos de conexión de VPC, el clúster de MSK debe tener acceso directo y privado a Lambda, STS y, opcionalmente, Secrets Manager.

Los pasos siguientes le guiarán a través de la configuración de un punto de conexión de PrivateLink con la consola. Repita estos pasos según sea necesario para cada punto de conexión (Lambda, STS, Secrets Manager).
Configuración de un punto de conexión de VPC (consola)
-
Abra la consola de Amazon VPC
y elija Puntos de conexión en el menú de la izquierda. -
Elija Crear punto de conexión.
-
Opcionalmente, ingrese un nombre para su punto de conexión.
-
En Tipo, elija Servicios de AWS.
-
En Servicios, comience a escribir el nombre del servicio. Por ejemplo, para crear un punto de conexión para conectarse a Lambda, escriba
lambda
en el cuadro de búsqueda. -
En los resultados, debería ver el punto de conexión del servicio en la región actual. Por ejemplo, en la región Este de EE. UU. (Norte de Virginia), debería ver
com.amazonaws.us-east-2.lambda
. Seleccione este servicio. -
En Configuración de red, seleccione la VPC que contiene su clúster de MSK.
-
En Subredes, seleccione las AZ en las que se encuentra su clúster de MSK.
-
Para cada AZ, en ID de subred, elija la subred privada que contiene su clúster de MSK.
-
-
En Grupos de seguridad, elija los grupos de seguridad asociados al clúster de base de datos de MSK.
-
Elija Crear punto de conexión.
De forma predeterminada, los puntos de conexión de VPC de Amazon tienen políticas de IAM abiertas que permiten un amplio acceso a los recursos. La práctica recomendada es restringir estas políticas para realizar las acciones necesarias mediante ese punto de conexión. Por ejemplo, para su punto de conexión de Secrets Manager, puede modificar su política de manera que solo permita que el rol de ejecución de su función acceda al secreto.
ejemplo Política de punto de conexión de VPC: punto de conexión de Secrets Manager
{ "Statement": [ { "Action": "secretsmanager:GetSecretValue", "Effect": "Allow", "Principal": { "AWS": [
"arn:aws::iam::123456789012:role/my-role"
] }, "Resource":"arn:aws::secretsmanager:us-west-2:123456789012:secret:my-secret"
} ] }
Para los puntos de conexión de AWS STS y Lambda, puede restringir la entidad principal de llamada a la entidad principal del servicio de Lambda. Sin embargo, asegúrese de utilizar "Resource": "*"
en estas políticas.
ejemplo Política de punto de conexión de VPC: punto de conexión de AWS STS
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "lambda.amazonaws.com" ] }, "Resource": "*" } ] }
ejemplo Política de punto de conexión de VPC: punto de conexión de Lambda
{ "Statement": [ { "Action": "lambda:InvokeFunction", "Effect": "Allow", "Principal": { "Service": [ "lambda.amazonaws.com" ] }, "Resource": "*" } ] }