

# Usar o Amazon EC2 na AWS CLI
<a name="cli-services-ec2"></a>


| Introdução ao Amazon Elastic Compute Cloud | 
| --- | 
|  [![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)  | 

O Amazon Elastic Compute Cloud (Amazon EC2) oferece ambientes de computação virtual altamente escaláveis e flexíveis. O Amazon EC2 permite que você provisione e gerencie servidores virtuais, conhecidos como instâncias do Amazon EC2, para atender a uma ampla variedade de necessidades de computação.

As instâncias do Amazon EC2 são máquinas virtuais que podem ser personalizadas com várias configurações de recursos de CPU, memória, armazenamento e redes. Você pode escolher entre uma seleção diversificada de tipos de instância, desde opções leves e econômicas até instâncias poderosas e de alto desempenho, dependendo dos requisitos do seu aplicativo. Essa flexibilidade permite que você atenda às suas necessidades de computação para otimizar o desempenho e a economia. 

Além disso, o Amazon EC2 oferece um conjunto de atributos que permite que você gerencie seus recursos computacionais de forma eficaz. Isso inclui a capacidade de iniciar rapidamente novas instâncias, criar imagens de máquina personalizadas (AMIs) para implantação rápida e aumentar ou diminuir a capacidade de computação conforme necessário. 

Você pode acessar os atributos do Amazon EC2 usando a AWS Command Line Interface (AWS CLI). Para listar os comandos da AWS CLI para o Amazon EC2, use o comando a seguir.

```
aws ec2 help
```

Antes de executar quaisquer comandos, defina suas credenciais padrão. Para ter mais informações, consulte [Como definir as configurações da AWS CLI](cli-chap-configure.md).

Este tópico mostra exemplos curtos de comandos da AWS CLI que executam tarefas comuns para o Amazon EC2.

Para exemplos de formas longas de comandos da AWS CLI, consulte [Repositório de exemplos de código da AWS CLI](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/aws-cli) no *GitHub*.

**Topics**
+ [Criação, exibição e exclusão de pares de chaves do Amazon EC2 na AWS CLI](cli-services-ec2-keypairs.md)
+ [Criação, configuração e exclusão de grupos de segurança do Amazon EC2 na AWS CLI](cli-services-ec2-sg.md)
+ [Para iniciar, listar e excluir instâncias do Amazon EC2 na AWS CLI](cli-services-ec2-instances.md)
+ [Alterar um tipo de instância do Amazon EC2 com um script bash na AWS CLI](cli-services-ec2-instance-type-script.md)

# Criação, exibição e exclusão de pares de chaves do Amazon EC2 na AWS CLI
<a name="cli-services-ec2-keypairs"></a>

Você pode usar a AWS Command Line Interface (AWS CLI) para criar, exibir e excluir seus pares de chaves do Amazon Elastic Compute Cloud (Amazon EC2). Você usa pares de chaves para se conectar a uma instância do Amazon EC2. Você pode fornecer o par de chaves para o Amazon EC2 ao criar a instância e, em seguida, usar esse par de chaves para autenticação ao se conectar à instância.

**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-keypairs-prereqs)
+ [Criar um par de chaves](#creating-a-key-pair)
+ [Exibir o par de chaves](#displaying-a-key-pair)
+ [Excluir o par de chaves](#deleting-a-key-pair)
+ [Referências](#cli-services-ec2-keypairs-references)

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

Para executar os comandos `ec2`, 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*.

## Criar um par de chaves
<a name="creating-a-key-pair"></a>

Para criar um par de chaves, use o comando `[aws ec2 create-key-pair](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-key-pair.html)` com a opção `--query` e a opção `--output text` para canalizar sua chave privada diretamente para um arquivo.

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

Para o PowerShell, o padrão de redirecionamento `> file` assume a codificação UTF-8, que não pode ser usada com alguns clientes SSH. Portanto, você deve converter a saída redirecionando-a para o comando `out-file` e definir explicitamente a codificação para `ascii`.

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

O arquivo resultante `MyKeyPair.pem` é semelhante ao seguinte.

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

Sua chave privada não é armazenada na AWS e ***só*** pode ser recuperada quando é criada. Não será possível recuperá-la posteriormente. Ao invés disso, se você perder a chave privada, deverá criar um novo par de chaves.

Se você estiver se conectando à sua instância a partir de um computador com Linux, recomendamos que você use o seguinte comando para definir as permissões do arquivo de chave privada, de maneira que apenas você possa lê-lo.

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

## Exibir o par de chaves
<a name="displaying-a-key-pair"></a>

A “impressão digital” é gerada a partir do par de chaves, e você pode usá-la para verificar se a chave privada presente em sua máquina local corresponde à chave pública armazenada na AWS. 

A impressão digital é um hash SHA1 de uma cópia codificada DER da chave privada. Esse valor é capturado quando o par de chaves é criado e é armazenado na AWS com a chave pública. Você pode visualizar a impressão digital no console do Amazon EC2 ou executando o comando `[aws ec2 describe-key-pairs](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-key-pairs.html)` da AWS CLI. 

O exemplo a seguir exibe a impressão digital para `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 obter mais informações sobre chaves e impressões digitais, consulte [Pares de chaves do Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html) no *Guia do usuário do Amazon EC2*.

## Excluir o par de chaves
<a name="deleting-a-key-pair"></a>

Para excluir um par de chaves, execute o comando `[aws ec2 delete-key-pair](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-key-pair.html)`, substituindo *`MyKeyPair`* pelo nome do par a ser excluído.

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

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

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

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

# Criação, configuração e exclusão de grupos de segurança do Amazon EC2 na AWS CLI
<a name="cli-services-ec2-sg"></a>

Você pode criar um grupo de segurança para suas instâncias do Amazon Elastic Compute Cloud (Amazon EC2) que atua essencialmente como um firewall, com regras que determinam qual tráfego de rede pode entrar e sair. 

É possível usar a AWS Command Line Interface (AWS CLI) para criar um grupo de segurança, adicionar regras a grupos de segurança existentes e excluir grupos de segurança. 

**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-sg-prereqs)
+ [Criar um grupo de segurança](#creating-a-security-group)
+ [Adicionar regras ao grupo de segurança](#configuring-a-security-group)
+ [Excluir o grupo de segurança](#deleting-a-security-group)
+ [Referências](#cli-services-ec2-sg-references)

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

Para executar os comandos `ec2`, 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*.

## Criar um grupo de segurança
<a name="creating-a-security-group"></a>

É possível criar grupos de segurança associados a nuvens privadas virtuais (VPCs).

O exemplo do `[aws ec2 create-security-group](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-security-group.html)` a seguir mostra como criar um grupo de segurança para a VPC especificada.

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

Para visualizar as informações iniciais para um grupo de segurança, execute o comando `[aws ec2 describe-security-groups](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-security-groups.html)`. Você pode fazer referência a um grupo de segurança do EC2-VPC somente por seu `vpc-id`, e não apenas por seu nome.

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

## Adicionar regras ao grupo de segurança
<a name="configuring-a-security-group"></a>

Quando você executa uma instância do Amazon EC2, é necessário ativar regras no grupo de segurança para permitir o tráfego de rede de entrada como meio de se conectar à imagem. 

Por exemplo, se estiver iniciando uma instância do Windows, normalmente você adiciona uma regra para permitir que o tráfego de entrada na porta TCP 3389 ofereça suporte ao Protocolo de Desktop Remoto (RDP). Se estiver iniciando uma instância do Linux, geralmente você adiciona uma regra para permitir que o tráfego de entrada na porta 22 ofereça suporte às conexões SSH. 

Use o comando `[aws ec2 authorize-security-group-ingress](https://docs.aws.amazon.com/cli/latest/reference/ec2/authorize-security-group-ingress.html)` para adicionar uma regra a um grupo de segurança. Um parâmetro obrigatório deste comando é o endereço IP público de seu computador ou rede (na forma de um intervalo de endereços) ao qual seu computador está conectado na notação [CIDR](https://wikipedia.org/wiki/Classless_Inter-Domain_Routing).

**nota**  
Fornecemos o serviço [https://checkip.global.api.aws/](https://checkip.global.api.aws/) para permitir a você determinar seu endereço IP público. Para encontrar outros serviços que podem ajudar você a identificar o endereço IP, use o navegador para pesquisar “*qual é meu endereço IP*”. Se você se conectar por meio de um ISP ou protegido por um firewall usando um endereço IP dinâmico (por meio de um gateway NAT de uma rede privada), seu endereço poderá mudar periodicamente. Nesse caso, você deve descobrir o intervalo de endereços IP usados por computadores cliente.

O exemplo a seguir mostra como adicionar uma regra para RDP (porta TCP 3389) em um grupo de segurança do EC2-VPC com o ID `sg-903004f8` usando seu endereço IP.

Para começar, encontre seu endereço IP.

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

Em seguida, você pode adicionar o endereço IP ao seu grupo de segurança, executando o 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
```

O comando a seguir adiciona uma regra para habilitar o SSH para instâncias no mesmo grupo de segurança.

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

Para visualizar as alterações no grupo de segurança, execute o 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"
        }
    ]
}
```

## Excluir o grupo de segurança
<a name="deleting-a-security-group"></a>

Para excluir um grupo de segurança, execute o comando `[aws ec2 delete-security-group](https://docs.aws.amazon.com/cli/latest/reference/ec2/delete-security-group.html)`. 

**nota**  
Não é possível excluir um grupo de segurança se ele estiver atualmente anexado a um ambiente.

O exemplo de comando a seguir exclui um grupo de segurança do EC2-VPC.

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

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

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

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

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

# Alterar um tipo de instância do Amazon EC2 com um script bash na AWS CLI
<a name="cli-services-ec2-instance-type-script"></a>

Este exemplo de script bash para Amazon EC2 altera o tipo de instância para uma instância do Amazon EC2 usando a AWS Command Line Interface (AWS CLI). Ele interrompe a instância se ela estiver em execução, altera o tipo de instância e, em seguida, se solicitado, a reinicia. Scripts shell são programas desenvolvidos para ser executados em uma interface de linha de comando.

**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**
+ [Antes de começar](#cli-services-ec2-instance-type-script-prereqs)
+ [Sobre este exemplo](#cli-services-ec2-instance-type-script-about)
+ [Parâmetros](#cli-services-ec2-instance-type-script-params)
+ [Arquivos](#cli-services-ec2-instance-type-script-files.title)
+ [Referências](#cli-services-ec2-instance-type-script-references)

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

Antes que você possa executar qualquer um dos exemplos abaixo, as seguintes tarefas deverão ser concluídas.
+ 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).
+ O perfil utilizado deve ter permissões que garantem as operações da AWS realizadas pelos exemplos.
+ Uma instância do Amazon EC2 em execução na conta para a qual você tem permissão para interromper e modificar. Se você executar o script de teste, ele iniciará uma instância para você, testará alterando o tipo e encerrará a instância.
+ Como prática recomendada da AWS, conceda a esse código privilégio mínimo ou apenas as permissões necessárias para executar uma tarefa. Para obter mais informações, consulte [Conceder privilégio mínimo](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege) no *Manual do usuário do AWS Identity and Access Management (IAM)*.
+ Este código não foi testado em todas as regiões da AWS. Alguns serviços da AWS só estão disponíveis em regiões específicas. Para obter mais informações, consulte [Endpoints de serviço e cotas](https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html) no *Guia de referência geral da AWS*. 
+ Executar este código pode resultar em cobranças em sua conta da AWS. É sua responsabilidade garantir que todos os recursos criados por este script sejam removidos após você terminar de usá-los. 

## Sobre este exemplo
<a name="cli-services-ec2-instance-type-script-about"></a>

Este exemplo é escrito como uma função no arquivo de script shell `change_ec2_instance_type.sh` que você pode usar como `source` a partir de outro script ou da linha de comando. Cada arquivo de script contém comentários descrevendo cada uma das funções. Uma vez que a função esteja na memória, você poderá chamá-la via linha de comando. Por exemplo, os seguintes comandos alteram o tipo de instância especificada para `t2.nano`:

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

Para obter o exemplo completo e arquivos de script para download, consulte [Alterar tipo de instância do Amazon EC2](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/aws-cli/bash-linux/ec2/change-ec2-instance-type) no *Repositório de exemplos de código da AWS* no *GitHub*.

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

**-i**: *(string)* especifica o ID da instância a ser modificada.

**-t**: *(string)* especifica o tipo de instância do Amazon EC2 de destino.

**-r**: *(opção)* por padrão, não está definida. Se `-r` estiver definido, reiniciará a instância após a alteração do tipo.

**-f**: *(opção)* por padrão, o script solicita ao usuário que confirme o encerramento da instância antes de fazer a mudança. Se `-f` estiver definida, a função não avisará o usuário antes de encerrar a instância para realizar a alteração de tipo.

**-v**: *(opção)* por padrão, o script opera silenciosamente e exibe a saída somente em caso de erro. Se `-v` estiver definida, a função exibirá o status ao longo de sua operação.

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

**`change_ec2_instance_type.sh`**  
O arquivo de script principal contém a função `change_ec2_instance_type()` que executa as seguintes tarefas:  
+ Verifica se a instância do Amazon EC2 especificada existe.
+ A menos que a opção `-f` esteja selecionada, avisará o usuário antes de interromper a instância.
+ Altera o tipo de instância
+ Se você definir `-r`, reiniciará a instância e confirmará que a instância está sendo executada
Visualize o código para `[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)` no *GitHub*.

**`test_change_ec2_instance_type.sh`**  
O script do arquivo `test_change_ec2_instance_type.sh` testa os vários caminhos de código para a função `change_ec2_instance_type`. Se todas as etapas no script de teste funcionarem corretamente, ele removerá todos os recursos que criou.  
Você pode executar o script de teste com os seguintes parâmetros:  
+ **-v**: *(opção)* cada teste mostra um status de aprovação/falha conforme eles são executados. Por padrão, os testes são executados silenciosamente e a saída inclui apenas o status final de aprovação/falha.
+ **-i**: *(opção)* o script faz uma pausa após cada teste para permitir que você navegue pelos resultados intermediários de cada etapa. Isso permite examinar o status atual da instância usando o console do Amazon EC2. O script avançará para a próxima etapa após você pressionar *ENTER* no prompt.
Visualize o código para `[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)` no *GitHub*.

**`awsdocs_general.sh`**  
O arquivo de script `awsdocs_general.sh` contém funções de uso geral usadas em exemplos avançados para a AWS CLI.  
Visualize o código para `[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)` no *GitHub*.

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

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

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