

# Creación de una AMI basada en Amazon S3
<a name="creating-an-ami-instance-store"></a>

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

Para crear una AMI de Linux basada en Amazon S3, comience desde una instancia que haya iniciado a partir de una AMI de Linux existente basada en Amazon S3. 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 basada en Amazon S3, ya que las AMI de Windows no admiten el almacén de instancias para el volumen raíz.

**importante**  
Solo los siguientes tipos de instancias admiten un volumen del almacén de instancia como volumen raíz y requieren una AMI basada en Amazon S3: 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](creating-an-ami-ebs.md).

**Topics**
+ [Información general sobre la creación de AMI](#process-creating-an-ami-instance-store)
+ [Requisitos previos](#bundle-ami-prerequisites)
+ [Creación de una AMI desde una instancia de Amazon Linux](#amazon_linux_instructions)
+ [Configuración de las herramientas de la AMI de Amazon EC2](set-up-ami-tools.md)
+ [Referencia de las herramientas para las AMI de Amazon EC2](ami-tools-commands.md)
+ [Conversión de la AMI basada en Amazon S3 a una AMI basada en EBS](Using_ConvertingS3toEBS.md)

## Información general sobre la creación de AMI
<a name="process-creating-an-ami-instance-store"></a>

En el siguiente diagrama se resume el proceso de creación de una AMI desde una instancia con un volumen raíz del almacén de instancias.

![\[Creación de una AMI basada en Amazon S3.\]](http://docs.aws.amazon.com/es_es/AWSEC2/latest/UserGuide/images/ami_create_instance_store.png)


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 basada en Amazon S3, 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 los objetos y desactivación de las ACL del bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html).

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](deregister-ami.md).

Si añade volúmenes de almacén de instancias a la instancia además del volumen 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](block-device-mapping-concepts.md).

## Requisitos previos
<a name="bundle-ami-prerequisites"></a>

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](set-up-ami-tools.md).
+ Instale la AWS CLI. Para obtener más información, consulte [Introducción a AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html).
+ 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](https://docs.aws.amazon.com/AmazonS3/latest/userguide/managing-acls.html).
  + Para crear un bucket de S3 con la Consola de administración de AWS, abra la consola de Amazon S3 en [https://console.aws.amazon.com/s3/](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](https://docs.aws.amazon.com/cli/latest/reference/s3/mb.html). 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](ami-tools-commands.md#ami-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](AMIEncryption.md).
+ 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](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-identifiers.html) 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 obtener más información, consulte [Autenticación y credenciales de acceso para la AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-authentication.html) en la *Guía del usuario de AWS Command Line Interface*.
+ 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](set-up-ami-tools.md#ami-tools-managing-certs). 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
<a name="amazon_linux_instructions"></a>

En los siguientes procedimientos se describe cómo crear una AMI desde una instancia con un volumen raíz del 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
   ```

1. Instale los paquetes de administración de particiones con el siguiente comando:

   ```
   [ec2-user ~]$ sudo yum install -y gdisk kpartx parted
   ```

**Creación de una AMI desde una instancia de Amazon Linux con un volumen raíz del almacén de instancias**

En este procedimiento se presupone que ha satisfecho los requisitos previos que se indican en [Requisitos previos](#bundle-ami-prerequisites).

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.

   1. 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](linux-file-transfer-scp.md). 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`.

1. <a name="step_with_bundle_path_amazon_linux"></a>Prepare el paquete a cargar en Amazon S3 ejecutando el comando [ec2-bundle-vol](ami-tools-commands.md#ami-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](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-creating-volume.html) 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]#
      ```

   1. Para crear el paquete de la AMI, ejecute el comando [ec2-bundle-vol](ami-tools-commands.md#ami-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](#bundle-ami-prerequisites).

      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*).

   1. Salga del shell raíz.

      ```
      [root ec2-user]# exit
      ```

1. (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](block-device-mapping-concepts.md).

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

      ```
      [ec2-user ~]$ sudo cp /tmp/image.manifest.xml /tmp/image.manifest.xml.bak
      ```

   1. 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
      ```

   1. 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](ami-tools-commands.md#ami-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>
      ```

   1. Guarde el archivo `image.manifest.xml` y salga del editor de texto.

1. Para cargar el paquete a Amazon S3, ejecute el comando [ec2-upload-bundle](ami-tools-commands.md#ami-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.

1. (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 [Step 2](#step_with_bundle_path_amazon_linux), utilice dicha ruta en lugar de `/tmp`.

1. Para registrar la AMI, ejecute el comando [register-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) 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](ami-tools-commands.md#ami-upload-bundle), especifique la misma región de nuevo para este comando.

# Configuración de las herramientas de la AMI de Amazon EC2
<a name="set-up-ami-tools"></a>

Puede utilizar las herramientas de la AMI para crear y administrar AMI de Linux basadas en Amazon S3. Para utilizar las herramientas, debe instalarlas en su instancia de Linux. Las herramientas de la AMI están disponibles como un archivo RPM o como un archivo .zip para distribuciones Linux que no admiten RPM. 

**Para configurar las herramientas de la AMI con RPM**

1. Instale Ruby utilizando el administrador de paquetes correspondiente de la distribución Linux, como, por ejemplo, yum. Por ejemplo:

   ```
   [ec2-user ~]$ sudo yum install -y ruby
   ```

1. Descargue el archivo RPM utilizando una herramienta como wget o curl. Por ejemplo:

   ```
   [ec2-user ~]$ wget https://s3.amazonaws.com/ec2-downloads/ec2-ami-tools.noarch.rpm
   ```

1. Ejecute el comando siguiente para verificar la firma del archivo RPM:

   ```
   [ec2-user ~]$ rpm -K ec2-ami-tools.noarch.rpm
   ```

   El comando anterior debería indicar que los hashes SHA1 y MD5 del archivo son `OK.` Si el comando indica que dichos hashes son `NOT OK`, utilice el siguiente comando para ver los hashes SHA1 y MD5 del encabezado del archivo:

   ```
   [ec2-user ~]$ rpm -Kv ec2-ami-tools.noarch.rpm
   ```

   A continuación, compare los hashes SHA1 y MD5 del encabezado del archivo con los siguientes hashes verificados de las herramientas de la AMI para confirmar la autenticidad del archivo:
   + SHA1 del encabezado: a1f662d6f25f69871104e6a62187fa4df508f880
   + MD5: 9faff05258064e2f7909b66142de6782

   Si los hashes SHA1 y MD5 del encabezado del archivo coinciden con los hashes verificados de las herramientas de la AMI, continúe con el siguiente paso.

1. Instale el RPM utilizando el siguiente comando:

   ```
   [ec2-user ~]$ sudo yum install ec2-ami-tools.noarch.rpm
   ```

1. Verifique la instalación de las herramientas de la AMI utilizando el comando [ec2-ami-tools-version](ami-tools-commands.md#ami-tools-version).

   ```
   [ec2-user ~]$ ec2-ami-tools-version
   ```
**nota**  
Si recibe un error de carga, como "cannot load such file -- ec2/amitools/version (LoadError)", complete el siguiente paso para añadir la ubicación de la instalación de las herramientas de la AMI a la ruta `RUBYLIB`.

1. (Opcional) Si recibió un error en el paso anterior, añada la ubicación de la instalación de las herramientas de la AMI a la ruta `RUBYLIB`.

   1. Ejecute el siguiente comando para determinar las rutas a añadir.

      ```
      [ec2-user ~]$ rpm -qil ec2-ami-tools | grep ec2/amitools/version
      /usr/lib/ruby/site_ruby/ec2/amitools/version.rb
      /usr/lib64/ruby/site_ruby/ec2/amitools/version.rb
      ```

      En el ejemplo anterior, el archivo que falta según el error de carga anterior se ubica en `/usr/lib/ruby/site_ruby` y en `/usr/lib64/ruby/site_ruby`.

   1. Añada las ubicaciones del paso anterior a la ruta `RUBYLIB`.

      ```
      [ec2-user ~]$ export RUBYLIB=$RUBYLIB:/usr/lib/ruby/site_ruby:/usr/lib64/ruby/site_ruby
      ```

   1. Verifique la instalación de las herramientas de la AMI utilizando el comando [ec2-ami-tools-version](ami-tools-commands.md#ami-tools-version).

      ```
      [ec2-user ~]$ ec2-ami-tools-version
      ```

**Para configurar las herramientas de la AMI con el archivo .zip**

1. Instale Ruby y descomprima el archivo utilizando el administrador de paquetes correspondiente de la distribución Linux, como, por ejemplo **apt-get**. Por ejemplo:

   ```
   [ec2-user ~]$ sudo apt-get update -y && sudo apt-get install -y ruby unzip
   ```

1. Descargue el archivo .zip utilizando una herramienta como wget o curl. Por ejemplo:

   ```
   [ec2-user ~]$ wget https://s3.amazonaws.com/ec2-downloads/ec2-ami-tools.zip
   ```

1. Descomprima los archivos en un directorio de instalación adecuado, como `/usr/local/ec2`.

   ```
   [ec2-user ~]$ sudo mkdir -p /usr/local/ec2
   $ sudo unzip ec2-ami-tools.zip -d /usr/local/ec2
   ```

   Observe que el archivo .zip contiene una carpeta ec2-ami-tools-*x*.*x*.*x*, donde *x*.*x*.*x* es el número de versión de las herramientas (por ejemplo, `ec2-ami-tools-1.5.7`).

1. Establezca la variable de entorno `EC2_AMITOOL_HOME` en el directorio de instalación de las herramientas. Por ejemplo:

   ```
   [ec2-user ~]$ export EC2_AMITOOL_HOME=/usr/local/ec2/ec2-ami-tools-x.x.x
   ```

1. Agregue las herramientas a la variable de entorno `PATH`. Por ejemplo:

   ```
   [ec2-user ~]$ export PATH=$EC2_AMITOOL_HOME/bin:$PATH
   ```

1. Puede verificar la instalación de las herramientas de la AMI utilizando el comando [ec2-ami-tools-version](ami-tools-commands.md#ami-tools-version).

   ```
   [ec2-user ~]$ ec2-ami-tools-version
   ```

## Gestionar certificados de firma
<a name="ami-tools-managing-certs"></a>

Ciertos comandos de las herramientas de la AMI requieren un certificado de firma (denominado también certificado X.509). Debe crear el certificado y, a continuación, cargarlo en AWS. Por ejemplo, puede utilizar una herramienta de terceros, como de OpenSSL, para crear el certificado.

**Para crear un certificado de firma**

1. Instale y configure OpenSSL.

1. Cree una clave privada mediante el comando `openssl genrsa` y guarde la clave resultante en un archivo `.pem`. Le recomendamos que cree una clave RSA de 2 048 o 4 096 bits.

   ```
   openssl genrsa 2048 > private-key.pem
   ```

1. Genere un certificado mediante el comando `openssl req`.

   ```
   openssl req -new -x509 -nodes -sha256 -days 365 -key private-key.pem -outform PEM -out certificate.pem
   ```

Para cargar el certificado a AWS, utilice el comando [upload-signing-certificate](https://docs.aws.amazon.com/cli/latest/reference/iam/upload-signing-certificate.html).

```
aws iam upload-signing-certificate --user-name user-name --certificate-body file://path/to/certificate.pem
```

Para ver la lista de certificados de un usuario, utilice el comando [list-signing-certificates](https://docs.aws.amazon.com/cli/latest/reference/iam/list-signing-certificates.html):

```
aws iam list-signing-certificates --user-name user-name
```

Para deshabilitar o volver a habilitar un certificado de firma para un usuario, utilice el comando [update-signing-certificate](https://docs.aws.amazon.com/cli/latest/reference/iam/update-signing-certificate.html). El siguiente comando deshabilita el certificado:

```
aws iam update-signing-certificate --certificate-id OFHPLP4ZULTHYPMSYEX7O4BEXAMPLE --status Inactive --user-name user-name
```

Para eliminar un certificado, utilice el comando [delete-signing-certificate](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-signing-certificate.html):

```
aws iam delete-signing-certificate --user-name user-name --certificate-id OFHPLP4ZULTHYPMSYEX7O4BEXAMPLE
```

# Referencia de las herramientas para las AMI de Amazon EC2
<a name="ami-tools-commands"></a>

Puede utilizar los comandos de las herramientas de la AMI para crear y administrar AMI de Linux basadas en Amazon S3. Para configurar las herramientas, consulte [Configuración de las herramientas de la AMI de Amazon EC2](set-up-ami-tools.md).

Para obtener información acerca de tus claves de acceso, consulte [Managing access keys for IAM users](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html) (Administración de las claves de acceso para usuarios de IAM) en la *Guía del usuario de IAM*.

**Topics**
+ [ec2-ami-tools-version](#ami-tools-version)
+ [ec2-bundle-image](#ami-bundle-image)
+ [ec2-bundle-vol](#ami-bundle-vol)
+ [ec2-delete-bundle](#ami-delete-bundle)
+ [ec2-download-bundle](#ami-download-bundle)
+ [ec2-migrate-manifest](#ami-migrate-manifest)
+ [ec2-unbundle](#ami-unbundle)
+ [ec2-upload-bundle](#ami-upload-bundle)
+ [Opciones comunes de las herramientas para AMI](#common-args-ami)

## ec2-ami-tools-version
<a name="ami-tools-version"></a>

### Descripción
<a name="ami-tools-version-description"></a>

Describe la versión de las herramientas para AMI.

### Sintaxis
<a name="ami-tools-version-request"></a>

**ec2-ami-tools-version**

### Output
<a name="ami-tools-version-output"></a>

La información de la versión.

### Ejemplo
<a name="ami-tools-version-response"></a>

El comando de este ejemplo muestra la información de versión de las herramientas para AMI que está usando.

```
[ec2-user ~]$ ec2-ami-tools-version
1.5.2 20071010
```

## ec2-bundle-image
<a name="ami-bundle-image"></a>

### Descripción
<a name="bundle-image-description"></a>

Crea una AMI de Linux basada en Amazon S3 a partir de una imagen del sistema operativo creada en un archivo de bucle invertido.

### Sintaxis
<a name="bundle-image-request"></a>

****ec2-bundle-image** -c *path* -k *path* -u *account* -i *path* [-d *path*] [--ec2cert *path*] [-r *architecture*] [--productcodes *code1*,*code2*,...] [-B *mapping*] [-p *prefix*]** 

### Opciones
<a name="bundle-image-parameters"></a>

`-c, --cert` *path*  
El archivo RSA de certificado de clave pública en código PEM del usuario.  
Obligatorio: sí

`-k, --privatekey` *path*  
La ruta de un archivo de clave RSA en código PEM. Deberá especificar esta clave para desempaquetar este paquete, por lo que conviene guardarla en un lugar seguro. Observe que la clave no tiene que estar registrada en la cuenta de AWS.  
Obligatorio: sí

`-u, --user ` *account*  
El ID de la cuenta de AWS del usuario sin guiones.  
Obligatorio: sí

`-i, --image` *path*  
La ruta de la imagen que se agrupa.  
Obligatorio: sí

`-d, --destination` *path*  
El directorio en el que se crea la agrupación.  
Valor predeterminado: `/tmp`  
Obligatorio: no

`--ec2cert` *path*  
La ruta del certificado de clave pública Amazon EC2 X.509 utilizado para cifrar el manifiesto de la imagen.  
Las regiones `us-gov-west-1` y `cn-north-1` usan un certificado de clave pública no predeterminado y la ruta de dicho certificado debe especificarse con esta opción. La ruta del certificado varía según el método de instalación de las herramientas para AMI. En Amazon Linux, los certificados se encuentran en `/opt/aws/amitools/ec2/etc/ec2/amitools/`. Si ha instalado las herramientas para AMI desde el archivo ZIP o RPM de [Configuración de las herramientas de la AMI de Amazon EC2](set-up-ami-tools.md), los certificados se encuentran en `$EC2_AMITOOL_HOME/etc/ec2/amitools/`.  
Obligatorio: solo para las regiones `us-gov-west-1` y `cn-north-1`.

`-r, --arch` *architecture*  
Arquitectura de la imagen. Si no proporciona la arquitectura en la línea de comandos, se le pedirá cuando se inicie la agrupación.  
Valores válidos: `i386` \$1 `x86_64`  
Requerido: No

`--productcodes` *code1,code2,...*  
Los códigos de producto que se adjuntan a la imagen en el momento del registro, separados por comas.  
Requerido: No

`-B, --block-device-mapping` *mapping*  
Define el modo en que los dispositivos de bloques se exponen a una instancia de esta AMI si el tipo de instancia admite el dispositivo especificado.  
Especifique una lista separada por comas de pares clave-valor, donde cada clave es un nombre virtual y cada valor es el nombre del dispositivo correspondiente. Entre los nombres virtuales se incluyen los siguientes:  
+ `ami`: el dispositivo del sistema de archivos raíz como lo ve la instancia
+ `root`: el dispositivo del sistema de archivos raíz como lo ve el kernel
+ `swap`: el dispositivo de intercambio como lo ve la instancia
+ `ephemeralN`: el volumen N-simo del almacén de instancias
Requerido: No

`-p, --prefix` *prefix*  
El prefijo del nombre de archivo para los archivos de AMI agrupados.  
Valor predeterminado: el nombre del archivo de imagen. Por ejemplo, si la ruta de la imagen es `/var/spool/my-image/version-2/debian.img`, el prefijo predeterminado es `debian.img`.  
Requerido: No

`--kernel` *kernel\$1id*  
Obsoleto. Use [register-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) para establecer el kernel.  
Requerido: No

`--ramdisk` *ramdisk\$1id*  
Obsoleto. Use [register-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) para establecer el disco RAM si se requiere.  
Obligatorio: no

### Output
<a name="bundle-image-output"></a>

Mensajes de estado que describen las fases y los estados del proceso de agrupación.

### Ejemplo
<a name="bundle-image-response"></a>

En este ejemplo se crea una AMI agrupada a partir de una imagen del sistema operativo que se creó en un archivo de bucle invertido.

```
[ec2-user ~]$ ec2-bundle-image -k pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -c cert-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -u 111122223333 -i image.img -d bundled/ -r x86_64
Please specify a value for arch [i386]: 
Bundling image file...
Splitting bundled/image.gz.crypt...
Created image.part.00
Created image.part.01
Created image.part.02
Created image.part.03
Created image.part.04
Created image.part.05
Created image.part.06
Created image.part.07
Created image.part.08
Created image.part.09
Created image.part.10
Created image.part.11
Created image.part.12
Created image.part.13
Created image.part.14
Generating digests for each part...
Digests generated.
Creating bundle manifest...
ec2-bundle-image complete.
```

## ec2-bundle-vol
<a name="ami-bundle-vol"></a>

### Descripción
<a name="bundle-vol-description"></a>

Crea una AMI de Linux basada en Amazon S3 comprimiendo, cifrando y firmando una copia del volumen raíz para la instancia.

Amazon EC2 intenta heredar los códigos de producto, la configuración del kernel, la configuración del disco RAM y el mapeo de los dispositivos de bloques de la instancia.

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`.

Para obtener más información, consulte [Creación de una AMI basada en Amazon S3](creating-an-ami-instance-store.md).

### Sintaxis
<a name="bundle-vol-request"></a>

****ec2-bundle-vol** -c *path* -k *path* -u *account* [-d *path*] [--ec2cert *path*] [-r *architecture*] [--productcodes *code1*,*code2*,...] [-B *mapping*] [--all] [-e *directory1*,*directory2*,...] [-i *file1*,*file2*,...] [--no-filter] [-p *prefix*] [-s *size*] [--[no-]inherit] [-v *volume*] [-P *type*] [-S *script*] [--fstab *path*] [--generate-fstab] [--grub-config *path*]** 

### Opciones
<a name="bundle-vol-parameters"></a>

`-c, --cert` *path*  
El archivo RSA de certificado de clave pública en código PEM del usuario.  
Obligatorio: sí

`-k, --privatekey ` *path*   
La ruta del archivo de clave RSA en código PEM del usuario.  
Obligatorio: sí

`-u, --user` *account*  
El ID de la cuenta de AWS del usuario sin guiones.  
Obligatorio: sí

`-d, --destination` *destination*  
El directorio en el que se crea la agrupación.  
Valor predeterminado: `/tmp`  
Obligatorio: no

`--ec2cert` *path*  
La ruta del certificado de clave pública Amazon EC2 X.509 utilizado para cifrar el manifiesto de la imagen.  
Las regiones `us-gov-west-1` y `cn-north-1` usan un certificado de clave pública no predeterminado y la ruta de dicho certificado debe especificarse con esta opción. La ruta del certificado varía según el método de instalación de las herramientas para AMI. En Amazon Linux, los certificados se encuentran en `/opt/aws/amitools/ec2/etc/ec2/amitools/`. Si ha instalado las herramientas para AMI desde el archivo ZIP o RPM de [Configuración de las herramientas de la AMI de Amazon EC2](set-up-ami-tools.md), los certificados se encuentran en `$EC2_AMITOOL_HOME/etc/ec2/amitools/`.  
Obligatorio: solo para las regiones `us-gov-west-1` y `cn-north-1`.

`-r, --arch ` *architecture*  
La arquitectura de la imagen. Si no proporciona la arquitectura en la línea de comandos, se le pedirá que lo haga cuando se inicie la agrupación.  
Valores válidos: `i386` \$1 `x86_64`  
Requerido: No

`--productcodes` *code1,code2,...*  
Los códigos de producto que se adjuntan a la imagen en el momento del registro, separados por comas.  
Requerido: No

`-B, --block-device-mapping` *mapping*  
Define el modo en que los dispositivos de bloques se exponen a una instancia de esta AMI si el tipo de instancia admite el dispositivo especificado.  
Especifique una lista separada por comas de pares clave-valor, donde cada clave es un nombre virtual y cada valor es el nombre del dispositivo correspondiente. Entre los nombres virtuales se incluyen los siguientes:  
+ `ami`: el dispositivo del sistema de archivos raíz como lo ve la instancia
+ `root`: el dispositivo del sistema de archivos raíz como lo ve el kernel
+ `swap`: el dispositivo de intercambio como lo ve la instancia
+ `ephemeralN`: el volumen N-simo del almacén de instancias
Requerido: No

`-a, --all`  
Agrupe todos los directorios, incluidos los que se encuentran en sistemas de archivos montados de forma remota.  
Requerido: No

`-e, --exclude ` *directory1,directory2,...*  
Una lista de las rutas de directorio absolutas y los archivos que se excluyen de la operación de agrupación. Este parámetro sobrescribe la opción `--all`. Cuando se especifica la exclusión, los directorios y subdirectorios enumerados con el parámetro no se agruparán con el volumen.  
Requerido: No

`-i, --include ` *file1,file2,...*  
Una lista de los archivos que se incluirán en la operación de agrupación. De lo contrario, los archivos especificados se excluirían de la AMI porque podrían contener información confidencial.  
Requerido: No

`--no-filter`  
Si se especifica, no excluiremos los archivos de la AMI porque podrían contener información confidencial.  
Requerido: No

`-p, --prefix ` *prefix*  
El prefijo del nombre de archivo para los archivos de AMI agrupados.  
Valor predeterminado: `image`  
Requerido: No

`-s, --size` *size*  
El tamaño, en MB (1024 \$1 1024 bytes), del archivo de imagen que se va a crear. El tamaño máximo es 10.240 MB.   
Predeterminado: 10240  
Requerido: No

`--[no-]inherit`  
Indica si la imagen debería heredar los metadatos de la instancia (la opción predeterminada es heredar). La agrupación da error si habilita `--inherit` pero los metadatos de la instancia no son accesibles.  
Requerido: No

`-v, --volume ` *volume*  
La ruta absoluta del volumen montado a partir del que se crea la agrupación.  
Opción predeterminada: el directorio raíz (/)  
Requerido: No

`-P, --partition` *type*  
Indica si la imagen de disco debería usar una tabla de partición. Si no especifica un tipo de tabla de partición, la opción predeterminada es el tipo usado en el dispositivo de bloques del volumen, si se aplica; si no, la opción predeterminada es `gpt`.  
Valores válidos: `mbr` \$1 `gpt` \$1 `none`  
Requerido: No

`-S, --script` *script*  
Un script de personalización que se ejecuta justo antes de la agrupación. El script debe esperar un argumento único, el punto de montaje del volumen.  
Requerido: No

`--fstab` *path*  
La ruta de fstab que se agrupa en la imagen. Si no se especifica, Amazon EC2 agrupa /etc/fstab.  
Requerido: No

`--generate-fstab`  
Agrupa el volumen usando fstab proporcionado por Amazon EC2.  
Requerido: No

`--grub-config`  
La ruta de un archivo de configuración de grub alternativo para agrupar en la imagen. De manera predeterminada, `ec2-bundle-vol` espera que `/boot/grub/menu.lst` o `/boot/grub/grub.conf` exista en la imagen clonada. Esta opción permite especificar la ruta de un archivo de configuración de grub alternativo que después se copiará sobre los predeterminados (si existen).  
Requerido: No

`--kernel` *kernel\$1id*  
Obsoleto. Use [register-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) para establecer el kernel.  
Requerido: No

`--ramdisk`*ramdisk\$1id*  
Obsoleto. Use [register-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/register-image.html) para establecer el disco RAM si se requiere.  
Obligatorio: no

### Output
<a name="bundle-vol-output"></a>

Mensajes de estado que describen las fases y los estados de la agrupación.

### Ejemplo
<a name="bundle-vol-response"></a>

En este ejemplo se crea una AMI agrupada comprimiendo, cifrando y firmando una instantánea del sistema de archivos raíz del equipo local. 

```
[ec2-user ~]$ ec2-bundle-vol -d /mnt -k pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -c cert-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -u 111122223333 -r x86_64
  Copying / into the image file /mnt/image...
  Excluding:
       sys
       dev/shm
       proc
       dev/pts
       proc/sys/fs/binfmt_misc
       dev
       media
       mnt
       proc
       sys
       tmp/image
       mnt/img-mnt
  1+0 records in
  1+0 records out
  mke2fs 1.38 (30-Jun-2005)
  warning: 256 blocks unused.

  Splitting /mnt/image.gz.crypt...
  Created image.part.00
  Created image.part.01
  Created image.part.02
  Created image.part.03
  ...
  Created image.part.22
  Created image.part.23
  Generating digests for each part...
  Digests generated.
  Creating bundle manifest...
  Bundle Volume complete.
```

## ec2-delete-bundle
<a name="ami-delete-bundle"></a>

### Descripción
<a name="delete-bundle-description"></a>

Elimina la agrupación especificada del almacenamiento de Amazon S3. Después de eliminar una agrupación, no podrá iniciar instancias de la AMI correspondiente.

### Sintaxis
<a name="delete-bundle-request"></a>

****ec2-delete-bundle** -b *bucket* -a *access\$1key\$1id* -s *secret\$1access\$1key* [-t *token*] [--url *url*] [--region *region*] [--sigv *version*] [-m *path*] [-p *prefix*] [--clear] [--retry] [-y]** 

### Opciones
<a name="delete-bundle-parameters"></a>

`-b, --bucket `*bucket*  
El nombre del bucket de Amazon S3 que contienen la AMI agrupada, seguido de un prefijo de ruta delimitado por '/' opcional  
Obligatorio: sí

`-a, --access-key` *access\$1key\$1id*  
El ID de la clave de acceso de AWS.  
Obligatorio: sí

`-s, --secret-key` *secret\$1access\$1key*  
La clave de acceso secreta de AWS.  
Obligatorio: sí

`-t, --delegation-token` *token*  
El token de delegación que se pasa junto con la solicitud de AWS. Para obtener más información, consulte [Credenciales de seguridad temporales](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) en la *Guía del usuario de IAM*.  
Obligatorio: solo cuando se utilizan credenciales de seguridad temporales.  
Valor predeterminado: el valor de la variable de entorno `AWS_DELEGATION_TOKEN` (si se ha establecido).

`--region`*region*  
La región que se usa en la firma de la solicitud.  
Valor predeterminado: `us-east-1`  
Obligatorio: obligatorio si se usa la versión 4 de firma

`--sigv`*version*  
La versión de la firma que se usará cuando se firme la solicitud.  
Valores válidos: `2` \$1 `4`  
Valor predeterminado: `4`  
Requerido: No

`-m, --manifest`*path*  
La ruta del archivo de manifiesto.  
Obligatorio: debe especificar `--prefix` o `--manifest`.

`-p, --prefix` *prefix*  
El prefijo del nombre de archivo de la AMI asociada. Proporcione el prefijo completo. Por ejemplo, si el prefijo es image.img, use `-p image.img` y no `-p image`.  
Obligatorio: debe especificar `--prefix` o `--manifest`.

`--clear`  
Elimina el bucket de Amazon S3 si está vacío después de eliminar la agrupación especificada.  
Requerido: No

`--retry`  
Reintenta automáticamente en todos los errores de Amazon S3, hasta cinco veces por operación.  
Requerido: No

`-y, --yes`  
Supone automáticamente que la respuesta a todas las peticiones es afirmativa.  
Obligatorio: no

### Output
<a name="delete-bundle-output"></a>

Amazon EC2 muestra mensajes de estado que indican las fases y el estado del proceso de eliminación.

### Ejemplo
<a name="delete-bundle-response"></a>

En este ejemplo se elimina una agrupación de Amazon S3.

```
[ec2-user ~]$ ec2-delete-bundle -b amzn-s3-demo-bucket -a your_access_key_id -s your_secret_access_key
Deleting files:
amzn-s3-demo-bucket/image.manifest.xml
amzn-s3-demo-bucket/image.part.00
amzn-s3-demo-bucket/image.part.01
amzn-s3-demo-bucket/image.part.02
amzn-s3-demo-bucket/image.part.03
amzn-s3-demo-bucket/image.part.04
amzn-s3-demo-bucket/image.part.05
amzn-s3-demo-bucket/image.part.06
Continue? [y/n]
y
Deleted amzn-s3-demo-bucket/image.manifest.xml
Deleted amzn-s3-demo-bucket/image.part.00
Deleted amzn-s3-demo-bucket/image.part.01
Deleted amzn-s3-demo-bucket/image.part.02
Deleted amzn-s3-demo-bucket/image.part.03
Deleted amzn-s3-demo-bucket/image.part.04
Deleted amzn-s3-demo-bucket/image.part.05
Deleted amzn-s3-demo-bucket/image.part.06
ec2-delete-bundle complete.
```

## ec2-download-bundle
<a name="ami-download-bundle"></a>

### Descripción
<a name="download-bundle-description"></a>

Descarga las AMI de Linux basadas en Amazon S3 especificadas del almacén de Amazon S3.

### Sintaxis
<a name="download-bundle-request"></a>

****ec2-download-bundle** -b *bucket* -a *access\$1key\$1id* -s *secret\$1access\$1key* -k *path* [--url *url*] [--region *region*] [--sigv *version*] [-m *file*] [-p *prefix*] [-d *directory*] [--retry]** 

### Opciones
<a name="download-bundle-parameters"></a>

`-b, --bucket` *bucket*  
El nombre del bucket de Amazon S3 en el que se encuentra la agrupación, seguido de un prefijo de ruta delimitado por '/' opcional.  
Obligatorio: sí

`-a, --access-key` *access\$1key\$1id*  
El ID de la clave de acceso de AWS.  
Obligatorio: sí

`-s, --secret-key` *secret\$1access\$1key*  
La clave de acceso secreta de AWS.  
Obligatorio: sí

`-k, --privatekey` *path*  
La clave privada usada para descifrar el manifiesto.  
Obligatorio: sí

`--url` *url*  
La URL del servicio Amazon S3.  
Valor predeterminado: `https://s3.amazonaws.com/`  
Requerido: No

`--region` *region*  
La región que se usa en la firma de la solicitud.  
Valor predeterminado: `us-east-1`  
Obligatorio: obligatorio si se usa la versión 4 de firma

`--sigv` *version*  
La versión de la firma que se usará cuando se firme la solicitud.  
Valores válidos: `2` \$1 `4`  
Valor predeterminado: `4`  
Requerido: No

`-m, --manifest` *file*  
El nombre del archivo de manifiesto (sin la ruta). Recomendamos que especifique el manifiesto (`-m`) o un prefijo (`-p`).  
Requerido: No

`-p, --prefix ` *prefix*  
El prefijo de nombre de archivo de los archivos de la AMI agrupados.  
Valor predeterminado: `image`  
Requerido: No

`-d, --directory ` *directory*  
El directorio donde se guarda la agrupación descargada. El directorio debe existir.  
Valor predeterminado: el directorio de trabajo actual.  
Requerido: No

 `--retry`   
Reintenta automáticamente en todos los errores de Amazon S3, hasta cinco veces por operación.  
Obligatorio: no

### Output
<a name="download-bundle-output"></a>

Se muestran los mensajes de estado que indican las distintas fases del proceso de descarga.

### Ejemplo
<a name="download-bundle-response"></a>

En este ejemplo se crea el directorio `bundled` (usando el comando de Linux **mkdir**) y se descarga la agrupación desde el bucket de Amazon S3 `amzn-s3-demo-bucket`.

```
[ec2-user ~]$ mkdir bundled
[ec2-user ~]$ ec2-download-bundle -b amzn-s3-demo-bucket/bundles/bundle_name -m image.manifest.xml -a your_access_key_id -s your_secret_access_key -k pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -d mybundle
Downloading manifest image.manifest.xml from amzn-s3-demo-bucket to mybundle/image.manifest.xml ...
Downloading part image.part.00 from amzn-s3-demo-bucket/bundles/bundle_name to mybundle/image.part.00 ...
Downloaded image.part.00 from amzn-s3-demo-bucket
Downloading part image.part.01 from amzn-s3-demo-bucket/bundles/bundle_name to mybundle/image.part.01 ...
Downloaded image.part.01 from amzn-s3-demo-bucket
Downloading part image.part.02 from amzn-s3-demo-bucket/bundles/bundle_name to mybundle/image.part.02 ...
Downloaded image.part.02 from amzn-s3-demo-bucket
Downloading part image.part.03 from amzn-s3-demo-bucket/bundles/bundle_name to mybundle/image.part.03 ...
Downloaded image.part.03 from amzn-s3-demo-bucket
Downloading part image.part.04 from amzn-s3-demo-bucket/bundles/bundle_name to mybundle/image.part.04 ...
Downloaded image.part.04 from amzn-s3-demo-bucket
Downloading part image.part.05 from amzn-s3-demo-bucket/bundles/bundle_name to mybundle/image.part.05 ...
Downloaded image.part.05 from amzn-s3-demo-bucket
Downloading part image.part.06 from amzn-s3-demo-bucket/bundles/bundle_name to mybundle/image.part.06 ...
Downloaded image.part.06 from amzn-s3-demo-bucket
```

## ec2-migrate-manifest
<a name="ami-migrate-manifest"></a>

### Descripción
<a name="migrate-manifest-description"></a>

Modifica una AMI de Linux basada en Amazon S3 (por ejemplo, su certificado, kernel y disco RAM) para que admita una región diferente.

### Sintaxis
<a name="migrate-manifest-request"></a>

****ec2-migrate-manifest** -c *path* -k *path* -m *path* \$1(-a *access\$1key\$1id* -s *secret\$1access\$1key* --region *region*) \$1 (--no-mapping)\$1 [--ec2cert *ec2\$1cert\$1path*] [--kernel *kernel-id*] [--ramdisk *ramdisk\$1id*]** 

### Opciones
<a name="migrate-manifest-parameters"></a>

`-c, --cert` *path*  
El archivo RSA de certificado de clave pública en código PEM del usuario.  
Obligatorio: sí

`-k, --privatekey` *path*  
La ruta del archivo de clave RSA en código PEM del usuario.  
Obligatorio: sí

`--manifest` *path*  
La ruta del archivo de manifiesto.  
Obligatorio: sí

`-a, --access-key` *access\$1key\$1id*  
El ID de la clave de acceso de AWS.  
Obligatorio: obligatorio si se utiliza el mapeo automático.

`-s, --secret-key ` *secret\$1access\$1key*  
La clave de acceso secreta de AWS.  
Obligatorio: obligatorio si se utiliza el mapeo automático.

`--region` *region*  
La región que se busca en el archivo de mapeo.  
Obligatorio: obligatorio si se utiliza el mapeo automático.

`--no-mapping`  
Deshabilita el mapeo automático de los kernels y discos RAM.  
 Durante la migración, Amazon EC2 remplaza el kernel y el disco RAM en el archivo de manifiesto con un kernel y un disco RAM diseñado para la región de destino. Salvo que se proporcione el parámetro `--no-mapping`, `ec2-migrate-bundle` puede usar las operaciones `DescribeRegions` y `DescribeImages` para llevar a cabo mapeos automáticos.   
Obligatorio: obligatorio si no proporciona las opciones `-a`, `-s` y `--region` usadas para el mapeo automático.

`--ec2cert` *path*  
La ruta del certificado de clave pública Amazon EC2 X.509 utilizado para cifrar el manifiesto de la imagen.  
Las regiones `us-gov-west-1` y `cn-north-1` usan un certificado de clave pública no predeterminado y la ruta de dicho certificado debe especificarse con esta opción. La ruta del certificado varía según el método de instalación de las herramientas para AMI. En Amazon Linux, los certificados se encuentran en `/opt/aws/amitools/ec2/etc/ec2/amitools/`. Si ha instalado las herramientas para AMI del archivo ZIP en [Configuración de las herramientas de la AMI de Amazon EC2](set-up-ami-tools.md), los certificados se encuentran en `$EC2_AMITOOL_HOME/etc/ec2/amitools/`.  
Obligatorio: solo para las regiones `us-gov-west-1` y `cn-north-1`.

`--kernel` *kernel\$1id*  
El ID del kernel que se va seleccionar.  
Recomendamos que use PV-GRUB en lugar de kernels y discos RAM. Para obtener más información, consulte [User provided kernels](https://docs.aws.amazon.com/linux/al2/ug/UserProvidedKernels.html) en la *Guía del usuario de Amazon Linux 2*.
Obligatorio: no

`--ramdisk` *ramdisk\$1id*  
El ID del disco RAM para seleccionar.  
Recomendamos que use PV-GRUB en lugar de kernels y discos RAM. Para obtener más información, consulte [User provided kernels](https://docs.aws.amazon.com/linux/al2/ug/UserProvidedKernels.html) en la *Guía del usuario de Amazon Linux 2*.
Obligatorio: no

### Output
<a name="migrate-manifest-output"></a>

Mensajes de estado que describen las fases y los estados del proceso de agrupación.

### Ejemplo
<a name="migrate-manifest-response"></a>

En este ejemplo se copia la AMI especificada en el manifiesto `my-ami.manifest.xml` de EE. UU. en la UE.

```
[ec2-user ~]$ ec2-migrate-manifest --manifest my-ami.manifest.xml --cert cert-HKZYKTAIG2ECMXYIBH3HXV4ZBZQ55CLO.pem --privatekey pk-HKZYKTAIG2ECMXYIBH3HXV4ZBZQ55CLO.pem --region eu-west-1 

Backing up manifest...
Successfully migrated my-ami.manifest.xml It is now suitable for use in eu-west-1.
```

## ec2-unbundle
<a name="ami-unbundle"></a>

### Descripción
<a name="unbundle-description"></a>

Crea de nuevo la agrupación desde una AMI de Linux basada en Amazon S3.

### Sintaxis
<a name="unbundle-request"></a>

****ec2-unbundle** -k *path* -m *path* [-s *source\$1directory*] [-d *destination\$1directory*]** 

### Opciones
<a name="unbundle-parameters"></a>

`-k, --privatekey` *path*  
La ruta del archivo de clave RSA en código PEM.  
Obligatorio: sí

`-m, --manifest` *path*  
La ruta del archivo de manifiesto.  
Obligatorio: sí

`-s, --source` *source\$1directory*  
El directorio que contiene la agrupación.  
Valor predeterminado: el directorio actual.  
Requerido: No

`-d, --destination` *destination\$1directory*  
El directorio donde se desagrupa la AMI. El directorio de destino debe existir.   
Valor predeterminado: el directorio actual.  
Obligatorio: no

### Ejemplo
<a name="unbundle-response"></a>

En este ejemplo de Linux y UNIX se desagrupa la AMI especificada en el archivo `image.manifest.xml`.

```
[ec2-user ~]$ mkdir unbundled
$ ec2-unbundle -m mybundle/image.manifest.xml -k pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -s mybundle -d unbundled
$ ls -l unbundled
total 1025008
-rw-r--r-- 1 root root 1048578048 Aug 25 23:46 image.img
```

### Output
<a name="unbundle-output"></a>

Se muestran los mensajes de estado que indican las distintas fases del proceso de desagrupación.

## ec2-upload-bundle
<a name="ami-upload-bundle"></a>

### Descripción
<a name="upload-bundle-description"></a>

Carga en Amazon S3 el paquete de una AMI de Linux basada en Amazon S3 y establece las listas de control de acceso (ACL) adecuadas en los objetos cargados. Para obtener más información, consulte [Creación de una AMI basada en Amazon S3](creating-an-ami-instance-store.md).

**nota**  
Para cargar objetos en un bucket de S3 para la AMI de Linux basada en Amazon S3, 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 los objetos y desactivación de las ACL del bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html).

### Sintaxis
<a name="upload-bundle-request"></a>

****ec2-upload-bundle** -b *bucket* -a *access\$1key\$1id* -s *secret\$1access\$1key* [-t *token*] -m *path* [--url *url*] [--region *region*] [--sigv *version*] [--acl *acl*] [-d *directory*] [--part *part*] [--retry] [--skipmanifest]** 

### Opciones
<a name="upload-bundle-parameters"></a>

`-b, --bucket` *bucket*  
El nombre del bucket de Amazon S3 donde se almacena la agrupación, seguido de un prefijo de ruta delimitado por '/' opcional. Si el bucket no existe, se crea si se dispone del nombre del bucket. Además, si el bucket no existe y la versión de las herramientas de AMI es la 1.5.18 o posterior, este comando establece las ACL del bucket.  
Obligatorio: sí

`-a, --access-key` *access\$1key\$1id*  
El ID de la clave de acceso de AWS.  
Obligatorio: sí

`-s, --secret-key` *secret\$1access\$1key*  
La clave de acceso secreta de AWS.  
Obligatorio: sí

`-t, --delegation-token` *token*  
El token de delegación que se pasa junto con la solicitud de AWS. Para obtener más información, consulte [Credenciales de seguridad temporales](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) en la *Guía del usuario de IAM*.  
Obligatorio: solo cuando se utilizan credenciales de seguridad temporales.  
Valor predeterminado: el valor de la variable de entorno `AWS_DELEGATION_TOKEN` (si se ha establecido).

`-m, --manifest` *path*  
La ruta del archivo de manifiesto. El archivo de manifiesto se crea durante el proceso de agrupación y se puede encontrar en el directorio que contiene la agrupación.  
Obligatorio: sí

`--url` *url*  
Obsoleto. Use la opción `--region` en su lugar salvo que el bucket esté restringido a la ubicación `EU` (y no `eu-west-1`). La marca `--location` es el único modo de controlar esa limitación de ubicación específica.  
La URL de servicio del punto de conexión de Amazon S3  
Valor predeterminado: `https://s3.amazonaws.com/`  
Requerido: No

`--region` *region*  
La región que se va a usar en la firma de la solicitud del bucket de destino de S3.  
+ Si el bucket no existe y no especifica una región, la herramienta crea el bucket sin una limitación de ubicación (en `us-east-1`).
+ Si el bucket no existe y especifica una región, la herramienta crea el bucket en la región especificada.
+ Si el bucket existe y no especifica una región, la herramienta usa la ubicación del bucket.
+ Si el bucket existe y especifica `us-east-1` como región, la herramienta usa la ubicación del bucket sin ningún mensaje de error y cualquier archivo existente que coincida se sobrescribe.
+ Si el bucket existe y especifica una región (distinta de `us-east-1`) que no coincida con la ubicación real del bucket, la herramienta sale sin dar error.
Si el bucket esté restringido a la ubicación `EU` (y no `eu-west-1`), use la marca `--location` en su lugar. La marca `--location` es el único modo de controlar esa limitación de ubicación específica.  
Valor predeterminado: `us-east-1`  
Obligatorio: obligatorio si se usa la versión 4 de firma

`--sigv` *version*  
La versión de la firma que se usará cuando se firme la solicitud.  
Valores válidos: `2` \$1 `4`  
Valor predeterminado: `4`  
Requerido: No

`--acl` *acl*  
La política de la lista de control de acceso de la imagen agrupada.  
Valores válidos: `public-read` \$1 `aws-exec-read`  
Valor predeterminado: `aws-exec-read`  
Requerido: No

`-d, --directory` *directory*  
El directorio que contiene las partes de AMI agrupadas.  
Valor predeterminado: el directorio que contiene el archivo de manifiesto (consulte la opción `-m`).  
Requerido: No

`--part` *part*  
Comienza a cargar la parte especificada y todas las partes subsecuentes. Por ejemplo, `--part 04`.  
Requerido: No

`--retry`  
Reintenta automáticamente en todos los errores de Amazon S3, hasta cinco veces por operación.  
Requerido: No

`--skipmanifest`  
No carga el manifiesto.  
Requerido: No

`--location` *location*  
Obsoleto. Use la opción `--region` en su lugar, salvo que el bucket esté restringido a la ubicación `EU` (y no `eu-west-1`). La marca `--location` es el único modo de controlar esa limitación de ubicación específica.  
La restricción de ubicación del bucket de Amazon S3 de destino. Si el bucket existe y especifica una ubicación que no coincide con la ubicación real del bucket, la herramienta sale sin dar error. Si el bucket existe y no especifica una ubicación, la herramienta usa la ubicación del bucket. Si el bucket no existe y especifica una ubicación, la herramienta crea el bucket en la ubicación especificada. Si el bucket no existe y no especifica una ubicación, la herramienta crea el bucket sin una restricción de ubicación (en `us-east-1`).   
Valor predeterminado: si se especifica `--region`, la ubicación se establece en esa región especificada. Si no se especifica `--region`, la ubicación predeterminada es `us-east-1`.  
Obligatorio: no

### Output
<a name="upload-bundle-output"></a>

Amazon EC2 muestra mensajes de estado que indican las fases y el estado del proceso de carga.

### Ejemplo
<a name="upload-bundle-response"></a>

En este ejemplo se carga la agrupación especificada en el manifiesto `image.manifest.xml`.

```
[ec2-user ~]$ ec2-upload-bundle -b amzn-s3-demo-bucket/bundles/bundle_name -m image.manifest.xml -a your_access_key_id -s your_secret_access_key
Creating bucket...
Uploading bundled image parts to the S3 bucket amzn-s3-demo-bucket ...
Uploaded image.part.00
Uploaded image.part.01
Uploaded image.part.02
Uploaded image.part.03
Uploaded image.part.04
Uploaded image.part.05
Uploaded image.part.06
Uploaded image.part.07
Uploaded image.part.08
Uploaded image.part.09
Uploaded image.part.10
Uploaded image.part.11
Uploaded image.part.12
Uploaded image.part.13
Uploaded image.part.14
Uploading manifest ...
Uploaded manifest.
Bundle upload completed.
```

## Opciones comunes de las herramientas para AMI
<a name="common-args-ami"></a>

La mayoría de las herramientas para AMI aceptan los siguientes parámetros opcionales.

`--help, -h`  
Muestra el mensaje de ayuda.

`--version`  
Muestra la versión y el aviso de copyright.

`--manual`  
Muestra la entrada manual.

`--batch`  
Se ejecuta en modo por lotes y se suspenden las preguntas interactivas.

`--debug`  
Muestra información que puede ser útil para la solución de problemas.

# Conversión de la AMI basada en Amazon S3 a una AMI basada en EBS
<a name="Using_ConvertingS3toEBS"></a>

Puede convertir una AMI de Linux basada en Amazon S3 de la que sea propietario a una AMI de Linux basada en Amazon EBS. 

**importante**  
No puede convertir una AMI que no le pertenece.

**Conversión de una AMI basada en Amazon S3 a una AMI basada en Amazon EBS.**

1. Lance una instancia de Amazon Linux desde una AMI respaldada por Amazon EBS. Para obtener más información, consulte [Inicialización de una instancia de EC2 mediante el asistente de inicialización de instancias de la consola](ec2-launch-instance-wizard.md). Las instancias de Amazon Linux tienen las herramientas de la AMI y la AWS CLI preinstaladas.

1. Cargue la clave privada X.509 que utilizó para agrupar la AMI basada en Amazon S3 a la instancia. Esta clave se utiliza para garantizar que solo usted y Amazon EC2 pueden obtener acceso a la AMI.

   1. Cree un directorio temporal en la instancia para la clave privada X.509 del modo siguiente:

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

   1. Copie la clave privada X.509 del equipo en el directorio `/tmp/cert` de la instancia utilizando una herramienta de copia segura como [scp](linux-file-transfer-scp.md). El parámetro *my-private-key* del siguiente comando es la clave privada que utiliza para conectarse a la instancia con SSH. Por ejemplo:

      ```
      you@your_computer:~ $ scp -i my-private-key.pem /path/to/pk-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
      ```

1. Configurar las variables de entorno para usar el AWS CLI. Para obtener más información, consulte [Environment variables](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html).

   1. (Recomendado) Configure las variables de entorno para la clave de acceso, la clave secreta y el token de acceso de AWS.

      ```
      [ec2-user ~]$ export AWS_ACCESS_KEY_ID=your_access_key_id
      [ec2-user ~]$ export AWS_SECRET_ACCESS_KEY=your_secret_access_key
      [ec2-user ~]$ export AWS_SESSION_TOKEN=your_session_token
      ```

   1. Configure las variables de entorno para la clave de acceso y la clave secreta de AWS.

      ```
      [ec2-user ~]$ export AWS_ACCESS_KEY_ID=your_access_key_id
      [ec2-user ~]$ export AWS_SECRET_ACCESS_KEY=your_secret_access_key
      ```

1. Prepare un volumen de Amazon Elastic Block Store (Amazon EBS) para la nueva AMI.

   1. Cree un volumen de EBS vacío en la misma zona de disponibilidad que la instancia con el comando [create-volume](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-volume.html). Observe el ID de volumen en el resultado del comando.
**importante**  
 Este volumen de EBS debe tener el mismo tamaño o un tamaño mayor que el del volumen raíz del almacén de instancias original.

      ```
      aws ec2 create-volume \
          --size 10 \
          --region us-west-2 \
          --availability-zone us-west-2b
      ```

   1. Asocie el volumen a la instancia respaldada por Amazon EBS utilizando el comando [attach-volume](https://docs.aws.amazon.com/cli/latest/reference/ec2/attach-volume.html).

      ```
      aws ec2 attach-volume \
          --volume-id vol-01234567890abcdef \
          --instance-id i-1234567890abcdef0 \
          --region us-west-2
      ```

1. Cree una carpeta para el paquete.

   ```
   [ec2-user ~]$ mkdir /tmp/bundle
   ```

1. Descargue el paquete para la AMI basada en almacén de instancias en `/tmp/bundle` utilizando el comando [ec2-download-bundle](ami-tools-commands.md#ami-download-bundle).

   ```
   [ec2-user ~]$ ec2-download-bundle -b amzn-s3-demo-bucket/bundle_folder/bundle_name -m image.manifest.xml -a $AWS_ACCESS_KEY_ID -s $AWS_SECRET_ACCESS_KEY --privatekey /path/to/pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem -d /tmp/bundle
   ```

1. Reconstituya el archivo de imagen desde el paquete utilizando el comando [ec2-unbundle](ami-tools-commands.md#ami-unbundle).

   1. Cambie los directorios a la carpeta del paquete.

      ```
      [ec2-user ~]$ cd /tmp/bundle/
      ```

   1. Ejecute el comando [ec2-unbundle](ami-tools-commands.md#ami-unbundle).

      ```
      [ec2-user bundle]$ ec2-unbundle -m image.manifest.xml --privatekey /path/to/pk-HKZYKTAIG2ECMXYIBH3HXV4ZBEXAMPLE.pem
      ```

1. Copie los archivos de la imagen desagrupada al nuevo volumen de EBS.

   ```
   [ec2-user bundle]$ sudo dd if=/tmp/bundle/image of=/dev/sdb bs=1M
   ```

1. Sondee el volumen por si existiera alguna partición nueva sin agrupar.

   ```
   [ec2-user bundle]$ sudo partprobe /dev/sdb1
   ```

1. Muestre los dispositivos de bloques para encontrar el nombre de dispositivo a montar.

   ```
   [ec2-user bundle]$ lsblk
   NAME         MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
   /dev/sda    202:0    0   8G  0 disk
   └─/dev/sda1 202:1    0   8G  0 part /
   /dev/sdb    202:80   0  10G  0 disk
   └─/dev/sdb1 202:81   0  10G  0 part
   ```

   En este ejemplo, la partición a montar es `/dev/sdb1`, pero el nombre de dispositivo probablemente será diferente. Si el volumen no está particionado, el dispositivo a montar será similar a `/dev/sdb` (sin el dígito final de la partición del dispositivo).

1. Cree un punto de montaje para el nuevo volumen de EBS y monte el volumen.

   ```
   [ec2-user bundle]$ sudo mkdir /mnt/ebs
   [ec2-user bundle]$ sudo mount /dev/sdb1 /mnt/ebs
   ```

1. Abra el archivo `/etc/fstab` del volumen de EBS con el editor de texto que prefiera (por ejemplo **vim** o **nano**) y elimine cualquier entrada para volúmenes (efímeros) de almacén de instancias. Puesto que el volumen de EBS está montado en `/mnt/ebs`, el archivo `fstab` se ubica en `/mnt/ebs/etc/fstab`.

   ```
   [ec2-user bundle]$ sudo nano /mnt/ebs/etc/fstab
   #
   LABEL=/     /           ext4    defaults,noatime  1   1
   tmpfs       /dev/shm    tmpfs   defaults        0   0
   devpts      /dev/pts    devpts  gid=5,mode=620  0   0
   sysfs       /sys        sysfs   defaults        0   0
   proc        /proc       proc    defaults        0   0
   /dev/sdb        /media/ephemeral0       auto    defaults,comment=cloudconfig    0       2
   ```

   En este ejemplo se debe eliminar la última línea.

1. Desmonte el volumen y sepárelo de la instancia.

   ```
   [ec2-user bundle]$ sudo umount /mnt/ebs
   [ec2-user bundle]$ aws ec2 detach-volume --volume-id vol-01234567890abcdef --region us-west-2
   ```

1. Cree una AMI desde el nuevo volumen de EBS del modo siguiente.

   1. Cree una instantánea del nuevo volumen de EBS.

      ```
      [ec2-user bundle]$ aws ec2 create-snapshot --region us-west-2 --description "your_snapshot_description" --volume-id vol-01234567890abcdef
      ```

   1. Verifique que la instantánea esté completa.

      ```
      [ec2-user bundle]$ aws ec2 describe-snapshots --region us-west-2 --snapshot-id snap-0abcdef1234567890
      ```

   1. Identifique la arquitectura del procesador, el tipo de virtualización y la imagen del kernel (`aki`) utilizados en la AMI original con el comando **describe-images**. Para este paso, necesita el ID de AMI de la AMI original basada en Amazon S3.

      ```
      [ec2-user bundle]$ aws ec2 describe-images --region us-west-2 --image-id ami-0abcdef1234567890 --output text
      IMAGES	x86_64	amazon/amzn-ami-pv-2013.09.2.x86_64-s3	ami-8ef297be	amazon	available	public	machine	aki-fc8f11cc	instance-store	paravirtual	xen
      ```

      En este ejemplo, la arquitectura es `x86_64` y el ID de la imagen del kernel es `aki-fc8f11cc`. Utilice estos valores en el siguiente paso. Si el resultado del comando anterior también muestra un `ari` ID, anótelo también.

   1. Registre la nueva AMI con el ID de la instantánea del nuevo volumen de EBS y los valores del paso anterior. Si el resultado del comando anterior mostró un ID `ari`, inclúyalo en el siguiente comando con `--ramdisk-id ari_id`.

      ```
      [ec2-user bundle]$ aws ec2 register-image --region us-west-2 --name your_new_ami_name --block-device-mappings DeviceName=device-name,Ebs={SnapshotId=snap-0abcdef1234567890} --virtualization-type paravirtual --architecture x86_64 --kernel-id aki-fc8f11cc --root-device-name device-name
      ```

1. (Opcional) Una vez que haya probado que puede iniciar una instancia desde la nueva AMI, puede eliminar el volumen de EBS que creó para este procedimiento.

   ```
   aws ec2 delete-volume --volume-id vol-01234567890abcdef
   ```