Saltar al contenido

¿Cómo doy acceso a Internet a una función de Lambda que está conectada a Amazon VPC?

6 minutos de lectura
0

Quiero otorgar acceso a Internet a la función de AWS Lambda que tiene una conexión de Amazon Virtual Private Cloud (Amazon VPC).

Descripción breve

De forma predeterminada, las funciones de Lambda se ejecutan en una VPC administrada por Lambda que tiene acceso a Internet. Incluso cuando asocias una función de Lambda a una subred pública, no se puede conectar a Internet porque la función tiene una dirección IP privada.

Para que la función de Lambda acceda por Internet a los recursos de una VPC de tu cuenta de AWS, añade una puerta de enlace de NAT o una instancia de NAT. La configuración restringe la función a los recursos de la VPC, a menos que la VPC tenga acceso a Internet.

Nota: También puedes utilizar los puntos de enlace de VPC de la interfaz para conectarte a los servicios de AWS compatibles desde una conexión de Amazon VPC sin acceso a Internet.

Resolución

Comprueba que los siguientes recursos permitan el acceso de salida de Internet a la función de Lambda:

Si alguno de los recursos anteriores no permite que la función de Lambda acceda a Internet, vuelve a configurar el recurso para conceder dicho acceso. Puedes ejecutar AWSSupport-TroubleshootLambdaInternetAccess o puedes conceder acceso a Internet manualmente.

Uso del runbook AWSSupport-TroubleshootLambdaInternetAccess

Requisito previo

Antes de iniciar el runbook, asegúrate de que el usuario o rol de AWS Identity and Access Management (IAM) tenga los permisos necesarios. Para obtener más información, consulta la sección Required IAM permissions (Permisos de IAM necesarios) de AWSSupport-TroubleshootLambdaInternetAccess.

Sigue estos pasos:

  1. Abre la consola de Systems Manager.
  2. En el panel de navegación, expande Change Management Tools (Herramientas de administración de cambios) y, a continuación, elige Automation (Automatización).
  3. Selecciona Execute runbook (Ejecutar runbook).
  4. Selecciona la pestaña Propiedad de Amazon y, a continuación, busca TroubleshootLambdaInternetAccess.
  5. Selecciona la tarjeta AWSSupport-TroubleshootLambdaInternetAccess.
    Nota: No seleccione el nombre de la automatización.
  6. Selecciona Siguiente.
  7. Selecciona Ejecutar.

Revisa el resultado del runbook para determinar qué ha provocado que la función de Lambda perdiera el acceso a Internet y cómo resolver el problema.

Concesión manual del acceso a Internet

Creación de una subred pública y una subred privada en Amazon VPC

Crea una subred privada para la función de Lambda y una subred pública para la puerta de enlace de NAT. En el campo Etiqueta de nombre, introduce un nombre para cada subred que la identifique como pública o privada. Por ejemplo, utiliza Subred pública, Lambda privada 1 y Lambda privada 2.

Nota: Se recomienda crear más de una subred privada en diferentes zonas de disponibilidad. Esta acción crea redundancia y permite a Lambda mantener una alta disponibilidad para tu función.

Uso de una puerta de enlace de Internet para añadir acceso a Internet a la subred

Crea una puerta de enlace de Internet. A continuación, adjúntala a la VPC.

Creación de una puerta de enlace de NAT

Crea una puerta de enlace de NAT. En Subred, selecciona la subred que quieres hacer pública. Por ejemplo, elige Subred pública.

(Opcional) Prueba la configuración de la puerta de enlace de NAT.

Creación de dos tablas de enrutamiento personalizadas

Nota: Cuando una función de Lambda de una VPC realiza solicitudes, la función selecciona de forma aleatoria una subred asociada. Si la función usa una subred configurada incorrectamente, recibirás un error. Para evitar este problema, asegúrate de utilizar la misma configuración para todas las subredes que la función utiliza.

Para configurar las tablas de enrutamiento personalizadas, sigue estos pasos:

  1. Crea una tabla de enrutamiento para la subred pública y otra para la subred privada.
    En el campo Etiqueta de nombre, introduce un nombre para cada tabla de enrutamiento que te ayude a identificar la subred a la que está asociada. Por ejemplo, utiliza Subred pública y Lambda privada.
  2. Asocia las subredes públicas y privadas a las tablas de enrutamiento.
  3. Añade una nueva ruta a las tablas de enrutamiento e incluye las siguientes configuraciones:
    En Destino, escribe 0.0.0.0/0.
    En Destino, elige la puerta de enlace de Internet para la subred pública e introduce el ID de la puerta de enlace de Internet. Elige Puerta de enlace de NAT para la subred privada e introduce el ID de la puerta de enlace de NAT.
    Importante: Si usas una instancia de NAT en lugar de una puerta de enlace de NAT, elige Interfaz de red en lugar de Puerta de enlace de NAT.
  4. Selecciona Guardar rutas.

Nota: Asegúrate de que las rutas a la puerta de enlace de NAT estén en estado Activo. Si eliminas la puerta de enlace de NAT y no has actualizado las rutas, las rutas tienen el estado Blackhole (Agujero negro).

Revisión de la configuración de la ACL de la red

La ACL de la red predeterminada de la VPC permite todo el tráfico entrante y saliente. Si cambias las reglas de la ACL de la red, asegúrate de que permitas las solicitudes salientes de la función de Lambda. Además, asegúrate de que la ACL de la red permita el siguiente tráfico entrante:

  • Para una subred privada que utiliza una puerta de enlace de NAT, permite el tráfico entrante en los puertos efímeros 1024-65535.
  • Para una subred privada que utiliza una instancia de NAT, permite el tráfico entrante en los puertos efímeros que usa el sistema operativo (SO) de la instancia de NAT.

Para obtener más información, consulta Garantiza la privacidad del tráfico entre redes en Amazon VPC.

Creación de un rol de ejecución de Lambda

Crea un rol de ejecución de Lambda para la VPC. A continuación, actualiza la función de Lambda para usar el nuevo rol de ejecución de Lambda.

Configuración de la función de Lambda para conectarla a la VPC

Adjunta la función a la VPC. En Subredes, selecciona la subred privada. En Grupos de seguridad, selecciona un grupo de seguridad.

Nota: El grupo de seguridad predeterminado permite todo el tráfico de salida de Internet y es suficiente para la mayoría de los casos de uso. Para obtener más información, consulta Controlar el tráfico hacia los recursos de AWS mediante grupos de seguridad.

En el caso de las funciones de Lambda con una conexión de Amazon VPC, puedes utilizar una puerta de enlace de Internet de solo salida para acceder a Internet. Para obtener más información, consulta Compatibilidad con IPv6.

Información relacionada

Solucionar problemas de redes en Lambda

¿Cómo puedo solucionar los problemas de tiempo de espera en el caso de una función de Lambda que se encuentra en una Amazon VPC?

How do I troubleshoot an ETIMEDOUT error in my Lambda function? (¿Cómo puedo solucionar un error de ETIMEDOUT en mi función de Lambda?)

Otorgamiento a las funciones de Lambda de acceso a los recursos de una Amazon VPC

¿Cómo puedo solucionar los errores en la función de Lambda?