Al usar AWS re:Post, aceptas las AWS re:Post Términos de uso

¿Cómo configuro una función de Lambda para que se conecte a una instancia de RDS?

9 minutos de lectura
0

Quiero que mi función de AWS Lambda se conecte a una instancia de Amazon Relational Database Service (Amazon RDS).

Descripción breve

Nota: La información y los pasos siguientes se refieren a las instancias de Amazon RDS. Sin embargo, la resolución también se aplica a cualquier punto de enlace o base de datos que se encuentre en una nube virtual privada (VPC).

Para conectar una función de Lambda a una instancia de RDS, configura las configuraciones de red para permitir la conexión.

Hay diferentes opciones de configuración para cada uno de los siguientes tipos de conexión:

  • Una función de Lambda y una instancia de RDS en la misma VPC
  • Una función de Lambda y una instancia de RDS en diferentes VPC

Por motivos de seguridad, se recomienda mantener la instancia de RDS en una VPC. Para las bases de datos públicas, utiliza un servicio de bases de datos NoSQL como Amazon DynamoDB.

Una función de Lambda que esté fuera de una VPC no puede acceder a una instancia de RDS que esté dentro de una VPC.

Para obtener información sobre cómo configurar los ajustes de red de una función de Lambda, consulta Configuring a Lambda function to access resources in a VPC (Configuración de una función de Lambda para acceder a los recursos de una VPC). Si la configuración de red es incorrecta, se agota el tiempo de espera de la función de Lambda y esta muestra un mensaje de error Task timed out.

Para conectar una función de Lambda a un clúster de base de datos de Amazon Aurora, utiliza la API de datos para Aurora Serverless.

Resolución

**Importante:**Asegúrate de cambiar cada configuración de Rango de puertos, Origen y Destino que se proporciona en los siguientes ejemplos para que coincidan con tus propias configuraciones de red. El protocolo necesario para cada tipo de configuración de red es Protocolo de control de transmisión (TCP).

Una función de Lambda y una instancia de RDS en la misma VPC

Al conectar una función de Lambda a una instancia de RDS en la misma VPC, utiliza las siguientes configuraciones de red.

Nota: De forma predeterminada, todas las subredes de una VPC contienen una ruta local. El destino es el enrutamiento entre dominios sin clases (CIDR) de la VPC y el objetivo es local. Para obtener más información, consulta Route table concepts.

1.    En Grupos de seguridad, utiliza una de las siguientes configuraciones de red:

En el caso de las instancias que están asociadas al mismo grupo de seguridad, haz que el grupo de seguridad sea el origen de la regla de entrada. Haz que el grupo de seguridad sea el destino de la regla de salida.

Por ejemplo, si la función de Lambda y la instancia de RDS están en el grupo de seguridad sg-abcd1234, cada instancia tiene las siguientes reglas de entrada y salida.

Ejemplo de regla de entrada para instancias que estén asociadas al mismo grupo de seguridad

TipoProtocoloIntervalo de puertosOrigen
TCP personalizadoTCP3306sg-abcd1234

Ejemplo de regla de salida para instancias que estén asociadas al mismo grupo de seguridad

TipoProtocoloIntervalo de puertosDestino
TCP personalizadoTCP3306sg-abcd1234

Alternativa:

Para las instancias de diferentes grupos de seguridad, asegúrate de que ambos grupos de seguridad permitan el acceso entre sí.

Por ejemplo, si la función de Lambda está en el grupo de seguridad sg-1234 y la instancia de RDS está en sg-abcd, cada grupo tiene las siguientes reglas:

Ejemplo de regla de salida para una función de Lambda que esté en un grupo de seguridad diferente al de la instancia de RDS a la que quieres conectarla

TipoProtocoloIntervalo de puertosDestino
TCP personalizadoTCP3306sg-abcd

Ejemplo de regla de entrada para una instancia de RDS que esté en un grupo de seguridad diferente al de la función de Lambda a la que quieres conectarla

TipoProtocoloIntervalo de puertosOrigen
TCP personalizadoTCP3306sg-1234

Importante: Asegúrate de que las reglas permitan una conexión TCP a través del puerto de la base de datos.

2.    En las listas de control de acceso a la red (NACL), asegúrate de que las reglas de entrada y salida permitan la comunicación entre la función de Lambda y la instancia de RDS.

Nota: De forma predeterminada, las NACL permiten todo el tráfico entrante y saliente. Sin embargo, puedes cambiar esta configuración predeterminada.

