

# Para iniciar, listar e excluir instâncias do Amazon EC2 na AWS CLI
<a name="cli-services-ec2-instances"></a>

Você pode usar a AWS Command Line Interface (AWS CLI) para iniciar, listar e excluir instâncias do Amazon Elastic Compute Cloud (Amazon EC2). Se iniciar uma instância que não esteja no nível gratuito da AWS, você será cobrado depois de iniciar a instância e cobrado pelo tempo que a instância estiver em execução, mesmo que ela permaneça inativa.

**nota**  
Para ver exemplos de outros comandos, consulte o [Guia de referência da AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/index.html).

**Topics**
+ [Pré-requisitos](#cli-services-ec2-instances-prereqs)
+ [Executar sua instância](#launching-instances)
+ [Adicionar um dispositivo de blocos à instância](#block-device-mapping)
+ [Adicionar uma etiqueta à instância](#tagging-instances)
+ [Conecte-se à sua instância](#connecting-to-instances)
+ [Listar as instâncias](#listing-instances)
+ [Excluir sua instância](#terminating-instances)
+ [Referências](#cli-services-ec2-instances-references)

## Pré-requisitos
<a name="cli-services-ec2-instances-prereqs"></a>

Para executar os comandos `ec2` neste tópico, você precisa:
+ Instale e configure a . AWS CLI. Para ter mais informações, consulte [Instalar ou atualizar a versão mais recente da AWS CLI](getting-started-install.md) e [Autenticação e credenciais de acesso para a AWS CLI](cli-chap-authentication.md).
+ Defina suas permissões do IAM para permitir acesso ao Amazon EC2. Para obter mais informações sobre permissões do IAM para Amazon EC2, consulte [Políticas do IAM para Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-policies-for-amazon-ec2.html) no *Guia do usuário do Amazon EC2*.
+ Crie um [par de chaves](cli-services-ec2-keypairs.md) e um [grupo de segurança](cli-services-ec2-sg.md).
+ Selecione uma Imagem de máquina da Amazon (AMI) e anote o ID da AMI. Para obter mais informações, consulte [Descobrir uma AMI adequada](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/finding-an-ami.html) no *Guia do usuário do Amazon EC2*.

## Executar sua instância
<a name="launching-instances"></a>

Para iniciar uma instância do Amazon EC2 usando a AMI selecionada, use o comando `[aws ec2 run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html)`. É possível iniciar a instância em uma nuvem privada virtual (VPC).

Inicialmente, a instância será exibida no estado `pending`, mas mudará para o estado `running` depois de alguns minutos.

O exemplo a seguir mostra como iniciar uma instância `t2.micro` na sub-rede especificada de uma VPC. Substitua os valores dos parâmetros *em itálico* pelos seus próprios.

```
$ 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
        }
    ]
}
```

## Adicionar um dispositivo de blocos à instância
<a name="block-device-mapping"></a>

Cada instância lançada tem um volume do dispositivo root associados. Use o mapeamento de dispositivos de blocos para especificar volumes adicionais do Amazon Elastic Block Store (Amazon EBS) ou volumes de armazenamento de instâncias para anexar a uma instância quando ela for iniciada.

Para adicionar um dispositivo de blocos em sua instância, especifique a opção `--block-device-mappings` ao usar `run-instances`.

O exemplo de parâmetro a seguir provisiona um volume do Amazon EBS padrão de 20 GB e o mapeia em sua instância usando o identificador `/dev/sdf`.

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

O exemplo a seguir adiciona um volume do Amazon EBS mapeado em `/dev/sdf` com base em um snapshot existente. Um snapshot representa uma imagem que é carregada no volume para você. Ao especificar um snapshot, não é necessário especificar um tamanho de volume; ele será grande o suficiente para armazenar sua imagem. No entanto, se você especificar um tamanho, ele deverá ser maior que ou igual ao tamanho do snapshot.

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

O exemplo a seguir adiciona dois volumes à sua instância. O número de volumes disponíveis para sua instância depende do seu tipo de instância.

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

O exemplo a seguir cria o mapeamento (`/dev/sdj`), mas não provisiona um volume para a instância.

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

Para obter mais informações, consulte [Mapeamento de dispositivos de blocos](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/block-device-mapping-concepts.html) no *Guia do usuário do Amazon EC2*.

## Adicionar uma etiqueta à instância
<a name="tagging-instances"></a>

Uma etiqueta é um rótulo atribuído a um recurso da AWS. Permite adicionar metadados aos seus recursos que você pode usar para diversas finalidades. Para obter mais informações, consulte [Marcar seus recursos](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Using_Tags.html) no *Guia do usuário do Amazon EC2*.

O exemplo a seguir mostra como adicionar uma etiqueta com o nome da chave “`Name`” e o valor “`MyInstance`” à instância especificada com o 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
```

## Conecte-se à sua instância
<a name="connecting-to-instances"></a>

Durante a execução da instância, é possível se conectar a ela e usá-la da mesma forma que você usaria um computador. Para obter mais informações, consulte [Conectar-se à instância do Linux usando SSH](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect-to-linux-instance.html) no *Guia do usuário do Amazon EC2*.

## Listar as instâncias
<a name="listing-instances"></a>

Use o AWS CLI para listar suas instâncias e visualizar informações sobre elas. Liste todas as suas instâncias, ou filtre os resultados de acordo com as instâncias de interesse.

Os exemplos a seguir mostram como usar o comando `[aws ec2 describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html)`.

O comando a seguir relaciona todas as suas instâncias.

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

O comando a seguir filtra a lista apenas para suas instâncias `t2.micro` e mostra apenas os valores `InstanceId` para cada correspondência.

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

O comando a seguir lista todas as suas instâncias que tem a etiqueta `Name=MyInstance`.

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

O comando a seguir relaciona as instâncias que foram executadas usando qualquer uma das seguintes AMIs: `ami-x0123456`, `ami-y0123456` e `ami-z0123456`.

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

## Excluir sua instância
<a name="terminating-instances"></a>

Você pode usar a AWS CLI para encerrar (excluir) uma instância do Amazon EC2 quando não precisar mais dela.

**Importante**  
**O encerramento de uma instância é permanente e irreversível.**  
Depois de encerrar uma instância, não será mais possível se conectar a ela e ela não poderá ser recuperada. Todos os volumes anexados do Amazon EBS configurados para serem excluídos no encerramento também serão excluídos permanentemente e não poderão ser recuperados. Todos os dados armazenados em volumes de armazenamento de instância serão perdidos permanentemente. Para ter mais informações, consulte [Como funciona o encerramento de uma instância](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/how-ec2-instance-termination-works.html).  
Antes de encerrar uma instância, certifique-se de ter feito backup de todos os dados que você precise reter após o encerramento no armazenamento persistente.

Assim que o estado da instância de mudar para `shutting-down` ou para `terminated`, não há mais custos para essa instância. Se você desejar se reconectar a ela mais tarde, use [stop-instances](https://docs.aws.amazon.com/cli/v1/reference/ec2/stop-instances.html) em vez de `terminate-instances`. Para obter mais informações, consulte [Encerramento de instâncias](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/terminating-instances.html) no *Guia do usuário do Amazon EC2*.

O exemplo a seguir mostra como excluir uma instância usando o 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"
            }
        }
    ]
}
```

## Referências
<a name="cli-services-ec2-instances-references"></a>

**AWS CLI Referência da:**
+ `[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)`

**Outra referência:**
+ [Documentação do Amazon Elastic Compute Cloud](https://docs.aws.amazon.com/ec2/)
+ Para visualizar e contribuir para o SDK da AWS e exemplos de código da AWS CLI, consulte o [Repositório de exemplos de código da AWS](https://github.com/awsdocs/aws-doc-sdk-examples/) no *GitHub*.