Creación de una AMI basada en el almacén de instancias - Amazon Elastic Compute Cloud

Creación de una AMI basada en el almacén de instancias

La AMI que se especifica cuando se inicia una instancia determina el tipo de volumen del dispositivo raíz.

Para crear una AMI de Linux con respaldo en el almacén de instancias, comience desde una instancia que haya iniciado a partir de una AMI de Linux existente con respaldo en el almacén de instancias. Una vez que haya personalizado la instancia según sus necesidades, agrupe el volumen y registre una nueva AMI, que puede utilizar para iniciar nuevas instancias con dicha configuración personalizada.

No puede crear una AMI de Windows que esté respaldada por el almacén de instancias, ya que las AMI de Windows no admiten el almacén de instancias para el dispositivo raíz.

importante

Sólo los siguientes tipos de instancia admiten un volumen de almacén de instancia como dispositivo raíz y requieren una AMI basada en el almacén de instancias: C1, C3, D2, I2, M1, M2, M3, R3 y X1.

El proceso de creación de la AMI es diferente para las AMI con respaldo en Amazon EBS. Para obtener más información, consulte Creación de una AMI basada en Amazon EBS.

Información general sobre la creación de AMI

En el siguiente diagrama se resume el proceso de creación de una AMI desde una instancia con respaldo en el almacén de instancias.

Creación de una AMI con respaldo en un almacén de instancias.

En primer lugar, lance una instancia desde una AMI que sea similar a la AMI que desea crear. Puede conectarse a la instancia y personalizarla. Cuando la instancia esté configurada como desea, puede agruparla. El proceso de agrupación tarda unos minutos en completarse. Una vez se haya completo el proceso, tiene un paquete formado por un manifiesto de imágenes (image.manifest.xml) y archivos (image.part.xx) que contienen una plantilla para el volumen raíz. A continuación, cargue el paquete al bucket de Amazon S3 y registre la AMI.

nota

Para cargar objetos en un bucket de S3 para la AMI de Linux respaldada por el almacén de instancias, las ACL deben estar habilitadas para el bucket. De lo contrario, Amazon EC2 no podrá configurar las ACL en los objetos que se van a cargar. Si el bucket de destino utiliza la configuración impuesta por el propietario del bucket para la propiedad de objetos de S3, esto no funcionará porque las ACL están deshabilitadas. Para obtener más información, consulte Control de la propiedad de objetos cargados mediante la propiedad de objetos de S3.

Cundo inicia una instancia utilizando la nueva AMI, se crea el volumen raíz de la instancia con el paquete que cargó en Amazon S3. El espacio de almacenamiento que utiliza el paquete en Amazon S3 genera cargos a la cuenta hasta que lo elimine. Para obtener más información, consulte Anulación del registro de una AMI de Amazon EC2.

Si añade volúmenes de almacén de instancias a la instancia además del volumen de dispositivo raíz, la asignación de dispositivos de bloques de la nueva AMI contiene información relativa a estos volúmenes y los mapeos de dispositivos de bloques de las instancias que lance desde la nueva AMI contienen automáticamente información relativa a estos volúmenes. Para obtener más información, consulte Asignaciones de dispositivos de bloques para volúmenes en instancias de Amazon EC2.

Requisitos previos

Antes de poder crear una AMI, debe ejecutar las siguientes tareas:

  • Instalación de las herramientas de la AMI. Para obtener más información, consulte Configuración de las herramientas de la AMI de Amazon EC2.

  • Instale la AWS CLI. Para obtener más información, consulte Instalación de la AWS Command Line Interface.

  • Asegúrese de tener un bucket de S3 para el paquete y de que su bucket tenga las ACL habilitadas. Para obtener más información sobre la configuración de las ACL, consulte Configuración de la ACL.

    • Para crear un bucket de S3 con la AWS Management Console, abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/ S3 y elija Crear bucket.

    • Para crear un bucket de S3 con la AWS CLI, puede utilizar el comando mb. Si la versión instalada de las herramientas de AMI es la 1.5.18 o posterior, también puede usar el comando ec2-upload-bundle para crear el bucket de S3. Para obtener más información, consulte ec2-upload-bundle.

  • Asegúrese de que los archivos de la agrupación no estén cifrados en el bucket de S3. Si debe cifrar la AMI, puede utilizar en su lugar una AMI basada en EBS. Para obtener más información, consulte Usar el cifrado con las AMI con respaldo de EBS.

  • Asegúrese de tener el ID de la cuenta de AWS. Para obtener más información, consulte Visualización de identificadores de la Cuenta de AWS en la Guía de referencia de la Administración de cuentas de AWS.

  • Asegúrese de tener credenciales para utilizar el AWS CLI. Para más información, consulte Prácticas recomendadas para cuentas de AWS en la Guía de referencia de AWS Account Management.

  • Asegúrese de tener un certificado X.509 y su correspondiente clave privada.

    • Si necesita crear un certificado X.509, consulte Gestionar certificados de firma. El certificado X.509 y la clave privada se utilizan para cifrar y descifrar la AMI.

    • [China (Pekín)] Utilice el certificado $EC2_AMITOOL_HOME/etc/ec2/amitools/cert-ec2-cn-north-1.pem.

    • [AWS GovCloud (EE. UU. Oeste)] Utilice el certificado $EC2_AMITOOL_HOME/etc/ec2/amitools/cert-ec2-gov.pem.

  • Conéctese a la instancia y personalícela. Por ejemplo, puede instalar software y aplicaciones, copiar datos, eliminar archivos temporales y modificar la configuración de Linux.

