Redes privadas con VPC - AWS Lambda

Redes privadas con VPC

Amazon Virtual Private Cloud (Amazon VPC) es una red virtual en la nube de AWS, dedicada a su cuenta de AWS. Puede utilizar Amazon VPC para crear una red privada de recursos como bases de datos, instancias de caché o servicios internos. Para obtener más información sobre Amazon VPC, consulte ¿Qué es Amazon VPC?

Las funciones de Lambda siempre se ejecutan dentro de una VPC propiedad del servicio de Lambda. Lambda aplica reglas de acceso a la red y de seguridad a esta VPC y Lambda mantiene y monitoriza la VPC de forma automática. Si la función de Lambda necesita obtener acceso a los recursos de la VPC de su cuenta, configure la función para acceder a la VPC. Lambda proporciona recursos administrados denominados ENI de hiperplano, que la función de Lambda utiliza para conectarse desde la VPC de Lambda a una ENI (interfaz de red elástica) en la VPC de la cuenta.

No hay cargo adicional por usar la VPC o una ENI de hiperplano. Se aplican cargos por algunos componentes de VPC, como las puertas de enlace NAT. Para obtener más información, consulte Precios de Amazon VPC.

Elementos de red de VPC

Las redes de Amazon VPC incluyen los siguientes elementos de red:

  • Interfaz de red elástica: una interfaz de red elástica es un componente de red lógico en una VPC que representa una tarjeta de red virtual.

  • Subred: un intervalo de direcciones IP en la VPC. Puede agregar recursos de AWS en una subred especificada. Utilice una subred pública para los recursos que deben conectarse a Internet y una subred privada para los recursos que no dispondrán de conexión a Internet.

  • Grupo de seguridad: utilice grupos de seguridad para controlar el acceso a recursos de AWS en cada subred.

  • Lista de control de acceso (ACL): utilice una ACL de red para proporcionar seguridad adicional en una subred. La ACL de subred predeterminada permite todo el tráfico de entrada y de salida.

  • Tabla de enrutamiento: contiene un conjunto de rutas que AWS utiliza para dirigir el tráfico de red para la VPC. Puede asociar de forma explícita una subred con una tabla de enrutamiento particular. De forma predeterminada, la subred está asociada a la tabla de enrutamiento principal.

  • Ruta: cada ruta de una tabla de enrutamiento especifica un rango de direcciones IP y el destino al que Lambda envía el tráfico para ese rango. La ruta también especifica un destino, que es la puerta de enlace, interfaz de red o conexión a través de la cual enviar el tráfico.

  • Puerta de enlace NAT: un servicio de traducción de direcciones de red (NAT) de AWS que controla el acceso desde una subred privada de VPC privada a Internet.

  • Puntos de conexión de VPC: puede utilizar un punto de conexión de VPC de Amazon para crear conectividad privada a servicios alojados en AWS, sin necesidad de obtener acceso a través de Internet, un dispositivo NAT, una conexión de VPN o una conexión de AWS Direct Connect. Para obtener más información, consulte Puntos de conexión de VPC y PrivateLink de AWS.

sugerencia

Para configurar la función de Lambda para acceder a una VPC y a una subred, puede utilizar la consola o la API de Lambda.

Consulte la sección VpcConfig de CreateFunction para configurar la función. Para conocer los pasos en detalle, consulte Conexión de las funciones de Lambda a una Amazon VPC en su Cuenta de AWS.

Para obtener más información acerca de las definiciones de redes de Amazon VPC, consulte Cómo funciona Amazon VPC en la Guía para desarrolladores de Amazon VPC y en las Preguntas frecuentes sobre Amazon VPC.

Conexión de las funciones de Lambda a la VPC

Las funciones de Lambda siempre se ejecutan dentro de una VPC propiedad del servicio de Lambda. De forma predeterminada, una función de Lambda no está conectada a las VPC de la cuenta. Al conectar una función a una VPC de su cuenta, la función no puede acceder a Internet a no ser que su VPC proporcione acceso.