Para cada subred asociada a la instancia de RDS y a la función de Lambda, configura las NACL para permitir la conexión TCP saliente a los CIDR de las subredes de la otra instancia.

Nota: En el siguiente ejemplo se utilizan cuatro subredes de ejemplo que han etiquetado sus CIDR:
Para las subredes de la función de Lambda, 172.31.1.0/24 y 172.31.0.0/28.
Para las subredes de la instancia de RDS, 172.31.10.0/24 y 172.31.64.0/20.

Ejemplo de reglas de salida para las NACL de las subredes de una función de Lambda

TipoProtocoloIntervalo de puertosDestinoPermitir/denegar
TCP personalizadoTCP3306172.31.10.0/24Permitir
TCP personalizadoTCP3306172.31.64.0/20Permitir

Importante: Aplica las mismas reglas de salida a las NACL de las subredes de la instancia de RDS, pero con el destino establecido como los CIDR de las subredes de Lambda.

Asegúrate de que las NACL de cada subred tengan una regla de entrada en los puertos efímeros del rango CIDR de las subredes de la otra instancia.

Ejemplo de reglas de entrada para las NACL de las subredes de una función de Lambda

TipoProtocoloIntervalo de puertosOrigenPermitir/denegar
TCP personalizadoTCP1024-65535172.31.10.0/24Permitir
TCP personalizadoTCP1024-65535172.31.64.0/20Permitir

Importante: Aplica las mismas reglas de entrada a las NACL de las subredes de la instancia de RDS, pero con el origen establecido como los CIDR de las subredes de Lambda.

Una función de Lambda y una instancia de RDS en diferentes VPC

En primer lugar, utiliza el emparejamiento de VPC para conectar las dos VPC. A continuación, utiliza las siguientes configuraciones de red para conectar la función de Lambda de una VPC a la instancia de RDS de la otra:

Importante: Asegúrate de activar el sistema de nombres de dominio (DNS) para la conexión de emparejamiento de VPC.

1.    En Tabla de enrutamiento, confirma que la conexión de emparejamiento de VPC se haya realizado correctamente:
En Destino, busca el CIDR de la VPC emparejada.
En Objetivo, busca la conexión de emparejamiento.

Nota: En el siguiente ejemplo se incluyen dos ejemplos de VPC:

CIDR de la VPC de origen (función de Lambda): 10.0.0.0/16

CIDR de una VPC emparejada (instancia de RDS): 172.31.0.0/16

Conexión de emparejamiento: pcx-01234abcd

Ejemplo de tabla de enrutamiento para una VPC de origen asociada a la función de Lambda

DestinoObjetivo
172.31.0.0/16pcx-01234abcd
10.0.0.0/16local

Ejemplo de tabla de enrutamiento para una VPC emparejada con una instancia de RDS

DestinoObjetivo
10.0.0.0/16pcx-01234abcd
172.31.0.0/16local

Para obtener más información, consulta Update your route tables for a VPC peering connection.

2.    En Grupos de seguridad, utiliza la siguiente configuración de red:

Para el grupo de seguridad de la función de Lambda, asegúrate de que el tráfico pueda entrar y salir del CIDR de la VPC de la instancia de RDS.

Nota: En el siguiente ejemplo se incluyen dos subredes de ejemplo etiquetadas por sus CIDR:
Para la instancia de RDS, 172.31.0.0/16
Para la función de Lambda, 10.0.0.0/16

Ejemplo de regla de salida para una función de Lambda en una VPC diferente a la instancia de RDS

TipoProtocoloIntervalo de puertosDestino
TCP personalizadoTCP3306172.31.0.0/16

Para el grupo de seguridad de la instancia de RDS, permite que el tráfico entre y salga del CIDR del grupo de seguridad de la función de Lambda.

Ejemplo de regla de entrada para una instancia de RDS en una VPC diferente a la función de Lambda

TipoProtocoloIntervalo de puertosOrigen
TCP personalizadoTCP330610.0.0.0/16

3.    Para las NACL, sigue los procedimientos anteriores del paso 3 de la sección Una función de Lambda y una instancia de RDS en la misma VPC. El origen del CIDR de subred de la función de Lambda está en una VPC diferente.

Nota: Como alternativa al emparejamiento de VPC, puedes utilizar AWS PrivateLink para acceder a Amazon RDS en todas las VPC. Esta solución funciona en todas las cuentas de AWS y VPC de la misma región de AWS.


OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años