Conexión de las aplicaciones de Amazon ECS a Internet
La mayoría de las aplicaciones en contenedores tienen al menos algunos componentes que necesitan acceso de salida a Internet. Por ejemplo, el backend de una aplicación móvil requiere acceso de salida a las notificaciones push.
Amazon Virtual Private Cloud cuenta con dos métodos principales para facilitar la comunicación entre su VPC e Internet.
Subred pública y puerta de enlace de Internet
Cuando usa una subred pública que tiene una ruta a una puerta de enlace de Internet, la aplicación en contenedores se puede ejecutar en un host dentro de una VPC en una subred pública. Al host que ejecuta el contenedor se le asigna una dirección IP pública. Esta dirección IP pública se puede enrutar desde Internet. Para obtener más información, consulte Puertas de enlace de Internet en la Guía del usuario de Amazon VPC.
Esta arquitectura de red facilita la comunicación directa entre el host que ejecuta la aplicación y otros hosts de Internet. La comunicación es bidireccional. Esto significa que no solo puede establecer una conexión de salida con cualquier otro host de Internet, sino que otros hosts de Internet también podrían intentar conectarse al suyo. Por lo tanto, debe prestar mucha atención a las reglas de firewall y grupos de seguridad. Esto garantiza que otros hosts de Internet no puedan abrir ninguna conexión que no quiera que se abra.
Por ejemplo, si la aplicación se ejecuta en Amazon EC2, asegúrese de que el puerto 22 para el acceso mediante SSH no esté abierto. De lo contrario, su instancia podría recibir intentos constantes de conexión SSH por parte de bots malintencionados de Internet. Estos bots rastrean direcciones IP públicas. Cuando encuentran un puerto SSH abierto, intentan utilizar contraseñas a la fuerza para acceder a la instancia. Por este motivo, muchas organizaciones limitan el uso de las subredes públicas y prefieren tener la mayoría de sus recursos, si no todos, dentro de subredes privadas.
Optar por subredes públicas para las redes es adecuado cuando se trata de aplicaciones públicas que requieran grandes cantidades de ancho de banda o una latencia mínima. Entre los casos de uso aplicables se encuentran los servicios de streaming de vídeo y juegos.
Este enfoque con respecto a las redes se admite tanto cuando se utiliza Amazon ECS en Amazon EC2 y cuando se utiliza en AWS Fargate.
-
Amazon EC2: puede lanzar instancias de EC2 en una subred pública. Amazon ECS usa estas instancias de EC2 como capacidad del clúster y cualquier contenedor que se ejecute en las instancias puede usar la dirección IP pública subyacente del host para las redes salientes. Esto se aplica a los modos de red de
host
ybridge
. Sin embargo, el modo de redawsvpc
no proporciona las ENI de tarea con direcciones IP públicas. Por lo tanto, no pueden utilizar directamente una puerta de enlace de Internet. -
Fargate: cuando cree su servicio de Amazon ECS, especifique las subredes públicas para la configuración de red de su servicio y utilice la opción Asignar dirección IP pública. Cada tarea de Fargate está conectada a la subred pública y tiene su propia dirección IP pública para la comunicación directa con Internet.
Subred privada y puerta de enlace NAT
Cuando usa una subred privada y una puerta de enlace NAT, puede ejecutar la aplicación en contenedores en un host que se encuentre en una subred privada. Por lo tanto, este host tiene una dirección IP privada que se puede enrutar dentro de la VPC, pero no se puede enrutar desde Internet. Esto significa que otros hosts de la VPC pueden conectarse al host mediante su dirección IP privada, pero los hosts de Internet no pueden establecer ninguna comunicación entrante con el host.
Con una subred privada, puede utilizar una puerta de enlace de traducción de direcciones de red (NAT) para permitir que un host dentro de una subred privada se conecte a Internet. Los hosts de Internet reciben una conexión entrante que parece provenir de la dirección IP pública de la puerta de enlace NAT que se encuentra dentro de una subred pública. La puerta de enlace NAT es la responsable de actuar como puente entre Internet y la VPC privada. Esta configuración suele preferirse por motivos de seguridad, ya que significa que su VPC está protegida del acceso directo de los atacantes de Internet. Para obtener información, consulte Gateways NAT en la Guía del usuario de Amazon VPC.
Este enfoque respecto a las redes privadas es adecuado para situaciones en las que desee proteger los contenedores frente al acceso externo directo. Entre los escenarios aplicables se encuentran los sistemas de procesamiento de pagos o los contenedores que almacenan datos de usuario y contraseñas. Se le cobrará por la creación y el uso de una gateway NAT en su cuenta. Además, se aplican tarifas de procesamiento de datos y uso por horas de la puerta de enlace NAT. Para obtener redundancia, debe tener una puerta de enlace NAT en cada zona de disponibilidad. De esta forma, la pérdida de disponibilidad de una única zona de disponibilidad no pone en peligro su conectividad de salida. Por ello, si tiene una carga de trabajo pequeña, podría resultar más rentable utilizar subredes privadas y puertas de enlace NAT.
Este enfoque con respecto a las redes se admite tanto cuando se utiliza Amazon ECS en Amazon EC2 y cuando se utiliza en AWS Fargate.
-
Amazon EC2: puede lanzar instancias de EC2 en una subred privada. Los contenedores que se ejecutan en estos hosts de EC2 utilizan las redes de los hosts subyacentes y las solicitudes de salida atraviesan la puerta de enlace NAT.
-
Fargate: cuando cree su servicio de Amazon ECS, especifique las subredes privadas para la configuración de red de su servicio y no utilice la opción Asignar dirección IP pública. Cada tarea de Fargate está alojada en una subred privada. Su tráfico de salida se enruta a través de cualquier puerta de enlace NAT que haya asociado a esa subred privada.