Lambda accede a los recursos de la VPC mediante una ENI de hiperplano. Las ENI de hiperplano proporcionan capacidades de NAT desde la VPC de Lambda a la VPC de su cuenta mediante NAT de VPC a VPC (V2N). V2N proporciona conectividad desde la VPC de Lambda a la VPC de su cuenta, pero no en la otra dirección.

Cuando crea una función Lambda (o actualiza su configuración de VPC), Lambda asigna una ENI de hiperplano para cada subred en la configuración de VPC de la función. Varias funciones de Lambda pueden compartir una interfaz de red, si dichas funciones comparten la misma subred y grupo de seguridad.

Para conectarse a otro servicio de AWS, puede utilizar Puntos de conexión de VPC para comunicaciones privadas entre la VPC y los servicios de AWS admitidas. Un enfoque alternativo es utilizar una puerta de enlace NAT para enrutar el tráfico saliente a otro service de AWS.

Para conceder a la función acceso a Internet, enrute el tráfico saliente a una gateway NAT en una subred pública. La gateway NAT tiene una dirección IP pública y puede conectarse a Internet a través de la gateway de Internet de la VPC. Para obtener más información, consulte Habilitar el acceso a Internet para funciones de Lambda conectadas a VPC.

Subredes compartidas

El uso compartido de VPC permite que varias cuentas de AWS creen sus recursos de aplicación, como instancias de Amazon EC2 y funciones de Lambda, en nubes privadas virtuales (VPC) compartidas y administradas de forma centralizada. En este modelo, la cuenta propietaria de la VPC (propietario) comparte una o más subredes con otras cuentas (participantes) que pertenecen a la misma Organización de AWS.

Para acceder a recursos privados, conecte su función a una subred privada compartida en su VPC. El propietario de la subred debe compartir una subred con usted antes de que pueda conectarle una función. El propietario de la subred también puede dejar de compartir la subred en otro momento y eliminar así la conectividad. Para obtener detalles sobre cómo compartir, dejar de compartir y administrar recursos de VPC en subredes compartidas, consulte Cómo compartir su VPC con otras cuentas en la guía de Amazon VPC.

ENI de hiperplano de Lambda

La ENI de hiperplano es un recurso de red administrado que el servicio de Lambda crea y administra. Varios entornos de ejecución en la VPC de Lambda pueden usar una ENI de hiperplano para acceder de forma segura a los recursos dentro de las VPC de su cuenta. Las ENI de hiperplano proporcionan capacidades de NAT desde la VPC de Lambda a la VPC de su cuenta.

Para cada subred, Lambda crea una interfaz de red para cada conjunto único de grupos de seguridad. Las funciones en la cuenta que comparten la misma combinación de grupo de seguridad y subred utilizan las mismas interfaces de red. Se hace un seguimiento automático de las conexiones hechas a través de la capa del hiperplano, incluso si la configuración del grupo de seguridad no requiere otro tipo de seguimiento. Los paquetes entrantes de la VPC que no corresponden a las conexiones establecidas se descartan en la capa del hiperplano. Para obtener más información, consulte Seguimiento de conexiones de grupos de seguridad en la Guía del usuario de Amazon EC2.

Dado que las funciones de la cuenta comparten los recursos de la ENI, el ciclo de vida de esta es más complejo que otros recursos de Lambda. Las secciones siguientes describen el ciclo de vida de la ENI.

Creación de las ENI

Lambda puede crear recursos de la ENI de hiperplano para una función habilitada de VPC recién creada o para un cambio de configuración de VPC en una función existente. La función permanece en estado pendiente mientras Lambda crea los recursos necesarios. Cuando la ENI de hiperplano está lista, la función pasa al estado activo y la ENI está disponible para su uso. Lambda puede tardar varios minutos en crear una ENI de hiperplano.

Para una función habilitada para VPC recién creada, las invocaciones u otras acciones de la API que operan en la función fallan hasta que el estado de la función pasa a activo.

