Uso de Elastic Beanstalk con Amazon VPC - AWS Elastic Beanstalk

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Uso de Elastic Beanstalk con Amazon VPC

Puede utilizar una Amazon Virtual Private Cloud (Amazon VPC) a fin de crear una red segura para la aplicación Elastic Beanstalk y los recursos relacionados de AWS. Al crear su entorno, puede elegir qué VPC, subredes y grupos de seguridad se utilizan para sus instancias de aplicación y el balanceador de carga. Puede utilizar cualquier configuración de VPC que desee siempre que cumpla los requisitos siguientes.

Requisitos de la VPC
  • Acceso a internet: las instancias deben tener acceso a Internet a través de uno de los métodos siguientes:

    • Subred pública: las instancias tienen una dirección IP pública y usan un gateway de Internet para obtener acceso a Internet.

    • Subred privada: las instancias usan un dispositivo NAT para obtener acceso a Internet.

    nota

    Si configura los Puntos de enlace de la VPC en su VPC para conectarse a los servicios elasticbeanstalk y elasticbeanstalk-health, el acceso a internet es opcional y solo se requiere si la aplicación lo necesita específicamente. Sin puntos finales de la VPC, su VPC debe tener acceso a internet.

    La VPC predeterminada que Elastic Beanstalk configura para usted proporciona acceso a Internet.

    Elastic Beanstalk no admite configuraciones de proxy como HTTPS_PROXY para la configuración de un proxy web.

  • NTP: las instancias del entorno de Elastic Beanstalk usan Network Time Protocol (NTP, protocolo de hora de red) para sincronizar el reloj del sistema. Si las instancias no pueden comunicarse en el puerto UDP 123, es posible que el reloj no esté sincronizado y surjan problemas con los informes de estado de Elastic Beanstalk. Asegúrese de que los grupos de seguridad de la VPC y las listas de control de acceso de red permiten el tráfico UDP de entrada y de salida en el puerto 123 para evitar estos problemas.

El repositorio elastic-beanstalk-samples proporciona plantillas de AWS CloudFormation que puede utilizar con el fin de crear una VPC para utilizarla con los entornos de Elastic Beanstalk.

Para crear recursos con una plantilla de AWS CloudFormation
  1. Clone el repositorio de ejemplos o descargue una plantilla con los enlaces en README.

  2. Abra la consola de AWS CloudFormation.

  3. Elija Create stack (Crear pila).

  4. Elija Upload a template to Amazon S3 (Cargar una plantilla en Amazon S3).

  5. Elija Upload file (Cargar archivo) y cargue el archivo de plantilla desde su máquina local.

  6. Elija Next (Siguiente) y siga las instrucciones para crear una pila con los recursos de la plantilla.

Cuando termina la creación de la pila, observe la pestaña Outputs (Salidas) para ver el ID de VPC y los ID de subred. Utilícelos para configurar la VPC en la categoría de configuración de red del asistente para crear un nuevo entorno.

VPC pública

Plantilla de AWS CloudFormation: vpc-public.yaml

Configuración (carga balanceada)
  • Visibilidad de balanceador de carga : público

  • Subredes de balanceador de carga: ambas subredes públicas

  • IP pública de instancia: habilitada

  • Subredes de instancia: ambas subredes públicas

  • Grupos de seguridad de instancia: añada el grupo de seguridad predeterminado

Configuración (instancia individual)
  • Subredes de instancia: una de las subredes públicas

  • Grupos de seguridad de instancia: añada el grupo de seguridad predeterminado

Un diseño de VPC básico solo público incluye una o varias subredes públicas, un gateway de internet y un grupo de seguridad predeterminado que permite el tráfico entre los recursos de la VPC. Cuando crea un entorno en la VPC, Elastic Beanstalk crea recursos adicionales que varían en función del tipo de entorno.

Recursos de la VPC
  • Instancia individual: Elastic Beanstalk crea un grupo de seguridad para la instancia de aplicación que permite el tráfico en el puerto 80 desde Internet y asigna a la instancia una dirección IP elástica para que tenga una dirección IP pública. El nombre de dominio del entorno se resuelve como la dirección IP pública de la instancia.

  • Con balanceo de carga: Elastic Beanstalk crea un grupo de seguridad para el balanceador de carga que permite el tráfico en el puerto 80 desde Internet y un grupo de seguridad para las instancias de aplicación que permite el tráfico desde el grupo de seguridad del balanceador de carga. El nombre de dominio del entorno se resuelve como la dirección IP pública del balanceador de carga.

Esto es similar a la forma en que Elastic Beanstalk gestiona la red cuando se utiliza la VPC predeterminada. La seguridad en una subred pública depende del balanceador de carga y de los grupos de seguridad de las instancias creados por Elastic Beanstalk. Es la configuración más económica, ya que no requiere un gateway NAT.

VPC pública/privada

Plantilla deAWS CloudFormation: vpc-privatepublic.yaml

Configuración (carga balanceada)
  • Visibilidad de balanceador de carga : público

  • Subredes de balanceador de carga: ambas subredes públicas

  • IP pública de instancia: deshabilitada

  • Subredes de instancia: ambas subredes privadas

  • Grupos de seguridad de instancia: añada el grupo de seguridad predeterminado

Para aumentar la seguridad, añada subredes privadas a la VPC para crear un diseño público-privado. Este diseño requiere un balanceador de carga y un gateway NAT en las subredes públicas, y le permite ejecutar las instancias de aplicación, bases de datos y otros recursos en subredes privadas. Las instancias de subredes privadas solo puede comunicarse con internet a través del balanceador de carga y el gateway NAT.

