Uso de una imagen de máquina de Amazon (AMI) personalizada - AWS Elastic Beanstalk

Uso de una imagen de máquina de Amazon (AMI) personalizada

Cuando crea un entorno de AWS Elastic Beanstalk, puede especificar una Amazon Machine Image (AMI) que puede utilizar en lugar de la AMI estándar de Elastic Beanstalk, incluida en la versión de su plataforma. Una AMI personalizada puede mejorar los tiempos de aprovisionamiento cuando se lanzan las instancias de su entorno si necesita instalar una gran cantidad de software que no está incluido en las AMI estándar.

El uso de archivos de configuración es ideal para configurar y personalizar su entorno de forma rápida y coherente. La aplicación de configuraciones, sin embargo, puede tardar mucho tiempo durante la creación del entorno y las actualizaciones. Si realiza muchas tareas de configuración del servidor con los archivos de configuración, puede reducir este tiempo creando una AMI personalizada que ya tenga el software y la configuración que necesita.

Una AMI personalizada también le permite realizar cambios en los componentes de bajo nivel, como el kernel de Linux, que son difíciles de implementar o que tardan mucho tiempo en aplicarse mediante archivos de configuración. Para crear una AMI personalizada, lance una AMI de plataforma de Elastic Beanstalk en Amazon EC2 personalice el software y la configuración según sus necesidades y, a continuación, detenga la instancia y guarde una AMI.

Creación de una AMI personalizada

Para identificar la base AMI de Elastic Beanstalk

  1. En una ventana del sistema, ejecute un comando como el siguiente. Para obtener más información, consulte describe-platform-version en la Referencia de comandos de la AWS CLI.

    Especifique la región de AWS donde desee utilizar su AMI personalizada y sustituya el ARN de la plataforma y el número de versión por la plataforma de Elastic Beanstalk en la que se basa su aplicación.

    ejemplo - Mac OS/sistema operativo Linux

    $ aws elasticbeanstalk describe-platform-version --region us-east-2 \ --platform-arn "arn:aws:elasticbeanstalk:us-east-2::platform/Tomcat 8.5 with Java 8 running on 64bit Amazon Linux/3.1.6" \ --query PlatformDescription.CustomAmiList [ { "VirtualizationType": "pv", "ImageId": "" }, { "VirtualizationType": "hvm", "ImageId": "ami-020ae06fdda6a0f66" } ]

    ejemplo - Sistema operativo Windows

    C:\> aws elasticbeanstalk describe-platform-version --region us-east-2 --platform-arn"arn:aws:elasticbeanstalk:us-east-2::platform/IIS 10.0 running on 64bit Windows Server 2019/2.6.4" --query PlatformDescription.CustomAmiList [ { "VirtualizationType": "pv", "ImageId": "" }, { "VirtualizationType": "hvm", "ImageId": "ami-020ae06fdda6a0f66" } ]
  2. Tome nota del valor ImageId que es similar a ami-020ae06fdda6a0f66 en el resultado.

El valor es la AMI de Elastic Beanstalk de reserva para la versión de la plataforma, la arquitectura de la instancia EC2 y la región de AWS pertinentes a su aplicación. Si necesita crear AMI para varias plataformas, arquitecturas o regiones de AWS, repita este proceso para identificar la AMI base correcta para cada combinación.

Notas
  • No cree una AMI a partir de una instancia que se ha lanzado en un entorno de Elastic Beanstalk. Elastic Beanstalk realiza cambios en las instancias durante el aprovisionamiento que pueden provocar problemas en la AMI guardada. Al guardar una imagen de una instancia en un entorno de Elastic Beanstalk, también se incluye como parte fija de la imagen la versión de la aplicación que se implementó en la instancia.

  • Le recomendamos que utilice siempre la versión más reciente de la plataforma. Cuando actualice a una nueva versión de la plataforma, le recomendamos que también modifique su AMI personalizada de tal forma que esté basada en la AMI de la nueva versión de la plataforma. De este modo se minimizan los errores de implementación debidos a incompatibilidades de versiones de paquetes o bibliotecas.

Para Linux, también es posible crear una AMI personalizada a partir de una AMI de comunidad que Elastic Beanstalk no publicó. Puede utilizar la última AMI de Amazon Linux como punto de partida. Cuando se lanza un entorno con una AMI de Linux que no administra Elastic Beanstalk, Elastic Beanstalk intenta instalar el software de la plataforma (idioma, plataforma, servidor proxy, etc.) y los componentes adicionales para admitir características como los informes de estado mejorados.

nota

Las AMI personalizadas basadas en Windows Server requieren la AMI de Elastic Beanstalk de stock devuelta describe-platform-version, como se muestra anteriormente en el paso 1.

Aunque Elastic Beanstalk puede utilizar una AMI no administrada por Elastic Beanstalk, el aumento del tiempo de aprovisionamiento resultante de la instalación de los componentes que faltan por parte de Elastic Beanstalk puede reducir o eliminar los beneficios de la creación de una AMI personalizada. Otras distribuciones de Linux podrían funcionar realizando algunas soluciones de problemas, pero no están admitidas oficialmente. Si la aplicación necesita una distribución de Linux específica, una alternativa puede ser crear una imagen de Docker y ejecutarla en la plataforma de Docker en Elastic Beanstalk o en la plataforma Multicontainer Docker.

