

# Exemplos de comando guiado para a AWS CLI
<a name="cli-chap-services"></a>

A AWS Command Line Interface (AWS CLI) é uma ferramenta de código aberto que permite interagir com uma ampla variedade de Serviços da AWS usando comandos no shell da linha de comando. Esta seção fornece exemplos guiados que mostram como aproveitar a AWS CLI para acessar alguns dos Serviços da AWS. Isso inclui alguns dos comandos da AWS CLI personalizados, como os comandos de alto nível `aws s3`. Esses exemplos de comando demonstram ações comuns usadas por alguns Serviços da AWS e fornecem recursos adicionais para obter mais informações.

Se você é um usuário da AWS experiente ou novo na AWS CLI, esses exemplos guiados servem como um recurso para simplificar suas operações da AWS.

Para ter uma referência completa de todos os comandos disponíveis para cada AWS service (Serviço da AWS), consulte o [Guia de referência da AWS CLI versão 2](https://docs.aws.amazon.com/cli/latest/reference/index.html). Além disso, você pode utilizar a [ajuda integrada da linha de comando](cli-usage-help.md) para explorar a variedade de comandos do Serviços da AWS, opções e atributos da AWS CLI.

Para obter mais exemplos de comandos que não estão disponíveis nesta seção, consulte a seção [Exemplos de comando da AWS CLI](cli_code_examples.md). Estes exemplos de comandos de código aberto que também estão disponíveis no [Guia de referência versão 2 da AWS CLI](https://docs.aws.amazon.com/cli/latest/reference/index.html). Os exemplos de comando estão hospedados no repositório da [AWS CLI](https://github.com/aws/aws-cli/tree/develop/awscli/examples) no *GitHub*.



 Para exemplos de scripts bash de código aberto, consulte [AWS CLI com exemplos de código de script Bash](bash_code_examples.md). *Os exemplos de script Bash estão hospedados no [Repositório de exemplos de código da AWS](https://github.com/awsdocs/aws-doc-sdk-examples) no GitHub*.

**Topics**
+ [DynamoDB](cli-services-dynamodb.md)
+ [Amazon EC2](cli-services-ec2.md)
+ [Amazon Glacier](cli-services-glacier.md)
+ [IAM](cli-services-iam.md)
+ [Amazon S3](cli-services-s3.md)
+ [Amazon SNS](cli-services-sns.md)

# Uso do Amazon DynamoDB na AWS CLI
<a name="cli-services-dynamodb"></a>

A AWS Command Line Interface (AWS CLI) oferece suporte a todos os serviços de banco de dados da AWS, incluindo o Amazon DynamoDB. Use a AWS CLI para operações impromptu, como a criação de uma tabela. Ela também pode ser usada para incorporar operações do DynamoDB em scripts utilitários. 

Para obter mais informações sobre como usar a AWS CLI com o DynamoDB, consulte ```[dynamodb](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/index.html)` na *Referência de comandos da AWS CLI*.

Para listar os comandos da AWS CLI para o DynamoDB, use o comando a seguir.

```
$ aws dynamodb help
```

**Topics**
+ [Pré-requisitos](#cli-services-dynamodb-prereqs)
+ [Criação e uso de tabelas do DynamoDB](#cli-services-dynamodb-using)
+ [Uso do DynamoDB Local](#cli-services-dynamodb-local)
+ [Recursos](#cli-services-dynamodb-resources)

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

Para executar os comandos `dynamodb`, você precisa:
+ Instale e configure a AWS CLI. Para obter 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).

## Criação e uso de tabelas do DynamoDB
<a name="cli-services-dynamodb-using"></a>

O formato da linha de comando consiste em um nome de comando do DynamoDB, seguido pelos parâmetros desse comando. A AWS CLI oferece suporte à [sintaxe simplificada](cli-usage-shorthand.md) da CLI para os valores de parâmetro, assim como JSON completo.

O exemplo a seguir cria uma tabela chamada `MusicCollection`. 

```
$ aws dynamodb create-table \
    --table-name MusicCollection \
    --attribute-definitions AttributeName=Artist,AttributeType=S AttributeName=SongTitle,AttributeType=S \
    --key-schema AttributeName=Artist,KeyType=HASH AttributeName=SongTitle,KeyType=RANGE \
    --provisioned-throughput ReadCapacityUnits=1,WriteCapacityUnits=1
```

Adicione novas linhas à tabela com comandos semelhantes aos mostrados no exemplo a seguir. Esses exemplos usam uma combinação de sintaxe abreviada e JSON.

```
$ aws dynamodb put-item \
    --table-name MusicCollection \
    --item '{
        "Artist": {"S": "No One You Know"},
        "SongTitle": {"S": "Call Me Today"} ,
        "AlbumTitle": {"S": "Somewhat Famous"} 
      }' \
    --return-consumed-capacity TOTAL
{
    "ConsumedCapacity": {
        "CapacityUnits": 1.0,
        "TableName": "MusicCollection"
    }
}
```

```
$ aws dynamodb put-item \
    --table-name MusicCollection \
    --item '{ 
        "Artist": {"S": "Acme Band"}, 
        "SongTitle": {"S": "Happy Day"} , 
        "AlbumTitle": {"S": "Songs About Life"} 
      }' \
    --return-consumed-capacity TOTAL
{
    "ConsumedCapacity": {
        "CapacityUnits": 1.0,
        "TableName": "MusicCollection"
    }
}
```

Pode ser difícil compor um JSON válido em um comando com uma única linha. Para tornar isso mais fácil, a AWS CLI pode ler arquivos JSON. Por exemplo, considere o seguinte trecho de código JSON, que é armazenado em um arquivo chamado `expression-attributes.json`.

```
{
  ":v1": {"S": "No One You Know"},
  ":v2": {"S": "Call Me Today"}
}
```

Você pode usar esse arquivo para emitir uma solicitação `query` usando a AWS CLI. No exemplo a seguir, o conteúdo do arquivo `expression-attributes.json` é usado como o valor para o parâmetro `--expression-attribute-values`.

```
$ aws dynamodb query --table-name MusicCollection \
    --key-condition-expression "Artist = :v1 AND SongTitle = :v2" \
    --expression-attribute-values file://expression-attributes.json
{
    "Count": 1,
    "Items": [
        {
            "AlbumTitle": {
                "S": "Somewhat Famous"
            },
            "SongTitle": {
                "S": "Call Me Today"
            },
            "Artist": {
                "S": "No One You Know"
            }
        }
    ],
    "ScannedCount": 1,
    "ConsumedCapacity": null
}
```

## Uso do DynamoDB Local
<a name="cli-services-dynamodb-local"></a>

Além do DynamoDB, é possível usar a AWS CLI com oDynamoDB local. O DynamoDB Local é um banco de dados e servidor pequeno no lado do cliente que copia o serviço do DynamoDB. O DynamoDB Local permite criar aplicações que usam a API do DynamoDB sem de fato manipular tabelas ou dados no serviço da Web do DynamoDB. Em vez disso, todas as ações da API são roteadas para um banco de dados local. Isso economiza a taxa de throughput provisionado, o armazenamento de dados e as taxas de transferência de dados.

Para obter mais informações sobre o DynamoDB Local e como usá-lo com a AWS CLI, consulte as seguintes seções do [Guia do desenvolvedor do Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/):
+ [DynamoDB Local](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tools.DynamoDBLocal.html)
+ [Como usar a AWS CLI com o DynamoDB Local](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tools.CLI.html#UsingWithDDBLocal)

## Recursos
<a name="cli-services-dynamodb-resources"></a>

**Referência da AWS CLI:**
+ [https://docs.aws.amazon.com/cli/latest/reference/dynamodb/index.html](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/index.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/dynamodb/create-table.html](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/create-table.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/dynamodb/put-item.html](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/put-item.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/dynamodb/query.html](https://docs.aws.amazon.com/cli/latest/reference/dynamodb/query.html)

**Referência do serviço:**
+ [DynamoDB Local](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tools.DynamoDBLocal.html) no Guia do desenvolvedor do Amazon DynamoDB
+ [Como usar a AWS CLI com o DynamoDB Local](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Tools.CLI.html#UsingWithDDBLocal) no Guia do desenvolvedor do Amazon DynamoDB

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

# Como usar o Amazon Glacier na AWS CLI
<a name="cli-services-glacier"></a>


| Uma introdução ao Amazon Glacier | 
| --- | 
|    | 

Este tópico mostra exemplos de comandos da AWS CLI que executam tarefas comuns para o Amazon Glacier. Os exemplos demonstram como usar a AWS CLI para fazer upload de um arquivo grande no Amazon Glacier dividindo-o em partes menores e fazendo upload por meio da linha de comandos.

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

```
aws glacier help
```

**nota**  
Para obter referência de comandos e exemplos adicionais, consulte `[aws glacier](https://docs.aws.amazon.com/cli/latest/reference/glacier/index.html)` na *Referência de comandos da AWS CLI*.

**Topics**
+ [Pré-requisitos](#cli-services-glacier-prereqs)
+ [Criar um cofre do Amazon Glacier](#cli-services-glacier-vault)
+ [Preparar um arquivo para upload](#cli-services-glacier-prep)
+ [Iniciar um multipart upload e fazer upload de arquivos](#cli-services-glacier-initiate)
+ [Concluir o upload](#cli-services-glacier-complete)
+ [Recursos](#cli-services-glacier-resources)

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

Para executar os comandos `glacier`, 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).
+ Este tutorial usa várias ferramentas de linha de comando que normalmente vêm pré-instaladas em sistemas operacionais Unix, incluindo Linux e macOS. Os usuários do Windows podem usar as mesmas ferramentas instalando o [Cygwin](https://www.cygwin.com/) e executando os comandos do terminal Cygwin. São observados comandos originários do Windows e utilitários que executam as mesmas funções onde disponível.

## Criar um cofre do Amazon Glacier
<a name="cli-services-glacier-vault"></a>

Crie um cofre com o `[create-vault](https://docs.aws.amazon.com/cli/latest/reference/glacier/create-vault.html)`.

```
$ aws glacier create-vault --account-id - --vault-name myvault
{
    "location": "/123456789012/vaults/myvault"
}
```

**nota**  
Todos os comandos do Amazon Glacier exigem um parâmetro de ID de conta. Use o caractere de hífen (`--account-id -`) para usar a conta atual.

## Preparar um arquivo para upload
<a name="cli-services-glacier-prep"></a>

Crie um arquivo para o upload de teste. Os comandos a seguir criam um arquivo com o nome *largefile* com exatamente 3 MiB de dados aleatórios.

**Linux ou macOS**

```
$ dd if=/dev/urandom of=largefile bs=3145728 count=1
1+0 records in
1+0 records out
3145728 bytes (3.1 MB) copied, 0.205813 s, 15.3 MB/s
```

`dd` é um utilitário que copia um número de bytes a partir de um arquivo de entrada para um arquivo de saída. O exemplo anterior usa o arquivo de dispositivo do sistema `/dev/urandom` como uma fonte de dados aleatórios. O `fsutil` executa uma função semelhante no Windows.

**Windows**

```
C:\> fsutil file createnew largefile 3145728
File C:\temp\largefile is created
```

Em seguida, divida o arquivo em blocos de 1 MiB (1.048.576 bytes) usando um divisor de arquivos.

```
$ split -b 1048576 --verbose largefile chunk
creating file `chunkaa'
creating file `chunkab'
creating file `chunkac'
```

## Iniciar um multipart upload e fazer upload de arquivos
<a name="cli-services-glacier-initiate"></a>

Crie um upload fracionado no Amazon Glacier usando o comando `[initiate-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/glacier/initiate-multipart-upload.html)`.

```
$ aws glacier initiate-multipart-upload --account-id - --archive-description "multipart upload test" --part-size 1048576 --vault-name myvault
{
    "uploadId": "19gaRezEXAMPLES6Ry5YYdqthHOC_kGRCT03L9yetr220UmPtBYKk-OssZtLqyFu7sY1_lR7vgFuJV6NtcV5zpsJ",
    "location": "/123456789012/vaults/myvault/multipart-uploads/19gaRezEXAMPLES6Ry5YYdqthHOC_kGRCT03L9yetr220UmPtBYKk-OssZtLqyFu7sY1_lR7vgFuJV6NtcV5zpsJ"
}
```

O Amazon Glacier exige o tamanho de cada parte em bytes (1 MiB, neste exemplo), o nome do cofre e um ID de conta para configurar o upload fracionado. A AWS CLI gera um ID de upload quando a operação é concluída. Salve o ID de upload para um shell variável para uso posterior.

**Linux ou macOS**

```
$ UPLOADID="19gaRezEXAMPLES6Ry5YYdqthHOC_kGRCT03L9yetr220UmPtBYKk-OssZtLqyFu7sY1_lR7vgFuJV6NtcV5zpsJ"
```

**Windows**

```
C:\> set UPLOADID="19gaRezEXAMPLES6Ry5YYdqthHOC_kGRCT03L9yetr220UmPtBYKk-OssZtLqyFu7sY1_lR7vgFuJV6NtcV5zpsJ"
```

Depois, use o comando `[upload-multipart-part](https://docs.aws.amazon.com/cli/latest/reference/glacier/upload-multipart-part.html)` para fazer upload das três partes.

```
$ aws glacier upload-multipart-part --upload-id $UPLOADID --body chunkaa --range 'bytes 0-1048575/*' --account-id - --vault-name myvault
{
    "checksum": "e1f2a7cd6e047fa606fe2f0280350f69b9f8cfa602097a9a026360a7edc1f553"
}
$ aws glacier upload-multipart-part --upload-id $UPLOADID --body chunkab --range 'bytes 1048576-2097151/*' --account-id - --vault-name myvault
{
    "checksum": "e1f2a7cd6e047fa606fe2f0280350f69b9f8cfa602097a9a026360a7edc1f553"
}
$ aws glacier upload-multipart-part --upload-id $UPLOADID --body chunkac --range 'bytes 2097152-3145727/*' --account-id - --vault-name myvault
{
    "checksum": "e1f2a7cd6e047fa606fe2f0280350f69b9f8cfa602097a9a026360a7edc1f553"
}
```

**nota**  
O exemplo anterior usa o sinal de dólar (`$`) para fazer referência ao conteúdo da variável de shell `UPLOADID` no Linux. Na linha de comando do Windows, use um sinal de porcentagem (%) nos dois lados do nome da variável (por exemplo, `%UPLOADID%`).

Especifique o intervalo de bytes de cada parte ao fazer upload para que o Amazon Glacier possa remontá-lo na ordem correta. Cada parte é 1.048.576 bytes, portanto, a primeira parte ocupa 0-1048575 bytes, a segunda 1048576-2097151 e a terceira 2097152-3145727.

## Concluir o upload
<a name="cli-services-glacier-complete"></a>

O Amazon Glacier exige uma árvore hash do arquivo original para confirmar que todas as partes carregadas chegaram intactas à AWS. 

Para calcular uma árvore hash, você deve dividir o arquivo em partes de 1 MiB e calcular um binário SHA-256 hash de cada item. Em seguida, divida a lista de hashes em pares, combine os dois binários hashes em cada par e execute hashes dos resultados. Repita esse processo até que haja apenas um hash à esquerda. Se houver um número ímpar de hashes em qualquer nível, envie para o próximo nível sem modificá-lo.

A chave para calcular uma árvore hash corretamente ao usar os utilitários de linha de comando é armazenar cada hash em formato binário e converter apenas para hexadecimal na última etapa. A combinação ou hash de qualquer versão hexadecimal hash em árvore gerará um resultado incorreto.

**nota**  
Os usuários do Windows podem usar o comando `type` em vez do `cat`. OpenSSL está disponível para Windows em [OpenSSL.org](https://www.openssl.org/source/).

**Para calcular uma árvore hash**

1. Se ainda não fez isso, divida o arquivo original em partes de 1 MiB.

   ```
   $ split --bytes=1048576 --verbose largefile chunk
   creating file `chunkaa'
   creating file `chunkab'
   creating file `chunkac'
   ```

1. Calcule e armazene o hash SHA-256 binário de cada fragmento.

   ```
   $ openssl dgst -sha256 -binary chunkaa > hash1
   $ openssl dgst -sha256 -binary chunkab > hash2
   $ openssl dgst -sha256 -binary chunkac > hash3
   ```

1. Combine os primeiros dois hashes e execute o hash binário do resultado.

   ```
   $ cat hash1 hash2 > hash12
   $ openssl dgst -sha256 -binary hash12 > hash12hash
   ```

1. Combine o pai de partes de hash `aa` e `ab` com o hash de bloco `ac` e o resultado do hash, desta vez exibindo hexadecimal. Armazene o resultado em um shell variável.

   ```
   $ cat hash12hash hash3 > hash123
   $ openssl dgst -sha256 hash123
   SHA256(hash123)= 9628195fcdbcbbe76cdde932d4646fa7de5f219fb39823836d81f0cc0e18aa67
   $ TREEHASH=9628195fcdbcbbe76cdde932d4646fa7de5f219fb39823836d81f0cc0e18aa67
   ```

Por fim, preencha o upload com o comando `[complete-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/glacier/complete-multipart-upload.html)`. Este comando usa o tamanho do arquivo original em bytes, o valor de hash em árvore final em hexadecimal, e a ID da conta e nome do cofre.

```
$ aws glacier complete-multipart-upload --checksum $TREEHASH --archive-size 3145728 --upload-id $UPLOADID --account-id - --vault-name myvault
{
    "archiveId": "d3AbWhE0YE1m6f_fI1jPG82F8xzbMEEZmrAlLGAAONJAzo5QdP-N83MKqd96Unspoa5H5lItWX-sK8-QS0ZhwsyGiu9-R-kwWUyS1dSBlmgPPWkEbeFfqDSav053rU7FvVLHfRc6hg",
    "checksum": "9628195fcdbcbbe76cdde932d4646fa7de5f219fb39823836d81f0cc0e18aa67",
    "location": "/123456789012/vaults/myvault/archives/d3AbWhE0YE1m6f_fI1jPG82F8xzbMEEZmrAlLGAAONJAzo5QdP-N83MKqd96Unspoa5H5lItWX-sK8-QS0ZhwsyGiu9-R-kwWUyS1dSBlmgPPWkEbeFfqDSav053rU7FvVLHfRc6hg"
}
```

Também é possível verificar o status do cofre usando o comando `[describe-vault](https://docs.aws.amazon.com/cli/latest/reference/glacier/describe-vault.html)`.

```
$ aws glacier describe-vault --account-id - --vault-name myvault
{
    "SizeInBytes": 3178496,
    "VaultARN": "arn:aws:glacier:us-west-2:123456789012:vaults/myvault",
    "LastInventoryDate": "2018-12-07T00:26:19.028Z",
    "NumberOfArchives": 1,
    "CreationDate": "2018-12-06T21:23:45.708Z",
    "VaultName": "myvault"
}
```

**nota**  
O status do cofre é atualizado cerca de uma vez por dia. Consulte [Como trabalhar com cofres](https://docs.aws.amazon.com/amazonglacier/latest/dev/working-with-vaults.html) para obter mais informações.

Já é seguro remover o bloco e os arquivos de hash que você criou.

```
$ rm chunk* hash*
```

Para ter mais informações sobre uploads fracionados, consulte [Fazer upload de arquivos grandes em partes](https://docs.aws.amazon.com/amazonglacier/latest/dev/uploading-archive-mpu.html) e [Computar somas de verificação](https://docs.aws.amazon.com/amazonglacier/latest/dev/checksum-calculations.html) no *Guia do desenvolvedor do Amazon Glacier*. 

## Recursos
<a name="cli-services-glacier-resources"></a>

**AWS CLI Referência da:**
+ `[aws glacier](https://docs.aws.amazon.com/cli/latest/reference/glacier/index.html)`
+ `[aws glacier complete-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/glacier/complete-multipart-upload.html)`
+ `[aws glacier create-vault](https://docs.aws.amazon.com/cli/latest/reference/glacier/create-vault.html)`
+ `[aws glacier describe-vault](https://docs.aws.amazon.com/cli/latest/reference/glacier/describe-vault.html)`
+ `[aws glacier initiate-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/glacier/initiate-multipart-upload.html)`

**Referência do serviço:**
+ [Guia do desenvolvedor do Amazon Glacier](https://docs.aws.amazon.com/amazonglacier/latest/dev/)
+ [Fazer upload de arquivos grandes em partes](https://docs.aws.amazon.com/amazonglacier/latest/dev/uploading-archive-mpu.html) no *Guia do desenvolvedor do Amazon Glacier*
+ [Computar somas de verificação](https://docs.aws.amazon.com/amazonglacier/latest/dev/checksum-calculations.html) no *Guia do desenvolvedor do Amazon Glacier*
+ [Trabalhar com cofres](https://docs.aws.amazon.com/amazonglacier/latest/dev/working-with-vaults.html) no *Guia do desenvolvedor do Amazon Glacier*

# Uso do IAM na AWS CLI
<a name="cli-services-iam"></a>


| Uma introdução à AWS Identity and Access Management. | 
| --- | 
|    | 

Acesse os recursos do AWS Identity and Access Management (IAM) usando a AWS Command Line Interface (AWS CLI). Para listar os comandos da AWS CLI para o IAM use o comando a seguir.

```
aws iam help
```

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

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

Para obter mais informações sobre o serviço do IAM, consulte o [Guia do usuário do AWS Identity and Access Management](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html).

**Topics**
+ [Criação de usuários e grupos do IAM](#cli-services-iam-new-user-group)
+ [Associar uma política gerenciada do IAM a um usuário](#cli-services-iam-policy)
+ [Definição de uma senha inicial para um usuário do IAM](#cli-services-iam-set-pw)
+ [Criar uma chave de acesso para um usuário do IAM](#cli-services-iam-create-creds)

## Criação de usuários e grupos do IAM
<a name="cli-services-iam-new-user-group"></a>

**Como criar um grupo e adicionar um novo usuário a ele**

1. Use o comando [https://docs.aws.amazon.com/cli/latest/reference/iam/create-group.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-group.html) para criar o grupo.

   ```
   $ aws iam create-group --group-name MyIamGroup
   {
       "Group": {
           "GroupName": "MyIamGroup",
           "CreateDate": "2018-12-14T03:03:52.834Z",
           "GroupId": "AGPAJNUJ2W4IJVEXAMPLE",
           "Arn": "arn:aws:iam::123456789012:group/MyIamGroup",
           "Path": "/"
       }
   }
   ```

1. Use o comando [https://docs.aws.amazon.com/cli/latest/reference/iam/create-user.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-user.html) para criar o usuário.

   ```
   $ aws iam create-user --user-name MyUser
   {
       "User": {
           "UserName": "MyUser",
           "Path": "/",
           "CreateDate": "2018-12-14T03:13:02.581Z",
           "UserId": "AIDAJY2PE5XUZ4EXAMPLE",
           "Arn": "arn:aws:iam::123456789012:user/MyUser"
       }
   }
   ```

1. Use o comando [https://docs.aws.amazon.com/cli/latest/reference/iam/add-user-to-group.html](https://docs.aws.amazon.com/cli/latest/reference/iam/add-user-to-group.html) para adicionar o usuário ao grupo.

   ```
   $ aws iam add-user-to-group --user-name MyUser --group-name MyIamGroup
   ```

1. Para verificar se o grupo `MyIamGroup` contém `MyUser`, use o comando [https://docs.aws.amazon.com/cli/latest/reference/iam/get-group.html](https://docs.aws.amazon.com/cli/latest/reference/iam/get-group.html).

   ```
   $ aws iam get-group --group-name MyIamGroup
   {
       "Group": {
           "GroupName": "MyIamGroup",
           "CreateDate": "2018-12-14T03:03:52Z",
           "GroupId": "AGPAJNUJ2W4IJVEXAMPLE",
           "Arn": "arn:aws:iam::123456789012:group/MyIamGroup",
           "Path": "/"
       },
       "Users": [
           {
               "UserName": "MyUser",
               "Path": "/",
               "CreateDate": "2018-12-14T03:13:02Z",
               "UserId": "AIDAJY2PE5XUZ4EXAMPLE",
               "Arn": "arn:aws:iam::123456789012:user/MyUser"
           }
       ],
       "IsTruncated": "false"
   }
   ```

## Associar uma política gerenciada do IAM a um usuário
<a name="cli-services-iam-policy"></a>

Neste exemplo, a política fornece ao usuário “Acesso de Usuário Power”.

**Como associar uma política gerenciada do IAM a um usuário**

1. Determine o nome do recurso da Amazon (ARN) da política a ser anexada. O comando a seguir usa `list-policies` para encontrar o ARN da política com o nome `PowerUserAccess`. Depois, ele armazena o ARN em uma variável de ambiente.

   ```
   $ export POLICYARN=$(aws iam list-policies --query 'Policies[?PolicyName==`PowerUserAccess`].{ARN:Arn}' --output text)       ~
   $ echo $POLICYARN
   arn:aws:iam::aws:policy/PowerUserAccess
   ```

1. Para anexar a política, use o comando [https://docs.aws.amazon.com/cli/latest/reference/iam/attach-user-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/attach-user-policy.html) e faça referência à variável de ambiente que contém o ARN da política.

   ```
   $ aws iam attach-user-policy --user-name MyUser --policy-arn $POLICYARN
   ```

1. Verifique se a política foi anexada ao usuário executando o comando [https://docs.aws.amazon.com/cli/latest/reference/iam/list-attached-user-policies.html](https://docs.aws.amazon.com/cli/latest/reference/iam/list-attached-user-policies.html).

   ```
   $ aws iam list-attached-user-policies --user-name MyUser
   {
       "AttachedPolicies": [
           {
               "PolicyName": "PowerUserAccess",
               "PolicyArn": "arn:aws:iam::aws:policy/PowerUserAccess"
           }
       ]
   }
   ```

Para obter mais informações, consulte [Recursos de gerenciamento de acesso](https://docs.aws.amazon.com/IAM/latest/UserGuide/policies-additional-resources.html). Este tópico fornece links para uma visão geral das permissões e políticas, bem como links para exemplos de políticas de acesso ao Amazon S3, Amazon EC2 e outros serviços.

## Definição de uma senha inicial para um usuário do IAM
<a name="cli-services-iam-set-pw"></a>

O comando a seguir usa `[create-login-profile](https://docs.aws.amazon.com/cli/latest/reference/iam/create-login-profile.html)` para definir uma senha inicial para o usuário especificado. Quando o usuário faz login pela primeira vez, ele precisa alterar a senha para algo que apenas ele sabe.

```
$ aws iam create-login-profile --user-name MyUser --password My!User1Login8P@ssword --password-reset-required
{
    "LoginProfile": {
        "UserName": "MyUser",
        "CreateDate": "2018-12-14T17:27:18Z",
        "PasswordResetRequired": true
    }
}
```

Você pode usar o comando `update-login-profile` para *alterar* a senha para um usuário.

```
$ aws iam update-login-profile --user-name MyUser --password My!User1ADifferentP@ssword
```

## Criar uma chave de acesso para um usuário do IAM
<a name="cli-services-iam-create-creds"></a>

Você pode usar o comando [https://docs.aws.amazon.com/cli/latest/reference/iam/create-access-key.html](https://docs.aws.amazon.com/cli/latest/reference/iam/create-access-key.html) para criar uma chave de acesso para um usuário. Uma chave de acesso é um conjunto de credenciais de segurança que consiste em um ID de chave de acesso e uma chave secreta. 

Um usuário pode criar apenas duas chaves de acesso ao mesmo tempo. Se você tentar criar um terceiro conjunto, o comando retornará um erro `LimitExceeded`.

```
$ aws iam create-access-key --user-name MyUser
{
    "AccessKey": {
        "UserName": "MyUser",
        "AccessKeyId": "AKIAIOSFODNN7EXAMPLE",
        "Status": "Active",
        "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
        "CreateDate": "2018-12-14T17:34:16Z"
    }
}
```

Use o comando [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-access-key.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-access-key.html) para excluir uma chave de acesso para um usuário. Especifique qual chave de acesso deve ser excluída usando o ID de chave de acesso.

```
$ aws iam delete-access-key --user-name MyUser --access-key-id AKIAIOSFODNN7EXAMPLE
```

# Como usar o Amazon S3 na AWS CLI
<a name="cli-services-s3"></a>


| Introdução ao Amazon Simple Storage Service (Amazon S3) | 
| --- | 
|    | 

É possível acessar os recursos do Amazon Simple Storage Service (Amazon S3) usando a AWS Command Line Interface (AWS CLI). O Amazon S3 é um serviço de armazenamento de objetos altamente escalável e durável. O Amazon S3 foi projetado para fornecer capacidade de armazenamento praticamente ilimitada, tornando-o uma solução ideal para uma ampla variedade de necessidades de armazenamento e gerenciamento de dados.

O Amazon S3 permite que você armazene e recupere qualquer quantidade de dados, desde arquivos pequenos até grandes conjuntos de dados, na forma de objetos. Cada objeto é armazenado em um contêiner chamado bucket, que pode ser acessado e gerenciado por meio do Console de gerenciamento da AWS ou programaticamente por meio dos SDKs da AWS, de ferramentas e da AWS CLI.

Além do armazenamento básico, o Amazon S3 também oferece uma variedade de atributos, incluindo gerenciamento do ciclo de vida, versionamento, escalabilidade e segurança. Eles se integram a outros Serviços da AWS, permitindo que você crie soluções baseadas em nuvem que se adaptam às suas necessidades.

A AWS CLI oferece dois níveis de comandos para acessar o Amazon S3:
+ **s3**: comandos personalizados de alto nível feitos especificamente para a AWS CLI que simplificam a execução de tarefas comuns, como criar, manipular, excluir e sincronizar objetos e buckets.
+ **s3api**: expõe o acesso direto a todas as operações da API do Amazon S3, o que permite realizar operações avançadas.

**Topics**
+ [Como usar comandos de alto nível (s3) na AWS CLI](cli-services-s3-commands.md)
+ [Usar comandos em nível de API (s3api) na AWS CLI](cli-services-s3-apicommands.md)
+ [Exemplo de script para o ciclo de vida de bucket do Amazon S3 na AWS CLI](cli-services-s3-lifecycle-example.md)

# Como usar comandos de alto nível (s3) na AWS CLI
<a name="cli-services-s3-commands"></a>

Este tópico descreve alguns dos comandos que você pode utilizar para gerenciar buckets e objetos do Amazon S3 usando os comandos [https://docs.aws.amazon.com/cli/latest/reference/s3/index.html](https://docs.aws.amazon.com/cli/latest/reference/s3/index.html) na AWS CLI. mandos não abordados neste tópico e outros exemplos de comando, consulte os comandos [https://docs.aws.amazon.com/cli/latest/reference/s3/index.html](https://docs.aws.amazon.com/cli/latest/reference/s3/index.html) na *Referência de comandos da AWS CLI*.

Os comandos `aws s3` de alto nível simplificam o gerenciamento de objetos do Amazon S3. Esses comandos permitem a você gerenciar o conteúdo do Amazon S3 dentro dele mesmo e com diretórios locais.

**Topics**
+ [Pré-requisitos](#using-s3-commands-prereqs)
+ [Antes de começar](#using-s3-commands-before)
+ [Criar um bucket](#using-s3-commands-managing-buckets-creating)
+ [Listar buckets e objetos](#using-s3-commands-listing-buckets)
+ [Excluir buckets](#using-s3-commands-delete-buckets)
+ [Excluir objetos](#using-s3-commands-delete-objects)
+ [Mover objetos](#using-s3-commands-managing-objects-move)
+ [Copiar objetos](#using-s3-commands-managing-objects-copy)
+ [Sincronizar objetos](#using-s3-commands-managing-objects-sync)
+ [Opções usadas com frequência para comandos s3](#using-s3-commands-managing-objects-param)
+ [Recursos](#using-s3-commands-managing-buckets-references)

## Pré-requisitos
<a name="using-s3-commands-prereqs"></a>

Para executar os comandos `s3`, 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).
+ O perfil utilizado deve ter permissões que garantem as operações da AWS realizadas pelos exemplos.
+ Entenda estes termos do Amazon S3:
  + **Bucket**: uma pasta de nível superior do Amazon S3.
  + **Prefixo**: uma pasta do Amazon S3 em um bucket.
  + **Objeto**: qualquer item hospedado em um bucket do Amazon S3.

## Antes de começar
<a name="using-s3-commands-before"></a>

Esta seção descreve algumas coisas a serem observadas antes de usar comandos da `aws s3`.

### Carregamentos de objetos grandes
<a name="using-s3-commands-before-large"></a>

Quando você usa comandos da `aws s3` para fazer upload de objetos grandes em um bucket do Amazon S3, a AWS CLI executa automaticamente um upload fracionado. Quando esses comandos da `aws s3` são usados, não é possível continuar uploads que falharam. 

Se o upload fracionado falhar devido a um tempo limite excedido, ou se você o cancelou manualmente na AWS CLI, a AWS CLI interromperá o upload e limpará todos os arquivos que foram criados. Esse processo pode levar alguns minutos. 

Se o processo de upload fracionado ou limpeza for cancelado por um comando kill ou uma falha do sistema, os arquivos criados permanecerão no bucket do Amazon S3. Para limpar o upload fracionado, use o comando [s3api abort-multipart-upload](https://docs.aws.amazon.com/cli/latest/reference/s3api/abort-multipart-upload.html).

### Propriedades e tags de arquivos em cópias com várias partes
<a name="using-s3-commands-before-tags"></a>

Quando você usa a versão da AWS CLI versão 1 dos comandos no namespace do `aws s3` para copiar um arquivo de um local de bucket do Amazon S3 para outro local de bucket do Amazon S3 e essa operação usa a [cópia fracionada](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CopyingObjctsMPUapi.html), nenhuma propriedade de arquivo do objeto de origem é copiada para o objeto de destino.

Por padrão, os comandos da AWS CLI versão 2 no namespace do `s3` que executam cópias de várias partes agora transferem todas as etiquetas e o seguinte conjunto de propriedades da cópia de origem para a cópia de destino: `content-type`, `content-language`, `content-encoding`, `content-disposition`, `cache-control`, `expires` e `metadata`.

Isso pode resultar em chamadas de API da AWS adicionais para o endpoint do Amazon S3 que não teriam sido feitas se você tivesse usado a AWS CLI versão 1. Elas podem incluir: `HeadObject`, `GetObjectTagging` e `PutObjectTagging`.

Se você precisar alterar esse comportamento padrão em comandos da AWS CLI versão 2, use o parâmetro `--copy-props` para especificar uma das seguintes opções:
+ **default**: o valor padrão. Especifica que a cópia inclui todas as tags anexadas ao objeto de origem e as propriedades englobadas pelo parâmetro `--metadata-directive` usado para cópias que não são multipart: `content-type`, `content-language`, `content-encoding`, `content-disposition`, `cache-control`, `expires` e `metadata`.
+ **metadata-directive**: especifica que a cópia inclui apenas as propriedades que são englobadas pelo parâmetro `--metadata-directive` usado para cópias não fracionadas. Não copia nenhuma etiqueta.
+ **none**: especifica que a cópia não inclui nenhuma das propriedades do objeto de origem.

## Criar um bucket
<a name="using-s3-commands-managing-buckets-creating"></a>

Use o comando [https://docs.aws.amazon.com/cli/latest/reference/s3/mb.html](https://docs.aws.amazon.com/cli/latest/reference/s3/mb.html) para criar um bucket. Os nomes de bucket devem ser ***globalmente*** exclusivos (únicos em todo o Amazon S3) e devem ser compatíveis com o DNS. 

Nomes de bucket podem conter letras minúsculas, números, hífens e pontos. Os nomes de bucket podem iniciar e terminar apenas com uma letra ou número e não podem conter um ponto ao lado de um hífen ou outro ponto. 

**Sintaxe**

```
$ aws s3 mb <target> [--options]
```

### Exemplos de s3 mb
<a name="using-s3-commands-managing-buckets-creating-examples"></a>

O exemplo a seguir cria o bucket `s3://amzn-s3-demo-bucket`.

```
$ aws s3 mb s3://amzn-s3-demo-bucket
```

## Listar buckets e objetos
<a name="using-s3-commands-listing-buckets"></a>

Para listar seus buckets, pastas ou objetos, use o comando [https://docs.aws.amazon.com/cli/latest/reference/s3/ls.html](https://docs.aws.amazon.com/cli/latest/reference/s3/ls.html). O uso do comando sem um destino ou opções lista todos os buckets. 

**Sintaxe**

```
$ aws s3 ls <target> [--options]
```

Para ver algumas opções comuns que podem ser usadas com este comando e exemplos, consulte [Opções usadas com frequência para comandos s3](#using-s3-commands-managing-objects-param). Para obter uma lista completa de opções disponíveis, consulte [https://docs.aws.amazon.com/cli/latest/reference/s3/ls.html](https://docs.aws.amazon.com/cli/latest/reference/s3/ls.html) na *Referência de comandos da AWS CLI*.

### Exemplos de s3 ls
<a name="using-s3-commands-managing-objects-list-examples"></a>

O exemplo a seguir lista todos os seus buckets do Amazon S3.

```
$ aws s3 ls
2018-12-11 17:08:50 amzn-s3-demo-bucket1
2018-12-14 14:55:44 amzn-s3-demo-bucket2
```

O comando a seguir lista todos os objetos e prefixos em um bucket. Neste exemplo de saída, o prefixo `example/` tem um arquivo chamado `MyFile1.txt`.

```
$ aws s3 ls s3://amzn-s3-demo-bucket
                           PRE example/
2018-12-04 19:05:48          3 MyFile1.txt
```

Você pode filtrar a saída para um prefixo específico, incluindo-o no comando. O comando a seguir relaciona os objetos em *bucket-name/example* (ou seja, objetos em *bucket-name* filtrados pelo prefixo *example/*).

```
$ aws s3 ls s3://amzn-s3-demo-bucket/example/
2018-12-06 18:59:32          3 MyFile1.txt
```

Para exibir somente os buckets e objetos em uma região específica, use as opções `--region`

```
$ aws s3 ls --region us-east-2
2018-12-06 18:59:32          3 MyFile1.txt
```

Se tiver uma lista extensa de buckets e objetos, você poderá paginar os resultados usando as opções `--max-items` ou `--page-size`. A opção `--max-items` limita o total de buckets e objetos retornados em uma chamada e a opção `--page-size` limita quantos deles são listados em uma página.

```
$ aws s3 ls --max-items 100 --page-size 10
```

Consulte mais informações sobre paginação em [Como usar o parâmetro --page-size](cli-usage-pagination.md#cli-usage-pagination-pagesize) e [Como usar o parâmetro --max-items](cli-usage-pagination.md#cli-usage-pagination-maxitems).

## Excluir buckets
<a name="using-s3-commands-delete-buckets"></a>

Para excluir um bucket, use o comando [https://docs.aws.amazon.com/cli/latest/reference/s3/rb.html](https://docs.aws.amazon.com/cli/latest/reference/s3/rb.html). 

**Sintaxe**

```
$ aws s3 rb <target> [--options]
```

### Exemplos de s3 rb
<a name="using-s3-commands-removing-buckets-examples"></a>

O exemplo a seguir remove o bucket `s3://amzn-s3-demo-bucket`.

```
$ aws s3 rb s3://amzn-s3-demo-bucket
```

Por padrão, o bucket deve estar vazio para a operação ser bem-sucedida. Para remover um bucket que não está vazio, é necessário incluir a opção `--force`. Se você estiver usando um bucket com versionamento que contém objetos anteriormente excluídos, mas ainda retidos, esse comando *não* permitirá que você remova o bucket. Você deve primeiro remover todo o conteúdo.

O exemplo de comando a seguir exclui todos os objetos no bucket e, em seguida, exclui o bucket.

```
$ aws s3 rb s3://amzn-s3-demo-bucket --force
```

## Excluir objetos
<a name="using-s3-commands-delete-objects"></a>

Para excluir objetos em um bucket ou seu diretório local, use o comando [https://docs.aws.amazon.com/cli/latest/reference/s3/rm.html](https://docs.aws.amazon.com/cli/latest/reference/s3/rm.html). 

**Sintaxe**

```
$ aws s3 rm  <target> [--options]
```

Para ver algumas opções comuns que podem ser usadas com este comando e exemplos, consulte [Opções usadas com frequência para comandos s3](#using-s3-commands-managing-objects-param). Para obter uma lista completa de opções, consulte [https://docs.aws.amazon.com/cli/latest/reference/s3/rm.html](https://docs.aws.amazon.com/cli/latest/reference/s3/rm.html) na *Referência de comandos da AWS CLI*.

### Exemplos de s3 rm
<a name="using-s3-commands-delete-objects-examples"></a>

O exemplo a seguir exclui `filename.txt` de `s3://amzn-s3-demo-bucket/example`.

```
$ aws s3 rm s3://amzn-s3-demo-bucket/example/filename.txt
```

O exemplo a seguir exclui todos os objetos de `s3://amzn-s3-demo-bucket/example` usando a opção `--recursive`.

```
$ aws s3 rm s3://amzn-s3-demo-bucket/example --recursive
```

## Mover objetos
<a name="using-s3-commands-managing-objects-move"></a>

Use o comando [https://docs.aws.amazon.com/cli/latest/reference/s3/mv.html](https://docs.aws.amazon.com/cli/latest/reference/s3/mv.html) para mover objetos de um bucket ou diretório local. O comando `s3 mv` copia o objeto ou arquivo de origem para o destino especificado e, em seguida, exclui o objeto ou o arquivo de origem.

**Sintaxe**

```
$ aws s3 mv <source> <target> [--options]
```

Para ver algumas opções comuns que podem ser usadas com este comando e exemplos, consulte [Opções usadas com frequência para comandos s3](#using-s3-commands-managing-objects-param). Para obter uma lista completa de opções disponíveis, consulte [https://docs.aws.amazon.com/cli/latest/reference/s3/mv.html](https://docs.aws.amazon.com/cli/latest/reference/s3/mv.html) na *Referência de comandos da AWS CLI*.

**Atenção**  
Se você estiver usando quaisquer tipos de ARNs de ponto de acesso ou aliases de ponto de acesso em seus URIs de origem ou destino do Amazon S3, você deve tomar cuidado extra para que seus URIs do Amazon S3 de origem e destino sejam resolvidos em diferentes buckets subjacentes. Se os buckets de origem e destino forem iguais, o arquivo ou objeto de origem poderá ser movido para si mesmo, o que pode resultar na exclusão acidental do arquivo ou objeto de origem. Para verificar se os buckets de origem e destino não são iguais, use o parâmetro `--validate-same-s3-paths` ou defina a variável de ambiente ``AWS_CLI_S3_MV_VALIDATE_SAME_S3_PATHS`` como `true`.

### Exemplos de s3 mv
<a name="using-s3-commands-managing-objects-move-examples"></a>

O exemplo a seguir move todos os objetos de `s3://amzn-s3-demo-bucket/example` para `s3://amzn-s3-demo-bucket/`.

```
$ aws s3 mv s3://amzn-s3-demo-bucket/example s3://amzn-s3-demo-bucket/
```

O exemplo a seguir move um arquivo local do diretório de trabalho atual para o bucket do Amazon S3 com o comando `s3 mv`.

```
$ aws s3 mv filename.txt s3://amzn-s3-demo-bucket
```

O exemplo a seguir move um arquivo do bucket do Amazon S3 para o diretório de trabalho atual, onde `./` especifica o diretório de trabalho atual.

```
$ aws s3 mv s3://amzn-s3-demo-bucket/filename.txt ./
```

## Copiar objetos
<a name="using-s3-commands-managing-objects-copy"></a>

Use o comando [https://docs.aws.amazon.com/cli/latest/reference/s3/cp.html](https://docs.aws.amazon.com/cli/latest/reference/s3/cp.html) para copiar objetos de um bucket ou diretório local. 

**Sintaxe**

```
$ aws s3 cp <source> <target> [--options]
```

Você pode usar o parâmetro dash para transmitir arquivos para entrada padrão (`stdin`) ou saída padrão (`stdout`). 

**Atenção**  
Se estiver usando o PowerShell, o shell poderá alterar a codificação de um CRLF ou adicionar um CRLF à entrada ou saída encadeada ou à saída redirecionada.

O comando `s3 cp` usa a sintaxe a seguir para fazer upload de um fluxo de arquivos do `stdin` para um bucket especificado.

**Sintaxe**

```
$ aws s3 cp - <target> [--options]
```

O comando `s3 cp` usa a sintaxe a seguir para baixar um fluxo de arquivos do Amazon S3 para `stdout`.

**Sintaxe**

```
$ aws s3 cp <target> [--options] -
```

Para ver algumas opções comuns que podem ser usadas com este comando e exemplos, consulte [Opções usadas com frequência para comandos s3](#using-s3-commands-managing-objects-param). Para obter a lista completa de opções, consulte [https://docs.aws.amazon.com/cli/latest/reference/s3/cp.html](https://docs.aws.amazon.com/cli/latest/reference/s3/cp.html) na *Referência de comandos da AWS CLI*.

### `s3 cp`Exemplos da
<a name="using-s3-commands-managing-objects-copy-examples"></a>

O exemplo a seguir copia todos os objetos de `s3://amzn-s3-demo-bucket/example` para `s3://amzn-s3-demo-bucket/`.

```
$ aws s3 cp s3://amzn-s3-demo-bucket/example s3://amzn-s3-demo-bucket/
```

O exemplo a seguir copia um arquivo local do diretório de trabalho atual para o bucket do Amazon S3 com o comando `s3 cp`.

```
$ aws s3 cp filename.txt s3://amzn-s3-demo-bucket
```

O exemplo a seguir copia um arquivo do bucket do Amazon S3 para o diretório de trabalho atual, onde `./` especifica o diretório de trabalho atual.

```
$ aws s3 cp s3://amzn-s3-demo-bucket/filename.txt ./
```

O exemplo a seguir usa echo para transmitir o texto “hello world” para o arquivo `s3://bucket-name/filename.txt`.

```
$ echo "hello world" | aws s3 cp - s3://amzn-s3-demo-bucket/filename.txt
```

O exemplo a seguir transmite o arquivo `s3://amzn-s3-demo-bucket/filename.txt` para `stdout` e imprime o conteúdo no console.

```
$ aws s3 cp s3://amzn-s3-demo-bucket/filename.txt -
hello world
```

O exemplo a seguir transmite o conteúdo de `s3://bucket-name/pre` para`stdout`, usa o comando `bzip2` para comprimir os arquivos e faz upload do novo arquivo compactado chamado `key.bz2` para `s3://bucket-name`.

```
$ aws s3 cp s3://amzn-s3-demo-bucket/pre - | bzip2 --best | aws s3 cp - s3://amzn-s3-demo-bucket/key.bz2
```

## Sincronizar objetos
<a name="using-s3-commands-managing-objects-sync"></a>

O comando [https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html](https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html) sincroniza o conteúdo de um bucket e um diretório ou o conteúdo de dois buckets. Normalmente, `s3 sync` copia arquivos que estão faltando ou desatualizadas ou objetos entre a origem e o destino. No entanto, você também pode fornecer a opção `--delete` para remover arquivos ou objetos do destino que não estão presentes na origem. 

**Sintaxe**

```
$ aws s3 sync <source> <target> [--options]
```

Para ver algumas opções comuns que podem ser usadas com este comando e exemplos, consulte [Opções usadas com frequência para comandos s3](#using-s3-commands-managing-objects-param). Para obter uma lista completa de opções, consulte [https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html](https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html) na *Referência de comandos da AWS CLI*.

### Exemplos de s3 sync
<a name="using-s3-commands-managing-objects-sync-examples"></a>

O exemplo a seguir sincroniza o conteúdo de um prefixo do Amazon S3 chamado *path* no bucket chamado *amzn-s3-demo-bucket* com o diretório de trabalho atual. 

`s3 sync` atualiza todos os arquivos que têm tamanho ou hora de modificação diferentes dos arquivos com o mesmo nome no destino. A saída exibe operações específicas executadas durante a sincronização. Observe que a operação sincroniza recursivamente o subdiretório `MySubdirectory` e seu conteúdo com `s3://amzn-s3-demo-bucket/path/MySubdirectory`.

```
$ aws s3 sync . s3://amzn-s3-demo-bucket/path
upload: MySubdirectory\MyFile3.txt to s3://amzn-s3-demo-bucket/path/MySubdirectory/MyFile3.txt
upload: MyFile2.txt to s3://amzn-s3-demo-bucket/path/MyFile2.txt
upload: MyFile1.txt to s3://amzn-s3-demo-bucket/path/MyFile1.txt
```

O exemplo a seguir, uma extensão do exemplo anterior, mostra como usar a opção `--delete`.

```
// Delete local file
$ rm ./MyFile1.txt

// Attempt sync without --delete option - nothing happens
$ aws s3 sync . s3://amzn-s3-demo-bucket/path

// Sync with deletion - object is deleted from bucket
$ aws s3 sync . s3://amzn-s3-demo-bucket/path --delete
delete: s3://amzn-s3-demo-bucket/path/MyFile1.txt

// Delete object from bucket
$ aws s3 rm s3://amzn-s3-demo-bucket/path/MySubdirectory/MyFile3.txt
delete: s3://amzn-s3-demo-bucket/path/MySubdirectory/MyFile3.txt

// Sync with deletion - local file is deleted
$ aws s3 sync s3://amzn-s3-demo-bucket/path . --delete
delete: MySubdirectory\MyFile3.txt

// Sync with Infrequent Access storage class
$ aws s3 sync . s3://amzn-s3-demo-bucket/path --storage-class STANDARD_IA
```

Quando a opção `--delete` é usada, as opções `--exclude` e `--include` podem filtrar arquivos ou objetos a serem excluídos durante uma operação `s3 sync`. Nesse caso, a sequência de parâmetro deve especificar os arquivos a serem excluídos ou incluídos, a exclusão no contexto do diretório de destino ou bucket. Por exemplo:

```
Assume local directory and s3://amzn-s3-demo-bucket/path currently in sync and each contains 3 files:
MyFile1.txt
MyFile2.rtf
MyFile88.txt
'''

// Sync with delete, excluding files that match a pattern. MyFile88.txt is deleted, while remote MyFile1.txt is not.
$ aws s3 sync . s3://amzn-s3-demo-bucket/path --delete --exclude "path/MyFile?.txt"
delete: s3://amzn-s3-demo-bucket/path/MyFile88.txt
'''

// Sync with delete, excluding MyFile2.rtf - local file is NOT deleted
$ aws s3 sync s3://amzn-s3-demo-bucket/path . --delete --exclude "./MyFile2.rtf"
download: s3://amzn-s3-demo-bucket/path/MyFile1.txt to MyFile1.txt
'''

// Sync with delete, local copy of MyFile2.rtf is deleted
$ aws s3 sync s3://amzn-s3-demo-bucket/path . --delete
delete: MyFile2.rtf
```

## Opções usadas com frequência para comandos s3
<a name="using-s3-commands-managing-objects-param"></a>

As opções a seguir são usadas frequentemente para os comandos descritos neste tópico. Para obter uma lista completa de opções que você pode usar em um comando, consulte o comando específico no [Guia de referência da AWS CLI versão 2](https://docs.aws.amazon.com/cli/latest/reference/index.html).

**acl**  
`s3 sync` e `s3 cp` podem usar a opção `--acl`. Isso permite definir as permissões de acesso para arquivos copiados para o Amazon S3. A opção `--acl` aceita os valores `private`, `public-read`e `public-read-write`. Para obter mais informações, consulte [ACL pré-configurada](https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl) no *Guia do usuário do Amazon S3*.  

```
$ aws s3 sync . s3://amzn-s3-demo-bucket/path --acl public-read
```

**exclude**  
Ao usar o comando `s3 cp`, `s3 mv`, `s3 sync` ou `s3 rm`, você pode filtrar os resultados usando a opção `--exclude` ou `--include`. A opção `--exclude` define regras para excluir apenas objetos do comando, e as opções se aplicam na ordem especificada. Isso é mostrado no exemplo a seguir.  

```
Local directory contains 3 files:
MyFile1.txt
MyFile2.rtf
MyFile88.txt

// Exclude all .txt files, resulting in only MyFile2.rtf being copied
$ aws s3 cp . s3://amzn-s3-demo-bucket/path --exclude "*.txt"

// Exclude all .txt files but include all files with the "MyFile*.txt" format, resulting in, MyFile1.txt, MyFile2.rtf, MyFile88.txt being copied
$ aws s3 cp . s3://amzn-s3-demo-bucket/path --exclude "*.txt" --include "MyFile*.txt"

// Exclude all .txt files, but include all files with the "MyFile*.txt" format, but exclude all files with the "MyFile?.txt" format resulting in, MyFile2.rtf and MyFile88.txt being copied
$ aws s3 cp . s3://amzn-s3-demo-bucket/path --exclude "*.txt" --include "MyFile*.txt" --exclude "MyFile?.txt"
```

**include**  
Ao usar o comando `s3 cp`, `s3 mv`, `s3 sync` ou `s3 rm`, você pode filtrar os resultados usando a opção `--exclude` ou `--include`. A opção `--include` define regras para incluir apenas objetos especificados para o comando, e as opções se aplicam na ordem especificada. Isso é mostrado no exemplo a seguir.  

```
Local directory contains 3 files:
MyFile1.txt
MyFile2.rtf
MyFile88.txt

// Include all .txt files, resulting in MyFile1.txt and MyFile88.txt being copied
$ aws s3 cp . s3://amzn-s3-demo-bucket/path --include "*.txt"

// Include all .txt files but exclude all files with the "MyFile*.txt" format, resulting in no files being copied
$ aws s3 cp . s3://amzn-s3-demo-bucket/path --include "*.txt" --exclude "MyFile*.txt"

// Include all .txt files, but exclude all files with the "MyFile*.txt" format, but include all files with the "MyFile?.txt" format resulting in MyFile1.txt being copied

$ aws s3 cp . s3://amzn-s3-demo-bucket/path --include "*.txt" --exclude "MyFile*.txt" --include "MyFile?.txt"
```

**conceder**  
Os comandos `s3 cp`, `s3 mv` e `s3 sync` incluem uma opção `--grants` que pode ser usada para conceder permissões referentes a esse objeto para usuários ou grupos específicos. Defina a opção `--grants` como uma lista de permissões usando a sintaxe a seguir. Substitua `Permission`, `Grantee_Type` e `Grantee_ID` pelos seus próprios valores.  
**Sintaxe**  

```
--grants Permission=Grantee_Type=Grantee_ID
         [Permission=Grantee_Type=Grantee_ID ...]
```
Cada valor contém os seguintes elementos:  
+ *Permission* (Permissão): especifica as permissões concedidas. Pode ser definida como `read`, `readacl`, `writeacl` ou `full`.
+ *Grantee\$1Type* (Tipo de favorecido): especifica como identificar o favorecido. Pode ser definido como `uri`, `emailaddress` ou `id`.
+ *Grantee\$1ID* – Especifica o favorecido com base em *Grantee\$1Type*.
  + `uri`: o URI do grupo. Para obter mais informações, consulte [Quem é o favorecido?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/ACLOverview.html#SpecifyingGrantee)
  + `emailaddress` - O endereço de e-mail da conta.
  + `id` - O ID canônico da conta
Para obter mais informações sobre controle de acesso do Amazon S3, consulte [Controle de acesso](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingAuthAccess.html).  
O exemplo a seguir copia um objeto em um bucket. Ele concede permissões `read` sobre o objeto a todos os usuários e permissões `full` (`read`, `readacl` e `writeacl`) à conta associada a `user@example.com`.   

```
$ aws s3 cp file.txt s3://amzn-s3-demo-bucket/ --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers full=emailaddress=user@example.com
```
Também será possível especificar uma classe de armazenamento não padrão (`REDUCED_REDUNDANCY` ou `STANDARD_IA`) para objetos cujo upload você fizer no Amazon S3. Para fazer isso, use a opção `--storage-class`.  

```
$ aws s3 cp file.txt s3://amzn-s3-demo-bucket/ --storage-class REDUCED_REDUNDANCY
```

**no-overwrite**  
Os comandos `s3 cp`, `s3 mv` e `s3 sync` incluem uma opção `--no-overwrite` que pode ser usada para evitar a substituição de objetos que já existem no destino.  
O exemplo a seguir copiará um objeto de um bucket para o diretório local somente se ele ainda não existir no diretório local.  

```
$ aws s3 cp --no-overwrite s3://amzn-s3-demo-bucket/file.txt file.txt
```
O exemplo a seguir copia de forma recursiva os arquivos de um diretório local para um bucket. Somente os arquivos que ainda não existem no bucket serão copiados.  

```
$ aws s3 cp --recursive --no-overwrite /path/to/demo-files/ s3://amzn-s3-demo-bucket/demo-files/
```
O exemplo a seguir moverá um objeto de um diretório local para um bucket somente se ele ainda não existir no local de destino do bucket.  

```
$ aws s3 mv --no-overwrite file.txt s3://amzn-s3-demo-bucket/file.txt
```
O exemplo a seguir sincroniza arquivos de um diretório local com um bucket. Somente os arquivos que ainda não existem no bucket de destino serão sincronizados.  

```
$ aws s3 sync --no-overwrite /path/to/demo-files/ s3://amzn-s3-demo-bucket/demo-files/
```

**recursive**  
Quando você usa essa opção, o comando é executado em todos os arquivos ou objetos sob o diretório ou prefixo especificado. O exemplo a seguir exclui `s3://amzn-s3-demo-bucket/path` e todo o seu conteúdo.  

```
$ aws s3 rm s3://amzn-s3-demo-bucket/path --recursive
```

## Recursos
<a name="using-s3-commands-managing-buckets-references"></a>

**AWS CLI Referência da:**
+ [https://docs.aws.amazon.com/cli/latest/reference/s3/index.html](https://docs.aws.amazon.com/cli/latest/reference/s3/index.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/s3/cp.html](https://docs.aws.amazon.com/cli/latest/reference/s3/cp.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/s3/mb.html](https://docs.aws.amazon.com/cli/latest/reference/s3/mb.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/s3/mv.html](https://docs.aws.amazon.com/cli/latest/reference/s3/mv.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/s3/ls.html](https://docs.aws.amazon.com/cli/latest/reference/s3/ls.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/s3/rb.html](https://docs.aws.amazon.com/cli/latest/reference/s3/rb.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/s3/rm.html](https://docs.aws.amazon.com/cli/latest/reference/s3/rm.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html](https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html)

**Referência do serviço:**
+ [Como trabalhar com buckets do Amazon S3](https://docs.aws.amazon.com//AmazonS3/latest/userguide/UsingBucket.html) no *Guia do desenvolvedor do Amazon S3*
+ [Como trabalhar com objetos do Amazon S3](https://docs.aws.amazon.com//AmazonS3/latest/userguide/UsingObjects.html) no *Guia do usuário do Amazon S3*
+ [Para listar chaves hierarquicamente usando um prefixo e delimitador](https://docs.aws.amazon.com//AmazonS3/latest/userguide/ListingKeysHierarchy.html) no *Guia do usuário do Amazon S3*
+ [Anular carregamentos fracionados para um bucket do S3 usando o AWS SDK para .NET (nível baixo)](https://docs.aws.amazon.com//AmazonS3/latest/userguide/LLAbortMPUnet.html) no *Guia do usuário do Amazon S3*

# Usar comandos em nível de API (s3api) na AWS CLI
<a name="cli-services-s3-apicommands"></a>

Os comandos no nível de API (contidos no conjunto de comandos `s3api`) fornecem acesso direto às APIs do Amazon Simple Storage Service (Amazon S3) e ativam algumas operações que não são expostas em comandos de alto nível do `s3`. Esses comandos são equivalentes aos outros serviços da AWS que fornecem acesso em nível de API para a funcionalidade de serviços. Para obter mais informações sobre os comando do `s3`, consulte [Como usar comandos de alto nível (s3) na AWS CLI](cli-services-s3-commands.md)

Este tópico fornece exemplos que demonstram como usar os comandos de nível inferior que são mapeados em APIs do Amazon S3. Além disso, você pode encontrar exemplos para cada comando de API do S3 na seção `s3api` do [Guia de referência da AWS CLI versão 2](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html).

**Topics**
+ [Pré-requisitos](#cli-services-s3-apicommands-prereqs)
+ [Aplicar uma ACL personalizada](#cli-services-s3-apicommands-acls)
+ [Configurar uma política de registro em log](#cli-services-s3-apicommands-logpol)
+ [Recursos](#cli-services-s3-apicommands-resources)

## Pré-requisitos
<a name="cli-services-s3-apicommands-prereqs"></a>

Para executar os comandos `s3api`, 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).
+ O perfil utilizado deve ter permissões que garantem as operações da AWS realizadas pelos exemplos.
+ Entenda estes termos do Amazon S3:
  + **Bucket**: uma pasta de nível superior do Amazon S3.
  + **Prefixo**: uma pasta do Amazon S3 em um bucket.
  + **Objeto**: qualquer item hospedado em um bucket do Amazon S3.

## Aplicar uma ACL personalizada
<a name="cli-services-s3-apicommands-acls"></a>

Com comandos de alto nível, é possível usar a opção `--acl` para aplicar listas de controle de acesso (ACLs) predefinidas a objetos do Amazon S3. No entanto, não é possível usar esse comando para definir ACLs em todo o bucket. No entanto, você pode fazer isso usando o comando em nível de API ```[put-bucket-acl](https://docs.aws.amazon.com/cli/latest/reference/s3api/put-bucket-acl.html)`. 

O exemplo a seguir mostra como conceder o controle total a dois usuários do AWS (*user1@example.com* e *user2@example.com*) e a permissão de leitura a todos. O identificador para “todos” vem de um URI especial que você transmite como um parâmetro.

```
$ aws s3api put-bucket-acl --bucket amzn-s3-demo-bucket --grant-full-control 'emailaddress="user1@example.com",emailaddress="user2@example.com"' --grant-read 'uri="http://acs.amazonaws.com/groups/global/AllUsers"'
```

Para obter detalhes sobre como construir as ACLs, consulte [PUT Bucket acl](https://docs.aws.amazon.com/AmazonS3/latest/API/RESTBucketPUTacl.html) na *Referência da API do Amazon Simple Storage Service*. Os comandos de ACL `s3api` na CLI, como `put-bucket-acl`, usam a mesma [notação de argumento abreviada](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-shorthand.html).

## Configurar uma política de registro em log
<a name="cli-services-s3-apicommands-logpol"></a>

O comando da API `put-bucket-logging` configura uma política de registro de buckets. 

No exemplo a seguir, ao usuário da AWS *usuario@exemple.com* recebe controle total sobre os arquivos de log, e todos os usuários terão acesso de leitura a eles. Observe que o comando `put-bucket-acl` também deve conceder ao sistema de entrega de log do Amazon S3 (especificado por um URI) as permissões necessárias para ler e gravar os logs no bucket.

```
$ aws s3api put-bucket-acl --bucket amzn-s3-demo-bucket --grant-read-acp 'URI="http://acs.amazonaws.com/groups/s3/LogDelivery"' --grant-write 'URI="http://acs.amazonaws.com/groups/s3/LogDelivery"'
$ aws s3api put-bucket-logging --bucket amzn-s3-demo-bucket --bucket-logging-status file://logging.json
```

O arquivo `logging.json` no comando anterior tem o seguinte conteúdo.

```
{
  "LoggingEnabled": {
    "TargetBucket": "amzn-s3-demo-bucket",
    "TargetPrefix": "amzn-s3-demo-bucketLogs/",
    "TargetGrants": [
      {
        "Grantee": {
          "Type": "AmazonCustomerByEmail",
          "EmailAddress": "user@example.com"
        },
        "Permission": "FULL_CONTROL"
      },
      {
        "Grantee": {
          "Type": "Group",
          "URI": "http://acs.amazonaws.com/groups/global/AllUsers"
        },
        "Permission": "READ"
      }
    ]
  }
}
```

## Recursos
<a name="cli-services-s3-apicommands-resources"></a>

**AWS CLI Referência da:**
+ [https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/s3api/put-bucket-acl.html](https://docs.aws.amazon.com/cli/latest/reference/s3api/put-bucket-acl.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/s3api/put-bucket-logging.html](https://docs.aws.amazon.com/cli/latest/reference/s3api/put-bucket-logging.html)

**Referência do serviço:**
+ [Como trabalhar com buckets do Amazon S3](https://docs.aws.amazon.com//AmazonS3/latest/userguide/UsingBucket.html) no *Guia do desenvolvedor do Amazon S3*
+ [Como trabalhar com objetos do Amazon S3](https://docs.aws.amazon.com//AmazonS3/latest/userguide/UsingObjects.html) no *Guia do usuário do Amazon S3*
+ [Para listar chaves hierarquicamente usando um prefixo e delimitador](https://docs.aws.amazon.com//AmazonS3/latest/userguide/ListingKeysHierarchy.html) no *Guia do usuário do Amazon S3*
+ [Anular carregamentos fracionados para um bucket do S3 usando o AWS SDK para .NET (nível baixo)](https://docs.aws.amazon.com//AmazonS3/latest/userguide/LLAbortMPUnet.html) no *Guia do usuário do Amazon S3*

# Exemplo de script para o ciclo de vida de bucket do Amazon S3 na AWS CLI
<a name="cli-services-s3-lifecycle-example"></a>

Este tópico usa um exemplo de script bash para operações de ciclo de vida do bucket do Amazon S3 usando a AWS Command Line Interface (AWS CLI). Este exemplo de desenvolvimento de scripts usa o conjunto de comandos [https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html). Scripts shell são programas desenvolvidos para ser executados em uma interface de linha de comando.

**Topics**
+ [Antes de começar](#cli-services-s3-lifecycle-example-before)
+ [Sobre este exemplo](#cli-services-s3-lifecycle-example-about)
+ [Arquivos](#cli-services-s3-lifecycle-example-files)
+ [Referências](#cli-services-s3-lifecycle-example-references)

## Antes de começar
<a name="cli-services-s3-lifecycle-example-before"></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.
+ 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 *Guia do usuário do 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. 

O serviço Amazon S3 usa os seguintes termos:
+ Bucket: uma pasta de nível superior do Amazon S3.
+ Prefixo: uma pasta do Amazon S3 em um bucket.
+ Objeto: qualquer item hospedado em um bucket do Amazon S3.

## Sobre este exemplo
<a name="cli-services-s3-lifecycle-example-about"></a>

Este exemplo mostra como interagir com algumas das operações básicas do Amazon S3 usando um conjunto de funções em arquivos de script de shell. As funções estão localizadas no arquivo de script shell chamado `bucket-operations.sh`. Você pode chamar essas funções em outro arquivo. Cada arquivo de script contém comentários descrevendo cada uma das funções.

Para ver os resultados intermediários de cada etapa, execute o script com um parâmetro `-i`. É possível exibir o status atual do bucket ou do conteúdo usando o console do Amazon S3. O script avançará para a próxima etapa somente após você pressionar **ENTER** no prompt. 

Para obter o exemplo completo e os arquivos de script para download, consulte [Operações de ciclo de vida de bucket do Amazon S3](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/aws-cli/bash-linux/s3/bucket-lifecycle-operations) no *Repositório de exemplos de código da AWS* no *GitHub*.

## Arquivos
<a name="cli-services-s3-lifecycle-example-files"></a>

O exemplo contém os seguintes arquivos:

**bucket-operations.sh**  
Esse arquivo de script principal pode ser originado de outro arquivo. Ele inclui funções que executam as seguintes tarefas:  
+ Criar um bucket e verificar se ele existe
+ Copiar um arquivo do computador local para um bucket
+ Copiar um arquivo de um local de bucket para um local de bucket diferente
+ Listar o conteúdo de um bucket
+ Excluir um arquivo de um bucket
+ Excluir um bucket
Visualize o código para `[bucket-operations.sh](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/aws-cli/bash-linux/s3/bucket-lifecycle-operations/bucket_operations.sh)` no *GitHub*.

**test-bucket-operations.sh**  
O arquivo de script de shell `test-bucket-operations.sh` demonstra como chamar as funções utilizando o arquivo `bucket-operations.sh` e chamando cada uma das funções. Após chamar funções, o script de teste remove todos os recursos que ele criou.   
Visualize o código para `[test-bucket-operations.sh](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/aws-cli/bash-linux/s3/bucket-lifecycle-operations/test_bucket_operations.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 de código para a AWS CLI.  
Visualize o código para `[awsdocs-general.sh](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/aws-cli/bash-linux/s3/bucket-lifecycle-operations/awsdocs_general.sh)` no *GitHub*.

## Referências
<a name="cli-services-s3-lifecycle-example-references"></a>

**AWS CLI Referência da:**
+ [https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html](https://docs.aws.amazon.com/cli/latest/reference/s3api/index.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/s3api/create-bucket.html](https://docs.aws.amazon.com/cli/latest/reference/s3api/create-bucket.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html](https://docs.aws.amazon.com/cli/latest/reference/s3api/copy-object.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-bucket.html](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-bucket.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html](https://docs.aws.amazon.com/cli/latest/reference/s3api/delete-object.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/s3api/head-bucket.html](https://docs.aws.amazon.com/cli/latest/reference/s3api/head-bucket.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/s3api/list-objects.html](https://docs.aws.amazon.com/cli/latest/reference/s3api/list-objects.html)
+ [https://docs.aws.amazon.com/cli/latest/reference/s3api/put-object.html](https://docs.aws.amazon.com/cli/latest/reference/s3api/put-object.html)

**Outra referência:**
+ [Como trabalhar com buckets do Amazon S3](https://docs.aws.amazon.com//AmazonS3/latest/userguide/UsingBucket.html) no *Guia do desenvolvedor do Amazon S3*
+ [Como trabalhar com objetos do Amazon S3](https://docs.aws.amazon.com//AmazonS3/latest/userguide/UsingObjects.html) no *Guia do usuário do Amazon S3*
+ 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*.

# Acesso ao Amazon SNS na AWS CLI
<a name="cli-services-sns"></a>

É possível acessar os recursos do Amazon Simple Notification Service (Amazon SNS) usando a AWS Command Line Interface (AWS CLI). Para listar os comandos da AWS CLI para o Amazon SNS, use o comando a seguir.

```
aws sns help
```

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

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

**Topics**
+ [Criar um tópico](#cli-create-sns-topic)
+ [Assinar um tópico](#cli-subscribe-sns-topic)
+ [Publicar em um tópico](#cli-publish-sns-topic)
+ [Cancelar a assinatura de um tópico](#cli-unsubscribe-sns-topic)
+ [Excluir um tópico](#cli-delete-sns-topic)

## Criar um tópico
<a name="cli-create-sns-topic"></a>

Para criar um tópico, use o comando [https://docs.aws.amazon.com/cli/latest/reference/sns/create-topic.html](https://docs.aws.amazon.com/cli/latest/reference/sns/create-topic.html) e especifique o nome a ser atribuído a ele.

```
$ aws sns create-topic --name my-topic
{
    "TopicArn": "arn:aws:sns:us-west-2:123456789012:my-topic"
}
```

Anote o `TopicArn` da resposta que você usará mais tarde para publicar uma mensagem.

## Assinar um tópico
<a name="cli-subscribe-sns-topic"></a>

Para assinar um tópico, use o comando [https://docs.aws.amazon.com/cli/latest/reference/sns/subscribe.html](https://docs.aws.amazon.com/cli/latest/reference/sns/subscribe.html). 

O exemplo a seguir especifica o protocolo `email` e um endereço de e-mail para o `notification-endpoint`.

```
$ aws sns subscribe --topic-arn arn:aws:sns:us-west-2:123456789012:my-topic --protocol email --notification-endpoint saanvi@example.com
{
    "SubscriptionArn": "pending confirmation"
}
```

O AWS envia imediatamente uma mensagem de confirmação para o endereço de e-mail especificado no comando `subscribe`. A mensagem de e-mail tem o seguinte texto.

```
You have chosen to subscribe to the topic:
arn:aws:sns:us-west-2:123456789012:my-topic
To confirm this subscription, click or visit the following link (If this was in error no action is necessary):
Confirm subscription
```

Assim que o destinatário clicar no link **Confirm subscription (Confirmar assinatura)**, o navegador do destinatário exibirá uma mensagem de notificação com informações semelhantes à seguinte.

```
Subscription confirmed!

You have subscribed saanvi@example.com to the topic:my-topic.

Your subscription's id is:
arn:aws:sns:us-west-2:123456789012:my-topic:1328f057-de93-4c15-512e-8bb22EXAMPLE

If it was not your intention to subscribe, click here to unsubscribe.
```

## Publicar em um tópico
<a name="cli-publish-sns-topic"></a>

Para enviar uma mensagem a todos os assinantes de um tópico, use o comando [https://docs.aws.amazon.com/cli/latest/reference/sns/publish.html](https://docs.aws.amazon.com/cli/latest/reference/sns/publish.html). 

O exemplo a seguir envia a mensagem “Hello World\$1” para todos os assinantes do tópico especificado.

```
$ aws sns publish --topic-arn arn:aws:sns:us-west-2:123456789012:my-topic --message "Hello World!"
{
    "MessageId": "4e41661d-5eec-5ddf-8dab-2c867EXAMPLE"
}
```

Neste exemplo, a AWS envia uma mensagem de e-mail com o texto “Hello World\$1” para `saanvi@example.com`.

## Cancelar a assinatura de um tópico
<a name="cli-unsubscribe-sns-topic"></a>

Para cancelar a assinatura de um tópico e parar de receber as mensagens publicadas nesse tópico, use o comando [https://docs.aws.amazon.com/cli/latest/reference/sns/unsubscribe.html](https://docs.aws.amazon.com/cli/latest/reference/sns/unsubscribe.html) e especifique o ARN do tópico do qual você deseja cancelar a assinatura.

```
$ aws sns unsubscribe --subscription-arn arn:aws:sns:us-west-2:123456789012:my-topic:1328f057-de93-4c15-512e-8bb22EXAMPLE
```

Para verificar se a assinatura foi cancelada com êxito, use o comando [https://docs.aws.amazon.com/cli/latest/reference/sns/list-subscriptions.html](https://docs.aws.amazon.com/cli/latest/reference/sns/list-subscriptions.html) para confirmar que o ARN não aparece mais na lista.

```
$ aws sns list-subscriptions
```

## Excluir um tópico
<a name="cli-delete-sns-topic"></a>

Para excluir um tópico, execute o comando [https://docs.aws.amazon.com/cli/latest/reference/sns/delete-topic.html](https://docs.aws.amazon.com/cli/latest/reference/sns/delete-topic.html).

```
$ aws sns delete-topic --topic-arn arn:aws:sns:us-west-2:123456789012:my-topic
```

Para verificar se a AWS excluiu o tópico com êxito, use o comando [https://docs.aws.amazon.com/cli/latest/reference/sns/list-topics.html](https://docs.aws.amazon.com/cli/latest/reference/sns/list-topics.html) para confirmar que o tópico não aparece mais na lista.

```
$ aws sns list-topics
```