VPC privada

Plantilla de AWS CloudFormation: vpc-private.yaml

Configuración (carga balanceada)
  • Visibilidad de balanceador de carga: privada

  • Subredes de balanceador de carga: ambas subredes privadas

  • IP pública de instancia: deshabilitada

  • Subredes de instancia: ambas subredes privadas

  • Grupos de seguridad de instancia: añada el grupo de seguridad predeterminado

En aplicaciones internas que no deban ser accesibles desde internet, puede ejecutarlo todo en subredes privadas y configurar el balanceador de carga para que se dirija hacia el interior (cambiar Load balancer visibility (Visibilidad del balanceador de carga) a Internal (Interna). Esta plantilla crea una VPC sin subredes públicas y sin gateway de internet. Utilice este diseño para las aplicaciones que solo deban ser accesibles desde la misma VPC o desde una VPN adjunta.

Ejecución de un entorno Elastic Beanstalk en una VPC privada

Cuando crea su entorno de Elastic Beanstalk en una VPC privada, el entorno no tiene acceso a Internet. Es posible que su aplicación necesite acceso al servicio Elastic Beanstalk u otros servicios. Su entorno podría utilizar informes de estado mejorados. En este caso, las instancias del entorno envían información de estado al servicio de salud mejorado. Y el código de Elastic Beanstalk en las instancias del entorno envía parte del tráfico a otros servicios de AWS y parte del tráfico a los puntos de enlace que no son de AWS (por ejemplo, con el fin de descargar paquetes de dependencias para su aplicación). Estos son algunos pasos que puede que deba seguir en este caso para asegurarse de que el entorno funciona correctamente.

  • Configure los puntos de enlace de la VPC para Elastic Beanstalk: Elastic Beanstalk y su servicio de mantenimiento mejorado admiten puntos de enlace de la VPC que garantizan que el tráfico a estos servicios permanezca dentro de la red de Amazon y no requiera acceso a Internet. Para obtener más información, consulte . Uso de Elastic Beanstalk con puntos de enlace de la VPC.

  • Configure los puntos de enlace de la VPC para servicios adicionales: las instancias de Elastic Beanstalk envían tráfico a varios servicios más de AWS en su nombre: Amazon Simple Storage Service (Amazon S3), Amazon Simple Queue Service (Amazon SQS), AWS CloudFormation y Amazon CloudWatch Logs. También debe configurar los puntos de enlace de la VPC para estos servicios. Para obtener información detallada acerca de los puntos de enlace de la VPC, incluidos los vínculos por servicio, consulte Puntos de enlace de la VPC en la Guía de usuario de Amazon VPC.

    nota

    Algunos servicios de AWS, como Elastic Beanstalk, admiten puntos de enlace de la VPC en un número limitado de regiones de AWS. Cuando diseñe la solución de VPC privada, compruebe que Elastic Beanstalk y los demás servicios dependientes mencionados aquí admitan puntos de enlace de la VPC en la región de AWS que elija.

  • Proporcionar una imagen de Docker privada: en un entorno de Docker el código de las instancias del entorno podría intentar extraer la imagen de Docker configurada de internet durante la creación del entorno y fallar. Para evitar este error, cree una imagen de Docker personalizada en su entorno o utilice una imagen de Docker almacenada en Amazon Elastic Container Registry (Amazon ECR) y configure un extremo de VPC para el servicio Amazon ECR.

  • Habilitar los nombres DNS: el código de Elastic Beanstalk en las instancias del entorno envía tráfico a todos los servicios de AWS mediante sus puntos de enlace públicos. Para asegurarse de que este tráfico pasa, elija la opción Enable DNS name (Habilitar nombre del DNS) cuando configure todos los puntos de enlace de la VPC de tipo interfaz. Esto añade una entrada DNS en la VPC que asigna el punto de enlace del servicio público al punto de enlace de la VPC de tipo interfaz.

    importante

    Si la VPC no es privada y tiene acceso público a internet, y si Enable DNS name (Habilitar nombre del DNS) está deshabilitado para cualquier punto de enlace de la VPC, el tráfico hacia su servicio respectivo se desplaza a través del internet público. Probablemente no sea lo que pretendía. Es fácil detectar este problema con una VPC privada, ya que evita que este tráfico pase y recibe errores. Sin embargo, con una VPC pública, no se obtiene ninguna indicación.

  • Include application dependencies (Incluir dependencias de aplicaciones): si la aplicación tiene dependencias como paquetes de tiempo de ejecución de idiomas, podría intentar descargarlas e instalarlas desde internet durante la creación del entorno y fallar. Para evitar este error, incluya todos los paquetes de dependencias en el código fuente de la aplicación.

  • Utilizar una versión de plataforma actual: asegúrese de que su entorno utiliza la versión de la plataforma publicada el 24 de febrero de 2020 o una versión más reciente. Utilice específicamente una versión de plataforma que se publicó en o después de una de estas dos actualizaciones: Linux Update 2020-02-28, Windows Update 2020-02-24.

    nota

    La razón por la que se necesita una versión de plataforma actualizada es que las versiones anteriores tenían un problema que impedía que las entradas DNS creadas por la opción Enable DNS name (Habilitar nombre del DNS) funcionaran correctamente para Amazon SQS.