Para crear una AMI personalizada

  1. Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

  2. Elija Launch Instance.

  3. Elija Community AMIs (AMI de comunidad).

  4. Si identificó una AMI base de Elastic Beanstalk (con describe-platform-version) o una AMI de Amazon Linux, escriba su ID de AMI en el cuadro de búsqueda. Luego pulse Intro.

    También puede buscar en la lista otra AMI de la comunidad que se adapte a sus necesidades.

    nota

    Le recomendamos que elija una AMI que utilice virtualización HVM. Estas AMI muestran Virtualization type: hvm en su descripción.

    
              AMI con tipo de virtualización HVM mostrada en la consola de EC2

    Para obtener información detallada sobre los tipos de virtualización de instancias, consulte Tipos de virtualización de AMI de Linux en la Guía del usuario de Amazon EC2 para instancias Linux o Tipos de virtualización de AMI de Windows en Guía de usuario de Amazon EC2 para instancias de Windows.

  5. Elija Select para seleccionar la AMI.

  6. Seleccione un tipo de instancia y, a continuación, elija Next: Configure Instance Details.

  7. (Para plataformas Linux) Expanda la sección Detalles avanzados y pegue el texto siguiente en el campo Datos de usuario.

    #cloud-config repo_releasever: repository version number repo_upgrade: none

    El número de versión del repositorio es la versión de año y mes en el nombre de la AMI. Por ejemplo, las AMI basadas en la versión de marzo de 2015 de Amazon Linux tienen el número de versión de repositorio 2015.03. Para una imagen de Elastic Beanstalk, coincide con la fecha mostrada en el nombre de la pila de soluciones para la versión de su plataforma basada en la AMI de Amazon Linux (anterior a Amazon Linux 2).

    nota

    Los ajustes de repo_releasever configuran la característica lock-on-launch para una AMI de Amazon Linux. Esto hace que la AMI utilice una versión de repositorio fija y específica cuando se lanza. Esta función no es compatible con Amazon Linux 2: no la especifique si su entorno utiliza una rama actual de plataforma Amazon Linux 2. La configuración es obligatoria si utiliza una AMI personalizada con Elastic Beanstalk solo en las ramas de la plataforma AMI de Amazon Linux (antes de Amazon Linux 2).

    La configuración de repo_upgrade desactiva la instalación automática de actualizaciones de seguridad. Es necesario usar una AMI personalizada con Elastic Beanstalk.

  8. Avance por el asistente hasta lanzar la instancia EC2. Cuando se le solicite, seleccione un par de claves a las que tenga acceso para poder conectarse a la instancia para los pasos siguientes.

  9. Conéctese a la instancia con SSH o RDP.

  10. Realice las personalizaciones que desee.

  11. (Plataformas Windows) Ejecute el servicio de EC2Config Sysprep. Para obtener más información acerca de EC2Config, consulte Configuración de una instancia de Windows con el servicio EC2Config. Asegúrese de que Sysprep está configurado para generar una contraseña aleatoria que pueda recuperarse en la AWS Management Console.

  12. En la consola de Amazon EC2, detenga la instancia EC2. A continuación, en el menú Instance Actions (Acciones de instancia), elija Create Image (EBS AMI) (Crear imagen [AMI de EBS]).

  13. Para evitar incurrir en cargos adicionales de AWS, finalice la instancia EC2.

Para utilizar su AMI personalizada en un entorno de Elastic Beanstalk

  1. Abra la consola de Elastic Beanstalk y, en la lista Regions (Regiones), seleccione su región de AWS.

  2. En el panel de navegación, elija Environments (Entornos) y, a continuación, elija el nombre del entorno en la lista.

    nota

    Si tiene muchos entornos, utilice la barra de búsqueda para filtrar la lista de entornos.

  3. En el panel de navegación, elija Configuration (Configuración).

  4. En la categoría de configuración Capacity (Capacidad), seleccione Edit (Editar).

  5. En AMI ID (ID de AMI), especifique su ID de AMI personalizado.

  6. Seleccione Apply.

Cuando crea un nuevo entorno con la AMI personalizada, debe utilizar la misma versión de la plataforma que utilizó como punto de partida para crear la AMI. Si posteriormente aplica una actualización de la plataforma a un entorno utilizando una AMI personalizada, Elastic Beanstalk intenta aplicar la biblioteca y las actualizaciones de la configuración durante el proceso de arranque.

Limpieza de una AMI personalizada

Cuando haya terminado una AMI personalizada y ya no la necesite para lanzar entornos de Elastic Beanstalk, considere la posibilidad de limpiarla para minimizar el costo de almacenamiento. La limpieza de una AMI personalizada conlleva anular el registro de Amazon EC2 y eliminar los demás recursos asociados. Para obtener detalles, consulte Anulación del registro de una AMI de Linux o Anulación del registro de una AMI de Windows.