Para un cambio de configuración de VPC a una función existente, cualquier invocación de función seguirá utilizando la ENI de hiperplano asociada a la antigua configuración de subred y grupo de seguridad hasta que el estado de la función pase a activo.

Si una función de Lambda permanece inactiva durante 30 días, Lambda recupera las ENI de hiperplano no utilizadas y establece el estado de la función en inactivo. La siguiente invocación hace que Lambda vuelva a activar la función inactiva. La invocación falla y la función pasa al estado pendiente hasta que Lambda completa la creación o asignación de una ENI de hiperplano.

Para obtener más información acerca de los estados de función, consulte Estados de función de Lambda.

Administración de las ENI

Lambda utiliza los permisos del rol de ejecución de su función para crear y administrar las interfaces de red. Lambda crea una ENI de hiperplano cuando define una combinación única de subred y grupo de seguridad para una función habilitada de VPC en una cuenta. Lambda reutiliza la ENI de hiperplano para otras funciones habilitadas de VPC en su cuenta que utilizan la misma combinación de subred y grupo de seguridad.

No hay cuota en el número de funciones de Lambda que puedan usar la misma ENI de hiperplano. Sin embargo, cada ENI de hiperplano admite hasta 65 000 conexiones o puertos. Si el número de conexiones supera las 65 000, Lambda crea una nueva ENI de hiperplano para proporcionar conexiones adicionales.

Cuando se actualiza la configuración de la función para acceder a una VPC diferente, Lambda termina la conectividad con la ENI de hiperplano en la VPC anterior. El proceso de actualización de la conectividad a una nueva VPC puede demorar varios minutos. Durante este tiempo, las invocaciones a la función siguen utilizando la VPC anterior. Una vez finalizada la actualización, las nuevas invocaciones comienzan a utilizar la ENI de hiperplano en la nueva VPC. En este punto, la función de Lambda ya no está conectada a la VPC anterior.

Eliminar las ENI

Cuando se actualiza una función para eliminar la configuración de VPC, Lambda necesita hasta 20 minutos para eliminar la ENI de hiperplano adjunta. Lambda solo elimina la ENI si ninguna otra función (o versión de función publicada) utiliza esa ENI de hiperplano.

Lambda depende de los permisos de la función rol de ejecución para eliminar la ENI de hiperplano. Si elimina la función de ejecución antes de que Lambda elimine la ENI de hiperplano, Lambda no podrá eliminar la ENI de hiperplano. Puede realizar la eliminación de forma manual.

Lambda no elimina las interfaces de red que utilizan las funciones o las versiones de funciones de la cuenta. Puede utilizar el Buscador de la ENI de Lambda para identificar las funciones o versiones de funciones que utilizan una ENI de hiperplano. Para cualquier función o versión de función que ya no necesite, puede eliminar la configuración de VPC para que Lambda elimine la ENI de hiperplano.

Conexiones

Lambda admite dos tipos de conexiones: TCP (Protocolo de control de transmisión) y UDP (Protocolo de datagramas de usuario).

Al crear una VPC, Lambda crea de forma automática un conjunto de opciones de DHCP y las asocia a la VPC. Puede configurar sus propias opciones DHCP establecidas para su VPC. Para obtener más información, consulte Opciones DHCP de Amazon VPC.

Amazon proporciona un servidor DNS (el Amazon Route 53 Resolver) para la VPC. Para obtener más información, consulte la sección sobre Compatibilidad de DNS en la VPC.

Compatibilidad con IPv6

Lambda admite conexiones entrantes a los puntos de conexión públicos de doble pila de Lambda y a las conexiones salientes a subredes de VPC de doble pila a través de IPv6.

Entrada

Para invocar su función a través de IPv6, utilice los puntos finales públicos de doble pila de Lambda. Puntos de conexión de doble pila compatibles con IPv4 e IPv6 Los puntos de conexión de doble pila de Lambda utilizan la siguiente sintaxis:

