

# Usar o Amazon S3 com instâncias do Amazon EC2
<a name="AmazonS3"></a>

O Amazon Simple Storage Service (Amazon S3) é um serviço de armazenamento de objetos que oferece escalabilidade líder do setor, disponibilidade de dados, segurança e performance. É possível usar o Amazon S3 para armazenar e recuperar qualquer volume de dados para uma variedade de casos de uso, como data lakes, sites, backups e big data analytics, diretamente de uma instância do Amazon EC2 ou de qualquer lugar na Internet. Para obter mais informações, consulte [O que é a Amazon S3?](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)

Há duas maneiras de acessar dados do Amazon S3 em instâncias do Amazon EC2:
+ **Acesso a arquivos**: use o [Amazon S3 Files](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-files.html) para montar um bucket do S3 como um sistema de arquivos de alto desempenho na instância.
+ **Acesso a objetos**: use a [API do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/API/), a AWS CLI, os SDKs da AWS ou ferramentas como o wget para copiar objetos de e para o S3.

## Acesso a arquivos com o Amazon S3 Files
<a name="S3FilesAccess"></a>

O Amazon S3 Files é um sistema de arquivos com tecnologia sem servidor que permite montar o bucket S3 de uso geral como um sistema de arquivos de alta performance na sua instância computacional. Com o Amazon S3 Files, é possível acessar os objetos do Amazon S3 como arquivos usando as operações dos sistemas de arquivos padrão, como leitura e gravação no caminho de montagem local.

É possível montar um sistema de arquivos do S3 em uma instância do EC2 na inicialização ou depois, em uma instância em execução.

**Pré-requisitos**

