

# Uso de Amazon EC2 en la AWS CLI
<a name="cli-services-ec2"></a>


| Una introducción a Amazon Elastic Compute Cloud (EC2) | 
| --- | 
|  [![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/TsRBftzZsQo/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/TsRBftzZsQo)  | 

Amazon Elastic Compute Cloud (Amazon EC2) proporciona entornos informáticos virtuales altamente escalables y flexibles. Amazon EC2 le permite aprovisionar y administrar servidores virtuales, conocidos como instancias de Amazon EC2, para satisfacer una amplia gama de necesidades informáticas.

Las instancias de Amazon EC2 son máquinas virtuales que se pueden personalizar con varias configuraciones de CPU, memoria, almacenamiento y capacidades de red. Puede elegir entre una amplia selección de tipos de instancias, que van desde opciones ligeras y rentables hasta instancias potentes y de alto rendimiento, según los requisitos de la aplicación. Esta flexibilidad le permite adaptarse a las necesidades informáticas para optimizar el rendimiento y la rentabilidad. 

Además, Amazon EC2 ofrece un conjunto de características que le permiten administrar los recursos informáticos de forma eficaz. Estas incluyen la capacidad de lanzar nuevas instancias con rapidez, crear imágenes de máquina personalizadas (AMI) para una implementación rápida y ampliar o reducir la capacidad informática según sea necesario. 

Puede obtener acceso a las características de Amazon EC2 con la AWS Command Line Interface (AWS CLI). Para mostrar los comandos de la AWS CLI para Amazon EC2, utilice el siguiente comando.

```
aws ec2 help
```

Antes de ejecutar los comandos, defina sus credenciales predeterminadas. Para obtener más información, consulte [Configuración de los ajustes de AWS CLI](cli-chap-configure.md).

En este tema se muestran ejemplos de comandos de formato corto de la AWS CLI que realizan tareas comunes para Amazon EC2.

Para obtener ejemplos de formato largo de los comandos de la AWS CLI, consulte el [repositorio de ejemplos de código de AWS CLI](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/aws-cli) en *GitHub*.

**Topics**
+ [Creación, visualización y eliminación de pares de claves de Amazon EC2 en la AWS CLI](cli-services-ec2-keypairs.md)
+ [Creación, configuración y eliminación de grupos de seguridad de Amazon EC2 en la AWS CLI](cli-services-ec2-sg.md)
+ [Lanzamiento, enumeración y eliminación de instancias de Amazon EC2 en la AWS CLI](cli-services-ec2-instances.md)
+ [Cambio de un tipo de instancia de Amazon EC2 con un script de Bash en la AWS CLI](cli-services-ec2-instance-type-script.md)

# Creación, visualización y eliminación de pares de claves de Amazon EC2 en la AWS CLI
<a name="cli-services-ec2-keypairs"></a>

Puede utilizar el AWS Command Line Interface (AWS CLI) para crear, mostrar y eliminar los pares de claves para Amazon Elastic Compute Cloud (Amazon EC2). Utilice un par de claves para conectarse a su instancia de Amazon EC2. Puede proporcionar el par de claves para Amazon EC2 al crear la instancia y, a continuación, utilice ese par de claves para autenticarse cuando se conecte a la instancia.

**nota**  
Para ver ejemplos de comandos adicionales, consulte la [Guía de la referencia de la AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/index.html).

**Topics**
+ [Requisitos previos](#cli-services-ec2-keypairs-prereqs)
+ [Crear un par de claves](#creating-a-key-pair)
+ [Mostrar un par de claves](#displaying-a-key-pair)
+ [Eliminar un par de claves](#deleting-a-key-pair)
+ [Referencias](#cli-services-ec2-keypairs-references)

## Requisitos previos
<a name="cli-services-ec2-keypairs-prereqs"></a>

Para ejecutar los comandos de `ec2`, debe:
+ Instalar y configurar la AWS CLI. Para obtener más información, consulte [Instalación o actualización de la versión más reciente de AWS CLI](getting-started-install.md) y [Credenciales de autenticación y acceso para la AWS CLI](cli-chap-authentication.md).
+ Establezca sus permisos de IAM para permitir el acceso a Amazon EC2. Para obtener más información sobre los permisos de IAM para Amazon EC2, consulte [Políticas de IAM para Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-policies-for-amazon-ec2.html) en la *Guía del usuario de Amazon EC2*.

## Crear un par de claves
<a name="creating-a-key-pair"></a>

Para crear un par de claves, utilice el comando `[aws ec2 create-key-pair](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-key-pair.html)` con la opción `--query` y la opción `--output text` para transferir su clave privada directamente a un archivo.

```
$ aws ec2 create-key-pair --key-name MyKeyPair --query 'KeyMaterial' --output text > MyKeyPair.pem
```

Para PowerShell, el redireccionamiento de `> file` adopta la codificación UTF-8 de forma predeterminada, que no se puede utilizar en algunos clientes SSH. Por lo tanto, debe convertir la salida transfiriéndola al comando `out-file` y establecer de forma explícita la codificación en `ascii`.

```
PS C:\>aws ec2 create-key-pair --key-name MyKeyPair --query 'KeyMaterial' --output text | out-file -encoding ascii -filepath MyKeyPair.pem
```

El archivo `MyKeyPair.pem` resultante tiene este aspecto.

```
-----BEGIN RSA PRIVATE KEY-----
EXAMPLEKEYKCAQEAy7WZhaDsrA1W3mRlQtvhwyORRX8gnxgDAfRt/gx42kWXsT4rXE/b5CpSgie/
vBoU7jLxx92pNHoFnByP+Dc21eyyz6CvjTmWA0JwfWiW5/akH7iO5dSrvC7dQkW2duV5QuUdE0QW
Z/aNxMniGQE6XAgfwlnXVBwrerrQo+ZWQeqiUwwMkuEbLeJFLhMCvYURpUMSC1oehm449ilx9X1F
G50TCFeOzfl8dqqCP6GzbPaIjiU19xX/azOR9V+tpUOzEL+wmXnZt3/nHPQ5xvD2OJH67km6SuPW
oPzev/D8V+x4+bHthfSjR9Y7DvQFjfBVwHXigBdtZcU2/wei8D/HYwIDAQABAoIBAGZ1kaEvnrqu
/uler7vgIn5m7lN5LKw4hJLAIW6tUT/fzvtcHK0SkbQCQXuriHmQ2MQyJX/0kn2NfjLV/ufGxbL1
mb5qwMGUnEpJaZD6QSSs3kICLwWUYUiGfc0uiSbmJoap/GTLU0W5Mfcv36PaBUNy5p53V6G7hXb2
bahyWyJNfjLe4M86yd2YK3V2CmK+X/BOsShnJ36+hjrXPPWmV3N9zEmCdJjA+K15DYmhm/tJWSD9
81oGk9TopEp7CkIfatEATyyZiVqoRq6k64iuM9JkA3OzdXzMQexXVJ1TLZVEH0E7bhlY9d8O1ozR
oQs/FiZNAx2iijCWyv0lpjE73+kCgYEA9mZtyhkHkFDpwrSM1APaL8oNAbbjwEy7Z5Mqfql+lIp1
YkriL0DbLXlvRAH+yHPRit2hHOjtUNZh4Axv+cpg09qbUI3+43eEy24B7G/Uh+GTfbjsXsOxQx/x
p9otyVwc7hsQ5TA5PZb+mvkJ5OBEKzet9XcKwONBYELGhnEPe7cCgYEA06Vgov6YHleHui9kHuws
ayav0elc5zkxjF9nfHFJRry21R1trw2Vdpn+9g481URrpzWVOEihvm+xTtmaZlSp//lkq75XDwnU
WA8gkn6O3QE3fq2yN98BURsAKdJfJ5RL1HvGQvTe10HLYYXpJnEkHv+Unl2ajLivWUt5pbBrKbUC
gYBjbO+OZk0sCcpZ29sbzjYjpIddErySIyRX5gV2uNQwAjLdp9PfN295yQ+BxMBXiIycWVQiw0bH
oMo7yykABY7Ozd5wQewBQ4AdSlWSX4nGDtsiFxWiI5sKuAAeOCbTosy1s8w8fxoJ5Tz1sdoxNeGs
Arq6Wv/G16zQuAE9zK9vvwKBgF+09VI/1wJBirsDGz9whVWfFPrTkJNvJZzYt69qezxlsjgFKshy
WBhd4xHZtmCqpBPlAymEjr/TOlbxyARmXMnIOWIAnNXMGB4KGSyl1mzSVAoQ+fqR+cJ3d0dyPl1j
jjb0Ed/NY8frlNDxAVHE8BSkdsx2f6ELEyBKJSRr9snRAoGAMrTwYneXzvTskF/S5Fyu0iOegLDa
NWUH38v/nDCgEpIXD5Hn3qAEcju1IjmbwlvtW+nY2jVhv7UGd8MjwUTNGItdb6nsYqM2asrnF3qS
VRkAKKKYeGjkpUfVTrW0YFjXkfcrR/V+QFL5OndHAKJXjW7a4ejJLncTzmZSpYzwApc=
-----END RSA PRIVATE KEY-----
```

Su clave privada no se almacena en AWS y ***solo*** se puede recuperar en el momento de crearla. No puede recuperarla más adelante. En vez de ello, si pierde la clave privada, debe crear un par de claves nuevo.

Si se está conectando a su instancia desde un equipo Linux, le recomendamos que utilice el siguiente comando para establecer los permisos de su archivo de clave privada de modo que solo usted pueda leerlo.

```
$ chmod 400 MyKeyPair.pem
```

## Mostrar un par de claves
<a name="displaying-a-key-pair"></a>

Se genera una "huella digital" a partir del par de claves, que puede utilizar para verificar que la clave privada que tiene en su equipo local coincide con la clave pública almacenada en AWS. 

La huella digital es un valor hash SHA1 tomado a partir de una copia de la clave privada con codificación DER. Este valor se captura cuando se crea el par de claves y se almacena en AWS junto con la clave pública. Puede consultar la huella digital en la consola de Amazon EC2 o ejecutando el comando de la AWS CLI `[aws ec2 describe-key-pairs](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-key-pairs.html)`. 

En el siguiente ejemplo se muestra la huella digital de `MyKeyPair`.

```
$ aws ec2 describe-key-pairs --key-name MyKeyPair
{
    "KeyPairs": [
        {
            "KeyName": "MyKeyPair",
            "KeyFingerprint": "1f:51:ae:28:bf:89:e9:d8:1f:25:5d:37:2d:7d:b8:ca:9f:f5:f1:6f"
        }
    ]
}
```

Para obtener más información sobre las claves y huellas digitales, consulte [Pares de claves de Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) en la *Guía del usuario de Amazon EC2*.

## Eliminar un par de claves
<a name="deleting-a-key-pair"></a>

Para eliminar un par de claves, ejecute el comando `[aws ec2 delete-key-pair](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-key-pair.html)`, sustituyendo *`MyKeyPair`* por el nombre del par de claves que desea eliminar.

```
$ aws ec2 delete-key-pair --key-name MyKeyPair
```

## Referencias
<a name="cli-services-ec2-keypairs-references"></a>

**AWS CLI referencia de:**
+ `[aws ec2](https://docs.aws.amazon.com/cli/latest/reference/ec2/index.html)`
+ `[aws ec2 create-key-pair](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-key-pair.html)`
+ `[aws ec2 delete-key-pair](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-key-pair.html)`
+ `[aws ec2 describe-key-pairs](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-key-pairs.html)`

**Otra referencia:**
+ [Documentación de Amazon Elastic Compute Cloud](https://docs.aws.amazon.com/ec2/)
+ Para ver y contribuir al SDK de AWS y los ejemplos de código de AWS CLI, consulte el [Repositorio de ejemplos de código de AWS](https://github.com/awsdocs/aws-doc-sdk-examples/) en *GitHub*.

# Creación, configuración y eliminación de grupos de seguridad de Amazon EC2 en la AWS CLI
<a name="cli-services-ec2-sg"></a>

Puede crear un grupo de seguridad para las instancias Amazon Elastic Compute Cloud (Amazon EC2) que básicamente funciona como un firewall, con reglas que determinan el tráfico de red que puede entrar y salir. 

Utilice AWS Command Line Interface (AWS CLI) para crear un nuevo grupo de seguridad, añadir reglas a grupos de seguridad existentes y eliminar grupos de seguridad. 

**nota**  
Para ver ejemplos de comandos adicionales, consulte la [Guía de la referencia de la AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/index.html).

**Topics**
+ [Requisitos previos](#cli-services-ec2-sg-prereqs)
+ [Creación de un grupo de seguridad](#creating-a-security-group)
+ [Agregar reglas al grupo de seguridad](#configuring-a-security-group)
+ [Eliminación de un grupo de seguridad](#deleting-a-security-group)
+ [Referencias](#cli-services-ec2-sg-references)

## Requisitos previos
<a name="cli-services-ec2-sg-prereqs"></a>

Para ejecutar los comandos de `ec2`, debe:
+ Instalar y configurar la AWS CLI. Para obtener más información, consulte [Instalación o actualización de la versión más reciente de AWS CLI](getting-started-install.md) y [Credenciales de autenticación y acceso para la AWS CLI](cli-chap-authentication.md).
+ Establezca sus permisos de IAM para permitir el acceso a Amazon EC2. Para obtener más información sobre los permisos de IAM para Amazon EC2, consulte [Políticas de IAM para Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-policies-for-amazon-ec2.html) en la *Guía del usuario de Amazon EC2*.

## Creación de un grupo de seguridad
<a name="creating-a-security-group"></a>

Puede crear grupos de seguridad asociados a nubes privadas virtuales (VPC).

En el siguiente ejemplo de `[aws ec2 create-security-group](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-security-group.html)` se muestra cómo crear un grupo de seguridad para una VPC especificada.

```
$ aws ec2 create-security-group --group-name my-sg --description "My security group" --vpc-id vpc-1a2b3c4d
{
    "GroupId": "sg-903004f8"
}
```

Para ver la información inicial para un grupo de seguridad, ejecute el comando de `[aws ec2 describe-security-groups](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-security-groups.html)`. Solo puede hacer referencia a un grupo de seguridad de EC2-VPC por su `vpc-id`, no por su nombre.

```
$ aws ec2 describe-security-groups --group-ids sg-903004f8
{
    "SecurityGroups": [
        {
            "IpPermissionsEgress": [
                {
                    "IpProtocol": "-1",
                    "IpRanges": [
                        {
                            "CidrIp": "0.0.0.0/0"
                        }
                    ],
                    "UserIdGroupPairs": []
                }
            ],
            "Description": "My security group"
            "IpPermissions": [],
            "GroupName": "my-sg",
            "VpcId": "vpc-1a2b3c4d",
            "OwnerId": "123456789012",
            "GroupId": "sg-903004f8"
        }
    ]
}
```

## Agregar reglas al grupo de seguridad
<a name="configuring-a-security-group"></a>

Cuando ejecute una instancia de Amazon EC2, debe habilitar reglas en el grupo de seguridad para permitir el tráfico de red entrante en el medio que utilice para conectarse a la imagen. 

Por ejemplo, si lanza una instancia de Windows, normalmente debe añadir una regla para permitir el tráfico entrante en el puerto TCP 3389 (RDP) para dar soporte al protocolo de escritorio remoto (RDP). Si lanza una instancia de Linux, normalmente debe añadir una regla para permitir el tráfico entrante en el puerto TCP 22 (SSH) para dar soporte a las conexiones de SSH. 

Use el comando `[aws ec2 authorize-security-group-ingress](https://docs.aws.amazon.com/cli/latest/reference/ec2/authorize-security-group-ingress.html)` para añadir una regla a un grupo de seguridad. Uno de los parámetros obligatorios de este comando es la dirección IP pública de su equipo, o la red (en forma de un intervalo de direcciones) al que su equipo está asociada, en notación [CIDR](https://wikipedia.org/wiki/Classless_Inter-Domain_Routing).

**nota**  
Proporcionamos el siguiente servicio, [https://checkip.global.api.aws/](https://checkip.global.api.aws/), para determinar su dirección IP pública. Para encontrar otros servicios que puedan ayudarle a identificar su dirección IP, utilice el navegador para buscar"*cuál es mi dirección IP*". Si se conecta a través de un ISP o protegido por su firewall mediante una dirección IP dinámica (a través de una gateway NAT desde una red privada), su dirección puede cambiar de forma periódica. En ese caso, debe averiguar el rango de direcciones IP que utilizan los equipos cliente.

En el siguiente ejemplo se muestra cómo añadir una regla para RDP (puerto TCP 3389) a un grupo de seguridad EC2-VPC con el ID `sg-903004f8` utilizando su dirección IP.

Para empezar, busque su dirección IP.

```
$ curl https://checkip.amazonaws.com
x.x.x.x
```

Luego, puede agregar la dirección IP a su grupo de seguridad mediante la ejecución del comando `[aws ec2 authorize-security-group-ingress](https://docs.aws.amazon.com/cli/latest/reference/ec2/authorize-security-group-ingress.html)`.

```
$ aws ec2 authorize-security-group-ingress --group-id sg-903004f8 --protocol tcp --port 3389 --cidr x.x.x.x/x
```

El siguiente comando añade otra regla para habilitar SSH en instancias en el mismo grupo de seguridad.

```
$ aws ec2 authorize-security-group-ingress --group-id sg-903004f8 --protocol tcp --port 22 --cidr x.x.x.x/x
```

Para ver los cambios realizados en el grupo de seguridad, ejecute el comando `[aws ec2 describe-security-groups](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-security-groups.html)`.

```
$ aws ec2 describe-security-groups --group-ids sg-903004f8
{
    "SecurityGroups": [
        {
            "IpPermissionsEgress": [
                {
                    "IpProtocol": "-1",
                    "IpRanges": [
                        {
                            "CidrIp": "0.0.0.0/0"
                        }
                    ],
                    "UserIdGroupPairs": []
                }
            ],
            "Description": "My security group"
            "IpPermissions": [
                {
                    "ToPort": 22,
                    "IpProtocol": "tcp",
                    "IpRanges": [
                        {
                            "CidrIp": "x.x.x.x/x"
                        }
                    ]
                    "UserIdGroupPairs": [],
                    "FromPort": 22
                }
            ],
            "GroupName": "my-sg",
            "OwnerId": "123456789012",
            "GroupId": "sg-903004f8"
        }
    ]
}
```

## Eliminación de un grupo de seguridad
<a name="deleting-a-security-group"></a>

Para eliminar un grupo de seguridad, ejecute el comando `[aws ec2 delete-security-group](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-security-group.html)`. 

**nota**  
No puede eliminar un grupo de seguridad que esté conectado actualmente a un entorno.

El siguiente ejemplo de comando elimina un grupo de seguridad EC2-VPC.

```
$ aws ec2 delete-security-group --group-id sg-903004f8
```

## Referencias
<a name="cli-services-ec2-sg-references"></a>

**AWS CLI referencia de:**
+ `[aws ec2](https://docs.aws.amazon.com/cli/latest/reference/ec2/index.html)`
+ `[aws ec2 authorize-security-group-ingress](https://docs.aws.amazon.com/cli/latest/reference/ec2/authorize-security-group-ingress.html)`
+ `[aws ec2 create-security-group](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-security-group.html)`
+ `[aws ec2 delete-security-group](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-security-group.html)`
+ `[aws ec2 describe-security-groups](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-security-groups.html)`

**Otra referencia:**
+ [Documentación de Amazon Elastic Compute Cloud](https://docs.aws.amazon.com/ec2/)
+ Para ver y contribuir al SDK de AWS y los ejemplos de código de AWS CLI, consulte el [Repositorio de ejemplos de código de AWS](https://github.com/awsdocs/aws-doc-sdk-examples/) en *GitHub*.

# Lanzamiento, enumeración y eliminación de instancias de Amazon EC2 en la AWS CLI
<a name="cli-services-ec2-instances"></a>

Puede utilizar la AWS Command Line Interface (AWS CLI) para lanzar, enumerar y eliminar instancias de Amazon Elastic Compute Cloud (Amazon EC2). Si lanza una instancia que no figura en la capa gratuita de AWS, se le facturará en cuanto la lance y se le cobrará el tiempo en que la instancia esté funcionando, aunque permanezca inactiva.

**nota**  
Para ver ejemplos de comandos adicionales, consulte la [Guía de la referencia de la AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/index.html).

**Topics**
+ [Requisitos previos](#cli-services-ec2-instances-prereqs)
+ [iniciar la instancia](#launching-instances)
+ [Agregar un dispositivo de bloques a la instancia](#block-device-mapping)
+ [Agregar una etiqueta a la instancia](#tagging-instances)
+ [Conéctese a su instancia](#connecting-to-instances)
+ [Enumerar las instancias](#listing-instances)
+ [Eliminar la instancia](#terminating-instances)
+ [Referencias](#cli-services-ec2-instances-references)

## Requisitos previos
<a name="cli-services-ec2-instances-prereqs"></a>

Para ejecutar los comandos `ec2` en este tema, debe hacer lo siguiente:
+ Instalar y configurar la AWS CLI. Para obtener más información, consulte [Instalación o actualización de la versión más reciente de AWS CLI](getting-started-install.md) y [Credenciales de autenticación y acceso para la AWS CLI](cli-chap-authentication.md).
+ Establezca sus permisos de IAM para permitir el acceso a Amazon EC2. Para obtener más información sobre los permisos de IAM para Amazon EC2, consulte [Políticas de IAM para Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-policies-for-amazon-ec2.html) en la *Guía del usuario de Amazon EC2*.
+ Cree un [par de claves](cli-services-ec2-keypairs.md) y un [grupo de seguridad](cli-services-ec2-sg.md).
+ Seleccione una Amazon Machine Image (AMI) y anotar su ID de AMI. Para obtener más información, consulte [Búsqueda de una AMI apta](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/finding-an-ami.html) en la *Guía del usuario de Amazon EC2*.

## iniciar la instancia
<a name="launching-instances"></a>

Para lanzar una instancia de Amazon EC2 utilizando la AMI que ha seleccionado, utilice el comando `[aws ec2 run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html)`. Puede lanzar la instancia en una nube privada virtual (VPC).

Al principio, la instancia aparece en el estado `pending`, pero cambia al estado `running` después de unos minutos.

En el siguiente ejemplo se muestra cómo lanzar una instancia `t2.micro` en la subred especificada de una VPC. Sustituya los valores del parámetro *en cursiva* por sus propios valores.

```
$ aws ec2 run-instances --image-id ami-xxxxxxxx --count 1 --instance-type t2.micro --key-name MyKeyPair --security-group-ids sg-903004f8 --subnet-id subnet-6e7f829e
{
    "OwnerId": "123456789012",
    "ReservationId": "r-5875ca20",
    "Groups": [
        {
            "GroupName": "my-sg",
            "GroupId": "sg-903004f8"
        }
    ],
    "Instances": [
        {
            "Monitoring": {
                "State": "disabled"
            },
            "PublicDnsName": null,
            "Platform": "windows",
            "State": {
                "Code": 0,
                "Name": "pending"
            },
            "EbsOptimized": false,
            "LaunchTime": "2013-07-19T02:42:39.000Z",
            "PrivateIpAddress": "10.0.1.114",
            "ProductCodes": [],
            "VpcId": "vpc-1a2b3c4d",
            "InstanceId": "i-5203422c",
            "ImageId": "ami-173d747e",
            "PrivateDnsName": "ip-10-0-1-114.ec2.internal",
            "KeyName": "MyKeyPair",
            "SecurityGroups": [
                {
                    "GroupName": "my-sg",
                    "GroupId": "sg-903004f8"
                }
            ],
            "ClientToken": null,
            "SubnetId": "subnet-6e7f829e",
            "InstanceType": "t2.micro",
            "NetworkInterfaces": [
                {
                    "Status": "in-use",
                    "SourceDestCheck": true,
                    "VpcId": "vpc-1a2b3c4d",
                    "Description": "Primary network interface",
                    "NetworkInterfaceId": "eni-a7edb1c9",
                    "PrivateIpAddresses": [
                        {
                            "PrivateDnsName": "ip-10-0-1-114.ec2.internal",
                            "Primary": true,
                            "PrivateIpAddress": "10.0.1.114"
                        }
                    ],
                    "PrivateDnsName": "ip-10-0-1-114.ec2.internal",
                    "Attachment": {
                        "Status": "attached",
                        "DeviceIndex": 0,
                        "DeleteOnTermination": true,
                        "AttachmentId": "eni-attach-52193138",
                        "AttachTime": "2013-07-19T02:42:39.000Z"
                    },
                    "Groups": [
                        {
                            "GroupName": "my-sg",
                            "GroupId": "sg-903004f8"
                        }
                    ],
                    "SubnetId": "subnet-6e7f829e",
                    "OwnerId": "123456789012",
                    "PrivateIpAddress": "10.0.1.114"
                }              
            ],
            "SourceDestCheck": true,
            "Placement": {
                "Tenancy": "default",
                "GroupName": null,
                "AvailabilityZone": "us-west-2b"
            },
            "Hypervisor": "xen",
            "BlockDeviceMappings": [
                {
                    "DeviceName": "/dev/sda1",
                    "Ebs": {
                        "Status": "attached",
                        "DeleteOnTermination": true,
                        "VolumeId": "vol-877166c8",
                        "AttachTime": "2013-07-19T02:42:39.000Z"
                    }
                }              
            ],
            "Architecture": "x86_64",
            "StateReason": {
                "Message": "pending",
                "Code": "pending"
            },
            "RootDeviceName": "/dev/sda1",
            "VirtualizationType": "hvm",
            "RootDeviceType": "ebs",
            "Tags": [
                {
                    "Value": "MyInstance",
                    "Key": "Name"
                }
            ],
            "AmiLaunchIndex": 0
        }
    ]
}
```

## Agregar un dispositivo de bloques a la instancia
<a name="block-device-mapping"></a>

Cada instancia que lance tiene un volumen de dispositivo raíz asociado. Puede utilizar la asignación de dispositivos de bloques para especificar los volúmenes adicionales de Amazon Elastic Block Store (Amazon EBS) o los volúmenes de almacén de instancias que desea asociar a una instancia en el momento de lanzarla.

Para añadir un dispositivo de bloque a la instancia, especifique la opción `--block-device-mappings` cuando utilice `run-instances`.

El siguiente parámetro de ejemplo aprovisiona un volumen estándar de Amazon EBS con un tamaño de 20 GB y lo asigna a su instancia con el identificador `/dev/sdf`.

```
--block-device-mappings "[{\"DeviceName\":\"/dev/sdf\",\"Ebs\":{\"VolumeSize\":20,\"DeleteOnTermination\":false}}]"
```

En el siguiente ejemplo se agrega un volumen de Amazon EBS, asignado a `/dev/sdf`, a partir de una instantánea existente. Una instantánea representa una imagen que se carga en el volumen por usted. Cuando se especifica una instantánea, no es necesario especificar un tamaño de volumen; será lo suficientemente grande como para almacenar la imagen. Sin embargo, si especifica un tamaño, este deberá ser igual o mayor que el tamaño de la instantánea.

```
--block-device-mappings "[{\"DeviceName\":\"/dev/sdf\",\"Ebs\":{\"SnapshotId\":\"snap-a1b2c3d4\"}}]"
```

En el siguiente ejemplo se añaden dos volúmenes a la instancia. El número de volúmenes disponibles para su instancia depende del tipo de instancia.

```
--block-device-mappings "[{\"DeviceName\":\"/dev/sdf\",\"VirtualName\":\"ephemeral0\"},{\"DeviceName\":\"/dev/sdg\",\"VirtualName\":\"ephemeral1\"}]"
```

En el siguiente ejemplo se crea el mapeo (`/dev/sdj`), pero no se aprovisiona un volumen para la instancia.

```
--block-device-mappings "[{\"DeviceName\":\"/dev/sdj\",\"NoDevice\":\"\"}]"
```

Para obtener más información, consulte [Asignación de dispositivos de bloques](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/block-device-mapping-concepts.html) en la *Guía del usuario de Amazon EC2*.

## Agregar una etiqueta a la instancia
<a name="tagging-instances"></a>

Una etiqueta es una marca que se asigna a un recurso de AWS. Le permite añadir metadatos a los recursos que puede utilizar para distintos fines. Para obtener más información, consulte [Etiquetado de los recursos](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html) en la *Guía del usuario de Amazon EC2*.

En el siguiente ejemplo se muestra cómo añadir una etiqueta con el nombre de clave "`Name`" y el valor "`MyInstance`" a la instancia especificada, mediante el comando `[aws ec2 create-tags](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-tags.html)`.

```
$ aws ec2 create-tags --resources i-5203422c --tags Key=Name,Value=MyInstance
```

## Conéctese a su instancia
<a name="connecting-to-instances"></a>

Puede conectarse a su instancia mientras se esté ejecutando y utilizarla como si fuera un equipo que tiene delante. Para obtener más información, consulte [Conexión a la instancia de Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-to-linux-instance.html) en la *Guía del usuario de Amazon EC2*.

## Enumerar las instancias
<a name="listing-instances"></a>

Puede utilizar la AWS CLI para mostrar las instancias y ver información de las mismas. Puede incluir todas sus instancias en la lista o filtrar los resultados en función de las instancias que le interesen.

Los siguientes ejemplos muestran cómo utilizar el comando `[aws ec2 describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html)`.

El siguiente comando muestra todas sus instancias.

```
$ aws ec2 describe-instances
```

El siguiente comando filtra únicamente las instancias `t2.micro` de la lista y devuelve únicamente los valores `InstanceId` para cada coincidencia.

```
$ aws ec2 describe-instances --filters "Name=instance-type,Values=t2.micro" --query "Reservations[].Instances[].InstanceId"
[
    "i-05e998023d9c69f9a"
]
```

El siguiente comando muestra todas las instancias que tienen la etiqueta `Name=MyInstance`.

```
$ aws ec2 describe-instances --filters "Name=tag:Name,Values=MyInstance"
```

El siguiente comando muestra las instancias que tiene y que se iniciaron con cualquiera de las siguientes AMI: `ami-x0123456`, `ami-y0123456`y `ami-z0123456`.

```
$ aws ec2 describe-instances --filters "Name=image-id,Values=ami-x0123456,ami-y0123456,ami-z0123456"
```

## Eliminar la instancia
<a name="terminating-instances"></a>

Puede usar la AWS CLI para terminar (eliminar) una instancia de Amazon EC2 cuando ya no la necesite.

**importante**  
**La terminación de una instancia es permanente e irreversible.**  
Después de terminar una instancia, ya no podrá conectarse a esta ni recuperarla. Todos los volúmenes de Amazon EBS asociados que estén configurados para eliminarse en la terminación también se eliminan de manera permanente y no se pueden recuperar. Todos los datos almacenados en volúmenes de almacén de instancias se perderán de forma permanente. Para obtener más información, consulte [Cómo funciona la terminación de instancias](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/how-ec2-instance-termination-works.html).  
Antes de terminar una instancia, asegúrese de haber realizado una copia de seguridad en un almacenamiento persistente de todos los datos que necesite retener después de la terminación.

En cuanto el estado de la instancia cambie a `shutting-down` o a `terminated`, dejará de incurrir en costos por ella. Si desea volver a conectarse a una instancia más adelante, utilice [stop-instances](https://docs.aws.amazon.com/cli/v1/reference/ec2/stop-instances.html) en lugar de `terminate-instances`. Para obtener más información, consulte [Finalizar una instancia](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html) en la *Guía del usuario de Amazon EC2*.

En el ejemplo siguiente, se muestra cómo eliminar una instancia mediante el comando `[aws ec2 terminate-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/terminate-instances.html)`.

```
$ aws ec2 terminate-instances --instance-ids i-5203422c
{
    "TerminatingInstances": [
        {
            "InstanceId": "i-5203422c",
            "CurrentState": {
                "Code": 32,
                "Name": "shutting-down"
            },
            "PreviousState": {
                "Code": 16,
                "Name": "running"
            }
        }
    ]
}
```

## Referencias
<a name="cli-services-ec2-instances-references"></a>

**AWS CLI referencia de:**
+ `[aws ec2](https://docs.aws.amazon.com/cli/latest/reference/ec2/index.html)`
+ `[aws ec2 create-tags](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-tags.html)`
+ `[aws ec2 describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html)`
+ `[aws ec2 run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html)`
+ `[aws ec2 terminate-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/terminate-instances.html)`

**Otra referencia:**
+ [Documentación de Amazon Elastic Compute Cloud](https://docs.aws.amazon.com/ec2/)
+ Para ver y contribuir al SDK de AWS y los ejemplos de código de AWS CLI, consulte el [Repositorio de ejemplos de código de AWS](https://github.com/awsdocs/aws-doc-sdk-examples/) en *GitHub*.

# Cambio de un tipo de instancia de Amazon EC2 con un script de Bash en la AWS CLI
<a name="cli-services-ec2-instance-type-script"></a>

Este ejemplo de scripting de Bash para Amazon EC2 cambia el tipo de instancia de una instancia de Amazon EC2 con el método AWS Command Line Interface (AWS CLI). Detiene la instancia si se está ejecutando, cambia el tipo de instancia y, a continuación, si se solicita, reinicia la instancia. Los scripts de shell son programas diseñados para ejecutarse en una interfaz de línea de comandos.

**nota**  
Para ver ejemplos de comandos adicionales, consulte la [Guía de la referencia de la AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/index.html).

**Topics**
+ [Antes de comenzar](#cli-services-ec2-instance-type-script-prereqs)
+ [Acerca de este ejemplo](#cli-services-ec2-instance-type-script-about)
+ [Parameters](#cli-services-ec2-instance-type-script-params)
+ [Archivos](#cli-services-ec2-instance-type-script-files.title)
+ [Referencias](#cli-services-ec2-instance-type-script-references)

## Antes de comenzar
<a name="cli-services-ec2-instance-type-script-prereqs"></a>

Antes de que pueda ejecutar cualquiera de los siguientes ejemplos, se debe completar lo siguiente.
+ Instalar y configurar la AWS CLI. Para obtener más información, consulte [Instalación o actualización de la versión más reciente de AWS CLI](getting-started-install.md), y [Credenciales de autenticación y acceso para la AWS CLI](cli-chap-authentication.md).
+ El perfil que utilice debe tener permisos que permitan que se realicen las operaciones de la AWS mediante ejemplos.
+ Una instancia de Amazon EC2 en ejecución en la cuenta para la que tiene permiso para detener y modificar. Si ejecuta el script de prueba, inicia una instancia, prueba el cambio del tipo y, a continuación, termina la instancia.
+ Como práctica recomendada de AWS, conceda privilegios mínimos a este código o solo los permisos necesarios para llevar a cabo una tarea. Para obtener más información, consulte [Otorgar privilegios mínimos](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) en la *Guía del usuario de AWS Identity and Access Management (IAM)*.
+ Este código no ha sido probado en todas las regiones de AWS. Algunos servicios de AWS solo están disponibles en regiones específicas. Para obtener más información, consulte [Puntos de enlace de servicio y cuotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) en la *Guía de referencia general de AWS*. 
+ La ejecución de este código puede resultar en cargos en su cuenta de AWS. Es su responsabilidad asegurarse de que los recursos creados por este script se eliminen cuando haya terminado con ellos. 

## Acerca de este ejemplo
<a name="cli-services-ec2-instance-type-script-about"></a>

Este ejemplo se escribe como una función en el archivo de script de shell `change_ec2_instance_type.sh` que puede `source` desde otro script o desde la línea de comandos. Cada archivo de script contiene comentarios que describen cada una de las funciones. Una vez la función esté en la memoria, puede invocarla desde la línea de comandos. Por ejemplo, los siguientes comandos cambian el tipo de instancia especificada a `t2.nano`:

```
$ source ./change_ec2_instance_type.sh
$ ./change_ec2_instance_type -i *instance-id* -t new-type
```

Para obtener el ejemplo completo y los archivos de script descargables, consulte el [Cambio del tipo de instancia de Amazon EC2](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/aws-cli/bash-linux/ec2/change-ec2-instance-type) en *AWS Ejemplos de código* en *GitHub*.

## Parameters
<a name="cli-services-ec2-instance-type-script-params"></a>

**-i**-*(string)* Especifica el ID de instancia que se va a modificar.

**-t**-*(string)*Especifica el tipo de instancia de Amazon EC2 al que se va a cambiar.

**-r**-*(switch)* De forma predeterminada, no se establece. Si se configura `-r`, reinicia la instancia después del modificador de tipo.

**-f**-*(switch)* De forma predeterminada, el script solicita al usuario que confirme el cierre de la instancia antes de realizar el cambio. Si se configura `-f`, la función no le pide al usuario antes de apagar la instancia para hacer el cambio de tipo

**-v**-*(switch)* De forma predeterminada, el script funciona silenciosamente y muestra la salida solo en caso de error. Si se configura `-v`, la función muestra el estado a lo largo de su operación.

## Archivos
<a name="cli-services-ec2-instance-type-script-files.title"></a>

**`change_ec2_instance_type.sh`**  
El archivo de script principal contiene la función `change_ec2_instance_type()` que realiza las siguientes tareas:  
+ Comprueba que existe la instancia de Amazon EC2 especificada.
+ A menos que se seleccione `-f`, advierte al usuario antes de detener la instancia.
+ Cambia el tipo de instancia
+ Si configura `-r`, reinicia la instancia y confirma que la instancia se está ejecutando
Ver el código de `[change\$1ec2\$1instance\$1type.sh](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/aws-cli/bash-linux/ec2/change-ec2-instance-type/change_ec2_instance_type.sh)` en *GitHub*.

**`test_change_ec2_instance_type.sh`**  
El script del archivo `test_change_ec2_instance_type.sh` prueba las diversas rutas de código para la función de `change_ec2_instance_type`. Si todos los pasos del script de prueba funcionan correctamente, este elimina todos los recursos que ha creado.  
Puede ejecutar el script de prueba con los siguientes parámetros:  
+ **-v**-*(switch)*Cada prueba muestra un estado de superación/fallo a medida que se ejecutan. De forma predeterminada, las pruebas se ejecutan silenciosamente y la salida incluye solo el estado final de aprobado o error.
+ **-i**-*(switch)* El script se detiene después de cada prueba para permitirle examinar los resultados intermedios de cada paso. Le permite examinar el estado actual de la instancia mediante la consola de Amazon EC2. El script pasa al siguiente paso después de presionar *ENTER* (INTRO) en el símbolo del sistema.
Ver el código de `[test\$1change\$1ec2\$1instance\$1type.sh](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/aws-cli/bash-linux/ec2/change-ec2-instance-type/test_change_ec2_instance_type.sh)` en *GitHub*.

**`awsdocs_general.sh`**  
El archivo de script `awsdocs_general.sh` contiene funciones de uso general utilizadas en ejemplos avanzados para el AWS CLI.  
Ver el código de `[awsdocs\$1general.sh](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/aws-cli/bash-linux/ec2/change-ec2-instance-type/awsdocs_general.sh)` en *GitHub*.

## Referencias
<a name="cli-services-ec2-instance-type-script-references"></a>

**AWS CLI referencia de:**
+ `[aws ec2](https://docs.aws.amazon.com/cli/v1/reference/ec2/index.html)`
+ `[aws ec2 describe-instances](https://docs.aws.amazon.com/cli/v1/reference/ec2/describe-instances.html)`
+ `[aws ec2 modify-instance-attribute](https://docs.aws.amazon.com/cli/v1/reference/ec2/modify-instance-attribute.html)`
+ `[aws ec2 start-instances](https://docs.aws.amazon.com/cli/v1/reference/ec2/start-instances.html)`
+ `[aws ec2 stop-instances](https://docs.aws.amazon.com/cli/v1/reference/ec2/stop-instances.html)`
+ `[aws ec2 wait instance-running](https://docs.aws.amazon.com/cli/v1/reference/ec2/wait/instance-running.html)`
+ `[aws ec2 wait instance-stopped](https://docs.aws.amazon.com/cli/v1/reference/ec2/wait/instance-stopped.html)`

**Otra referencia:**
+ [Documentación de Amazon Elastic Compute Cloud](https://docs.aws.amazon.com/ec2/)
+ Para ver y contribuir al SDK de AWS y los ejemplos de código de AWS CLI, consulte el [Repositorio de ejemplos de código de AWS](https://github.com/awsdocs/aws-doc-sdk-examples/) en *GitHub*.