protocol://lambda.us-east-1.api.aws

También puede usar URL de funciones de Lambda para invocar funciones en IPv6. Los puntos de conexión de la URL de función tienen el siguiente formato:

https://url-id.lambda-url.us-east-1.on.aws
Salida

Su función puede conectarse a recursos en subredes de VPC de doble pila a través de IPv6. Esta opción está desactivada de forma predeterminada. Para permitir el tráfico IPv6 saliente, use la consola o la opción --vpc-config Ipv6AllowedForDualStack=true con el comando create-function o update-function-configuration.

nota

Para permitir el tráfico IPv6 saliente en una VPC, todas las subredes que estén conectadas a la función deben ser subredes de doble pila. Lambda no admite conexiones IPv6 salientes para subredes exclusivas de IPv6 en una VPC, conexiones IPv6 salientes para funciones que no están conectadas a una VPC ni conexiones IPv6 entrantes mediante puntos de enlace de VPC (AWS PrivateLink).

Puede actualizar el código de función para conectarse explícitamente a los recursos de subred a través de IPv6. El siguiente ejemplo de Python abre un socket y se conecta a un servidor IPv6.

ejemplo — Conectarse al servidor IPv6
def connect_to_server(event, context): server_address = event['host'] server_port = event['port'] message = event['message'] run_connect_to_server(server_address, server_port, message) def run_connect_to_server(server_address, server_port, message): sock = socket.socket(socket.AF_INET6, socket.SOCK_STREAM, 0) try: # Send data sock.connect((server_address, int(server_port), 0, 0)) sock.sendall(message.encode()) BUFF_SIZE = 4096 data = b'' while True: segment = sock.recv(BUFF_SIZE) data += segment # Either 0 or end of data if len(segment) < BUFF_SIZE: break return data finally: sock.close()

Seguridad

AWS proporciona grupos de seguridad y las ACL de red para aumentar la seguridad en la VPC. Los grupos de seguridad controlan el tráfico de entrada y salida de los recursos, mientras que las ACL de red controlan el tráfico de entrada y salida de las subredes. Los grupos de seguridad proporcionan suficiente control de acceso para la mayoría de las subredes. Puede utilizar las ACL de red si desea agregar un nivel de seguridad adicional en la VPC. Para obtener más información, consulte Privacidad del tráfico entre redes en Amazon VPC. Cada subred que se crea se asocia automáticamente a la ACL de red predeterminada de la VPC. Es posible cambiar la asociación y el contenido de la ACL de red predeterminada.

Para conocer las prácticas recomendadas generales de seguridad, consulte Prácticas recomendadas de seguridad de la VPC. Para obtener más información sobre cómo utilizar la IAM a fin de administrar el acceso a la API de Lambda y a recursos, consulte Permisos de AWS Lambda.

Puede utilizar claves de condición específicas de Lambda para la configuración de la VPC para proporcionar controles de permisos adicionales para sus funciones de Lambda. Para obtener más información sobre las claves de condición de la VPC, consulte Uso de claves de condición de IAM para la configuración de la VPC.

nota

Las funciones de Lambda se pueden invocar desde la Internet pública o desde puntos de conexión de AWS PrivateLink. Puede acceder a las URL de la función solo a través de la Internet pública. Si bien las funciones de Lambda son compatibles con AWS PrivateLink, las URL de las funciones no lo son.

Observabilidad

Puede utilizar los registros de flujo de la VPC para capturar información sobre el tráfico IP entrante y saliente de las interfaces de red de su VPC. Los datos del registro de flujo se pueden publicar en Registros de Amazon CloudWatch o Amazon S3. Una vez creado un log de flujo, puede recuperarlo y ver sus datos en el destino elegido.

Nota: Cuando se asocia una función a una VPC, los mensajes de registro de CloudWatch no utilizan las rutas de la VPC. Lambda los envía mediante el enrutamiento normal para los registros.