Creación de una AMI desde una instancia de Amazon Linux

En los siguientes procedimientos se describe cómo crear una AMI desde una instancia basada en el almacén de instancias que ejecuta Amazon Linux 1. Es posible que no funcionen para las instancias que ejecutan otras distribuciones de Linux.

Para prepararse para utilizar las herramientas de la AMI (solo instancias HVM)
  1. Las herramientas de la AMI requieren GRUB Legacy para arrancar correctamente. Utilice el siguiente comando para instalar GRUB:

    [ec2-user ~]$ sudo yum install -y grub
  2. Instale los paquetes de administración de particiones con el siguiente comando:

    [ec2-user ~]$ sudo yum install -y gdisk kpartx parted
Para crear una AMI desde una instancia de Amazon Linux con respaldo en el almacén de instancias

En este procedimiento se presupone que ha satisfecho los requisitos previos que se indican en Requisitos previos.

En el siguiente ejemplo, reemplace cada marcador de posición del usuario con su propia información.

  1. Cargue las credenciales en la instancia. Estas credenciales se utilizan para garantizar que solo usted y Amazon EC2 pueden obtener acceso a la AMI.

    1. Cree un directorio temporal en la instancia para las credenciales del modo siguiente:

      [ec2-user ~]$ mkdir /tmp/cert

      Esto le permite excluir las credenciales de la imagen creada.

    2. Copie el certificado X.509 y la clave privada correspondiente del equipo en el directorio /tmp/cert de la instancia utilizando una herramienta de copia segura como scp. La opción -i my-private-key.pem del comando scp es la clave privada que utiliza para conectarse a la instancia con SSH, no la clave privada X.509. Por ejemplo:

      you@your_computer:~ $ scp -i my-private-key.pem /path/to/pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem /path/to/cert-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem ec2-user@ec2-203-0-113-25.compute-1.amazonaws.com:/tmp/cert/ pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem 100% 717 0.7KB/s 00:00 cert-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem 100% 685 0.7KB/s 00:00

    Puesto que se trata de archivos de texto sin formato, también puede abrir el certificado y la clave con un editor de texto y copiar el contenido en nuevos archivos en /tmp/cert.

  2. Prepare el paquete a cargar en Amazon S3 ejecutando el comando ec2-bundle-vol desde dentro de la instancia. Asegúrese de especificar la opción -e para excluir el directorio en el que están almacenadas las credenciales. De forma predeterminada, el proceso de agrupación excluye los archivos que podrían contener información confidencial. Estos archivos incluyen *.sw, *.swo, *.swp, *.pem, *.priv, *id_rsa*, *id_dsa* *.gpg, *.jks, */.ssh/authorized_keys y */.bash_history. Para incluir todos estos archivos, use la opción --no-filter. Para incluir algunos de estos archivos, use la opción --include.

    importante

    De forma predeterminada, el proceso de agrupación de la AMI crea una serie de archivos comprimidos y cifrados en el directorio /tmp que representa el volumen raíz. Si no dispone de suficiente espacio libre en disco en /tmp para almacenar el paquete, necesita especificar una ubicación distinta para almacenar el paquete mediante la opción -d /path/to/bundle/storage. Algunas instancias tienen almacenamiento efímero montado en /mnt o en /media/ephemeral0 que puede utilizar, o también puede crear, asociar y montar un nuevo volumen de Amazon EBS para almacenar el paquete. Para obtener más información, consulte Creación de un volumen de Amazon EBS en la Guía del usuario de Amazon EBS.

    1. Debe ejecutar el comando ec2-bundle-vol como raíz. Para la mayoría de comandos, puede utilizar sudo para obtener permisos elevados, pero en este caso debe ejecutar sudo -E su para mantener las variables de entorno.

      [ec2-user ~]$ sudo -E su

      Tenga en cuenta que la pregunta bash ahora le identifica como el usuario raíz y que el signo de dólar se ha sustituido por un hash tag, lo que indica que se encuentra en un shell raíz:

      [root ec2-user]#
    2. Para crear el paquete de la AMI, ejecute el comando ec2-bundle-vol del modo siguiente:

      [root ec2-user]# ec2-bundle-vol -k /tmp/cert/pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -c /tmp/cert/cert-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -u 123456789012 -r x86_64 -e /tmp/cert --partition gpt
      nota

      En las regiones China (Pekín) y AWS GovCloud (EE. UU. Oeste), utilice el parámetro --ec2cert y especifique los certificados de acuerdo con lo indicado en los requisitos previos.

      La creación de la imagen puede llevar unos minutos. Cuando el comando se complete, el directorio /tmp (o no predeterminado) contiene el paquete (image.manifest.xml, además de varios archivos image.part.xx).

    3. Salga del shell raíz.

      [root ec2-user]# exit
  3. (Opcional) Para añadir más volúmenes de almacén de instancias, edite los mapeos de dispositivos de bloques del archivo image.manifest.xml de la AMI. Para obtener más información, consulte Asignaciones de dispositivos de bloques para volúmenes en instancias de Amazon EC2.

    1. Cree una copia de seguridad del archivo image.manifest.xml.

      [ec2-user ~]$ sudo cp /tmp/image.manifest.xml /tmp/image.manifest.xml.bak
    2. Reformatee el archivo image.manifest.xml para que sea más fácil de leer y editar.

      [ec2-user ~]$ sudo xmllint --format /tmp/image.manifest.xml.bak > /tmp/image.manifest.xml
    3. Edite los mapeos de dispositivos de bloques en image.manifest.xml con un editor de texto. En el siguiente ejemplo se muestra una nueva entrada para el volumen de almacén de instancias ephemeral1.

      nota

      Para obtener una lista de los archivos excluidos, consulte ec2-bundle-vol.

      <block_device_mapping> <mapping> <virtual>ami</virtual> <device>sda</device> </mapping> <mapping> <virtual>ephemeral0</virtual> <device>sdb</device> </mapping> <mapping> <virtual>ephemeral1</virtual> <device>sdc</device> </mapping> <mapping> <virtual>root</virtual> <device>/dev/sda1</device> </mapping> </block_device_mapping>
    4. Guarde el archivo image.manifest.xml y salga del editor de texto.

  4. Para cargar el paquete a Amazon S3, ejecute el comando ec2-upload-bundle del modo siguiente.

    [ec2-user ~]$ ec2-upload-bundle -b amzn-s3-demo-bucket/bundle_folder/bundle_name -m /tmp/image.manifest.xml -a your_access_key_id -s your_secret_access_key
    importante

    Para registrar la AMI en una región distinta a US East (N. Virginia), debe especificar tanto la región de destino con la opción --region como una ruta para el bucket que ya exista en la región de destino o bien una ruta para el bucket exclusiva que pueda crearse en la región de destino.

  5. (Opcional) Una vez que el bucket se ha cargado en Amazon S3, puede eliminar el paquete del directorio /tmp de la instancia utilizando el siguiente comando rm:

    [ec2-user ~]$ sudo rm /tmp/image.manifest.xml /tmp/image.part.* /tmp/image
    importante

    Si ha especificado una ruta con la opción -d /path/to/bundle/storage en Paso 2, utilice dicha ruta en lugar de /tmp.

  6. Para registrar la AMI, ejecute el comando register-image del modo siguiente.

    [ec2-user ~]$ aws ec2 register-image --image-location amzn-s3-demo-bucket/bundle_folder/bundle_name/image.manifest.xml --name AMI_name --virtualization-type hvm
    importante

    Si ha especificado previamente una región para el comando ec2-upload-bundle, especifique la misma región de nuevo para este comando.