Antes de configurar o S3 Files com a instância do EC2, certifique-se de ter os seguintes pré-requisitos:
+ Um sistema de arquivos do S3 com pelo menos um destino de montagem disponível. Para saber mais sobre a criação de um sistema de arquivos do S3, consulte [Trabalhar com o Amazon S3 Files](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-files.html) no *Guia do usuário do Amazon S3*.
+ Uma instância do Amazon EC2 Linux com um perfil de instância anexado. Para saber mais sobre as permissões necessárias para montar o sistema de arquivos, consulte [Perfis e políticas do IAM](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-files-prereq-policies.html#s3-files-prereq-iam) no *Guia do usuário do Amazon S3*.
+ Grupos de segurança que permitam o tráfego NFS (porta 2049) entre a instância e os destinos de montagem do sistema de arquivos. Para saber mais sobre as configurações de grupo de segurança exigidas, consulte [Grupos de segurança](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-files-prereq-policies.html#s3-files-prereq-security-groups) no *Guia do usuário da Amazon S3*.

**Para montar um sistema de arquivos em uma instância do EC2 na inicialização usando o console do EC2**

1. Abra o console do Amazon EC2 em [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/).

1. Escolha **Iniciar instância**. 

1. Em **Network settings** (Configurações de rede), faça o seguinte:

   1. Escolha **Editar**.

   1. Em **Subnet (Sub-rede)**, selecione uma sub-rede.

   1. Selecione o grupo de segurança padrão para que a instância do EC2 possa acessar o sistema de arquivos do S3. Não é possível acessar a instância do EC2 por Secure Shell (SSH) usando esse grupo de segurança. Para acesso por SSH, edite o grupo de segurança padrão e adicione uma regra para permitir SSH ou adicione um novo grupo de segurança que permita SSH. É possível usar as seguintes configurações:

      1. **Tipo:** SSH 

      1. **Protocolo**: TCP 

      1. **Intervalo de portas:** 22 

      1. **Fonte:** Qualquer lugar 0.0.0.0/0

1. Em **Configurar armazenamento**, faça o seguinte:

   1. Em **Sistemas de arquivos**, escolha **S3 Files**.

   1. Selecione **Add shared file system** (Adicionar sistema de arquivos compartilhado).

   1. Em **Sistema de arquivos do S3**, o sistema de arquivos aparece na zona de disponibilidade com base na sub-rede selecionada nas configurações de rede. Escolha o sistema de arquivos do S3 que você deseja montar. Se você não tiver nenhum sistema de arquivos, clique em **Criar um sistema de arquivos** para criar um. 

   1. Insira um caminho de montagem local na instância do EC2 na qual você deseja montar o sistema de arquivos (por exemplo, `/mnt/s3files`). 

   1. Um comando será gerado para montar o sistema de arquivos e adicioná-lo a fstab. Você pode adicionar esse comando ao campo **Dados do usuário** em **Detalhes avançados**. A instância do EC2 será configurada para montar o sistema de arquivos do S3 na inicialização e sempre que ela for reinicializada. Você também pode executar esses comandos na sua instância do EC2 depois que ela for inicializada. 

1. Em **Detalhes avançados**, anexe um perfil de instância à instância. Seu perfil do IAM deve ter permissões para montar o sistema de arquivos e acessar o bucket do S3. Para saber mais sobre as permissões necessárias, consulte [Perfis e políticas do IAM](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-files-prereq-policies.html#s3-files-prereq-iam) no *Guia do usuário do Amazon S3*. 

1. Escolha **Iniciar instância**.

   Depois que a instância é inicializada, os utilitários de software necessários são instalados e o sistema de arquivos é montado. Você pode visualizar o sistema de arquivos navegando até o caminho de montagem local.

**Para montar um sistema de arquivos em uma instância do EC2 após a inicialização**

1. [Conecte-se à instância do EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/connect.html) com Secure Shell (SSH) ou usando o EC2 Instance Connect no console do EC2.

1. Para montar o sistema de arquivos do S3, use o utilitário assistente de montagem `amazon-efs-utils`. Dependendo da distribuição do Linux, use um dos comandos a seguir para instalar o pacote `amazon-efs-utils`:

   1. Se você usar o Amazon Linux, execute o seguinte comando para instalar efs-utils dos repositórios da Amazon:

      ```
      sudo yum -y install amazon-efs-utils
      ```

   1. Se você usar outras [distribuições do Linux compatíveis](https://github.com/aws/efs-utils/?tab=readme-ov-file#efs-utils), execute o seguinte comando:

      ```
      curl https://amazon-efs-utils.aws.com/efs-utils-installer.sh | sudo sh -s -- --install
      ```

   1. *Para outras distribuições do Linux, consulte o repositório [efs-utils](https://github.com/aws/efs-utils/?tab=readme-ov-file#on-other-linux-distributions) no GitHub*.

1. Crie um diretório como ponto de montagem do sistema de arquivos usando o seguinte comando:

   ```
   sudo mkdir {path/to/mount}
   ```

1. Monte o sistema de arquivos do S3:

   ```
   FS="{YOUR_FILE_SYSTEM_ID}"
   sudo mount -t s3files $FS:/ {path/to/mount}
   ```

1. Confirme que o sistema de arquivos está montado:

   ```
   df -h {path/to/mount}
   ```

**Para visualizar os objetos no bucket do S3 como arquivos**  
Tendo concluído os procedimentos anteriores, você já pode ler e gravar objetos do S3 como arquivos no caminho de montagem local usando operações de sistemas de arquivos padrão. Se você tiver objetos no bucket do S3, poderá visualizá-los como arquivos usando os seguintes comandos:

```
ls {path/to/mount}
```

## Acesso com base em objetos
<a name="objectaccess"></a>

Você pode copiar arquivos de e para o Amazon S3 usando a API do S3, a AWS CLI, os SDKs da AWS ou as ferramentas HTTP padrão. Se você tiver as permissões necessárias, poderá copiar um arquivo entre o Amazon S3 e sua instância usando um dos seguintes métodos. 

------
#### [ wget ]

**nota**  
Esse método funciona apenas para objetos públicos. Se o objeto não for público, você receberá uma mensagem `ERROR 403: Forbidden`. Se receber esse erro, será necessário usar o console do Amazon S3, a AWS CLI, a API da AWS, o AWS SDK ou AWS Tools for Windows PowerShell e é necessário ter as permissões necessárias. Para obter mais informações, consulte [Gerenciamento de identidade e acesso no Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/security-iam.html) e [Download de um objeto](https://docs.aws.amazon.com/AmazonS3/latest/userguide/download-objects.html) no *Guia do usuário do Amazon S3*.

O utilitário **wget** é um cliente FTP e HTTP que pode ser usado para baixar objetos públicos do Amazon S3. Por padrão, ele é armazenado no Linux da Amazon e na maioria de outras distribuições e está disponível para download no Windows. Para fazer download de um objeto do Amazon S3, use o comando a seguir substituindo a URL do objeto para download.

```
[ec2-user ~]$ wget https://{{amzn-s3-demo-bucket}}.s3.amazonaws.com/{{path-to-file}}
```

------
#### [ PowerShell ]

É possível usar [AWS Tools for Windows PowerShell](https://aws.amazon.com/powershell/) para mover objetos do e para o Amazon S3.

Use o cmdlet [Copy-S3Object](https://docs.aws.amazon.com/powershell/latest/reference/items/Copy-S3Object.html) para copiar um objeto do Amazon S3 para sua instância Windows, da seguinte maneira.

```
Copy-S3Object `
    -BucketName {{amzn-s3-demo-bucket}} `
    -Key {{path-to-file}} `
    -LocalFile {{my_copied_file.ext}}
```

Como alternativa, você pode abrir o console do Amazon S3 usando um navegador da Web na instância Windows.

------
#### [ AWS CLI ]

É possível usar a AWS Command Line Interface (AWS CLI) para baixar itens restritos do Amazon S3 e também para carregar itens. Para obter mais informações sobre, por exemplo, como instalar e configurar as ferramentas, consulte a [página de detalhes do AWS Command Line Interface](https://aws.amazon.com/cli/).

O comando [aws s3 cp](https://docs.aws.amazon.com/cli/latest/reference/s3/cp.html) é semelhante ao comando Unix **cp**. É possível copiar arquivos do Amazon S3 para sua instância, copiar arquivos de sua instância para o Amazon S3, e copiar arquivos de um local do Amazon S3 para outro.

Use o seguinte comando para copiar um objeto do Amazon S3 para sua instância:

```
aws s3 cp s3://{{amzn-s3-demo-bucket}}/{{my_folder}}/{{my_file.ext}} {{my_copied_file.ext}}
```

Use o seguinte comando para copiar um objeto de sua instância de volta para o Amazon S3:

```
aws s3 cp {{my_copied_file.ext}} s3://{{amzn-s3-demo-bucket}}/{{my_folder}}/{{my_file.ext}}
```

O comando [aws s3 sync](https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html) pode sincronizar um bucket inteiro do Amazon S3 com um diretório local. Isso pode ser útil para fazer download de um banco de dados e manter a cópia local atualizada com o banco remoto. Se tiver as permissões adequadas no bucket do Amazon S3, será possível enviar o backup do diretório local por push para a nuvem quando concluir invertendo os locais de origem e de destino no comando.

Use o seguinte comando para baixar o bucket do Amazon S3 inteiro para um diretório local em sua instância:

```
aws s3 sync s3://{{amzn-s3-demo-source-bucket}} {{local_directory}}
```

------
#### [ Amazon S3 API ]

É possível usar uma API para acessar dados no Amazon S3. É possível usar essa API para ajudar a desenvolver sua aplicação e integrá-la com outras APIs e SDKs. Para obter mais informações, consulte [Exemplos de código para o Amazon S3 usando AWS SDKs](https://docs.aws.amazon.com/AmazonS3/latest/API/service_code_examples.html) na *Referência da API do Amazon Simple Storage Service*.

------