Este tutorial é parte integrante do vídeo Tutorial S3 Básico publicado no canal Um Inventor Qualquer no YouTube.

Neste tutorial vamos entender as características básicas do Simple Storage Serve (S3), configurar um bucket e executar algumas ações como upload, download e permissões de objetos.

Você também pode encontrar esse tutorial e os códigos usados aqui no nosso repositório do GitHub:
https://github.com/UmInventorQualquer/tutorial-s3-basico

Este tutorial está dividido em etapas que devem ser executadas na sequência disposta abaixo. Caso algo não funcione como esperado, volte, e refaça as etapas anteriores.

  1. Criando um Bucket no AWS S3
  2. Criando as permissões do IAM para seu bucket no AWS S3
  3. Preparando seu ambiente
  4. Acessando a API do S3 via command-line
  5. Acessando a API da AWS através do AWS-SDK com Node JS

Uma das maneiras mais práticas de controlar sua infra-estrutura é através da API da AWS, e o AWS-CLI te permite fazer isso através do seu terminal shell, possibilitando executar tarefas através do cron ou através de scripts de automação.

Após preparar seu ambiente e inserir suas credenciais você pode executar o comando aws para interagir com qualquer recurso da AWS.

Com o aws s3 você opera seus buckets e os objetos contidos neles.

Antes de iniciar os testes, vá até a raiz desde repositório em sua máquina e digite cd scripts

Upload de arquivo individual

O comando abaixo copia aws s3 cp o arquivo indicado no primeiro parâmetro ./files/philippine-coins-1483943.jpg para o bucket informado no segundo parâmetro s3://uiq-test-bucket/.

aws s3 cp ./files/philippine-coins-1483943.jpg s3://uiq-test-bucket/ 

O comando a seguir executa exatamente a mesma ação, porém renomeando o objeto final dentro do bucket para test.jpg e inserindo ele dentro de uma pasta chamada subfolder.

aws s3 cp ./files/philippine-coins-1483943.jpg s3://uiq-test-bucket/subfolder/test.jpg

Upload de pastas

O comando abaixo copia aws s3 cp todos os arquivos da pasta indicada no primeiro parâmetro ./files/ para o bucket informado no segundo parâmetro s3://uiq-test-bucket/, de forma recursiva --recursive, excluindo por padrão todos os arquivos da pasta --exclude "*" e incluindo somente os arquivos com extensão JPG --include "*.jpg".

aws s3 cp ./files/ s3://uiq-test-bucket/ --recursive --exclude "*" --include "*.jpg"

Listagem de arquivos

Para conferir o estado atual do nosso bucket, executamos o comando ls.

aws s3 ls s3://uiq-test-bucket

E obtemos o seguinte resultado:

                           PRE subfolder/
2021-10-11 02:06:52    1349755 natural-wonders-1400924.jpg
2021-10-11 02:06:52    2237188 philippine-coins-1483943.jpg

Remoção de arquivo individual

aws s3 rm s3://uiq-test-bucket/subfolder/test.jpg

Agora nosso bucket está assim aws s3 ls s3://uiq-test-bucket:

2021-10-11 02:06:52    1349755 natural-wonders-1400924.jpg
2021-10-11 02:06:52    2237188 philippine-coins-1483943.jpg

Remoção de multiplos arquivos

aws s3 rm s3://uiq-test-bucket --recursive

Após a remoção recursiva de todos os arquivos, nosso bucket está vazio.

Sincronizando pastas inteiras

O comando aws s3 sync é uma ótima opção para backups e sincronização de arquivos como logs, que podem ser armazenados no S3 para pesquisa e indexação posterior com um custo muito baixo.

Para subir arquivos já no modo de armazenamento de sua preferência, e ter o menor custo de armazenamento basta adicionar no comando abaixo o parâmetro --storage-class <value>. Os valores válidos para esse parâmetro são:

STANDARD | REDUCED_REDUNDANCY | STANDARD_IA | ONEZONE_IA | INTELLIGENT_TIERING | GLACIER | DEEP_ARCHIVE

Sincronizando arquivos de uma pasta com o AWS S3

aws s3 sync ./files s3://uiq-test-bucket

Este é o output do comando:

upload: files/natural-wonders-1400924.jpg to s3://uiq-test-bucket/natural-wonders-1400924.jpg
upload: files/philippine-coins-1483943.jpg to s3://uiq-test-bucket/philippine-coins-1483943.jpg

Veja mais opções na documentação do AWS-CLI para S3.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *