Persistindo arquivos com o Amazon S3

Guilherme da Silva Gonçalves
5 min readOct 28, 2022

--

Esse artigo visa trazer um overview sobre o AWS S3, serviço da Amazon para guardar arquivos na nuvem.

Se você está pensando em aprofundar mais nesse serviço, recomendo um curso bem legal na Udemy (em inglês): https://www.udemy.com/course/aws-foundations-amazon-s3-mastery-bootcamp/

Pode usar também a documentação do S3 nos sites da AWS: https://docs.aws.amazon.com/pt_br/AmazonS3/latest/userguide/Welcome.html

A AWS oferece ainda a possibilidade de usar o serviço sem pagar dentro de alguns limites, chamados de Free Tier. Vale dar uma olhada: https://aws.amazon.com/pt/free/

O que é o AWS S3?

Podemos pensar no S3 como um pen drive virtual, para os mais leigos. Na prática, o AWS Simple Storage Service (por isso S3) é uma unidade de armazenamento baseada em nuvem, ou seja, é um espaço privado na internet onde você pode guardar quaisquer tipos de arquivos, como imagens, vídeos, textos, pdf, etc.

O objetivo dele é permitir, em termos técnicos, o armazenamento de código binário dos arquivos usados no nosso dia a dia. Por estar em nuvem, ele traz algumas vantagens, como não ter limite de espaço para armazenamento, ser altamente escalável, confiável, rápido e com um bom custo benefício, se comparados aos métodos tradicionais de armazenamento.

E qual seria a alternativa do nosso dia a dia que o AWS S3 busca substituir? Basicamente o uso de HDs, pen drives, SSDs e quaisquer dispositivos usados para esse fim. Aqui a ideia é fazer um paralelo com o mundo real, mas o AWS S3 foi desenvolvido para ser usado por aplicações que usem a internet. Por isso, suas características visam uso em larga escala.

Escopo

O S3 é um serviço de escopo regional da AWS. Isso quer dizer que, quando você adquire um bucket, ele fica disponível apenas na região contratada. A disponibilização de um bucket em mais de uma região requer a contratação de um serviço a parte. Para mais detalhes sobre regiões na AWS, vale a leitura desse artigo: ​​https://docs.aws.amazon.com/pt_br/AmazonRDS/latest/UserGuide/Concepts.RegionsAndAvailabilityZones.html

Classes de armazenamento

Para oferecer um preço que esteja de acordo com o comportamento esperado pelo usuário, a AWS oferece o que ela chama de Classes de Armazenamento. Essas classes permitem ao usuário entender a sua demanda e escolher um plano que mais se adequem a essa demanda.

Aqui, devemos levar em consideração alguns fatos:

  • Frequência de acesso aos dados
  • Latência na recuperação dos dados
  • Durabilidade dos armazenados

Na página da AWS existe um artigo que explica melhor sobre essas classes.

https://aws.amazon.com/pt/s3/storage-classes

Essa classe influencia diretamente nos requisitos do serviço, e no preço pago para a AWS. O preço é progressivo, e vai aumentando conforme o montante de dados for sendo usado.

Por exemplo: ao escolhermos uma classe padrão S3 Standard, até os primeiros 50 TB armazenados no mês paga-se um valor por GB; se esse volume aumentar para 450 TB, o valor por GB fica ligeiramente mais baixo, e assim por diante. Esse link também trás mais detalhes sobre essa precificação: https://aws.amazon.com/pt/s3/pricing

Interagindo com o S3

Existem algumas formas de interagir com o S3. A primeira, mais direta, é pelo uso do painel da AWS, por onde você tem acesso a ele e todos os serviços contratados. Para se chegar ao S3 pelo painel, basta usar o campo de busca superior, onde você digita “AWS S3”.

Atenção à região selecionada no canto superior direito. Como o S3 é um serviço regional, é necessário você estar na região contratada do serviço.

Você também consegue interagir com ele por meio da sua linha de comando. Para isso, é necessário instalar o AWS CLI em seu sistema operacional, que pode ser usada para qualquer serviço da AWS (https://aws.amazon.com/pt/cli/).

O S3 deve ser visto como um diretório, assim como temos em nosso computador. A diferença é que esse diretório está na nuvem, e pode ser acessado de diversas maneiras, além de contar com algum recursos adicionais. A documentação trás bem esse detalhe: https://docs.aws.amazon.com/pt_br/cli/latest/userguide/cli-services-s3.html

E, por fim, a interação mais usada, que é via SDK, para implementar a interação entre a linha de código da sua aplicação e o S3. Dessa forma é que você usa o serviço no desenvolvimento de aplicações. Os detalhes também podem ser vistos na documentação específica do serviço: https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html

Tags e Metadata

Quanto trabalhamos em grandes organizações, é necessário manter o mínimo de controle sobre os recursos que se usa na nuvem, e o AWS S3 não é uma exceção. Esse é um caso de uso onde tags ou de metadata pode ser bastante úteis.

Tags são informações do tipo chave-valor que podem ser atribuídas a um bucket ou a um arquivo, para classificá-lo de alguma forma. Pense, por exemplo, em uma empresa com diversas diretorias.

Como poderíamos saber a qual diretoria pertence determinado bucket? Para isso, podemos usar o recurso de tags. Dessa forma, podemos atribuir uma tag de valor diretoria, com o valor ecommerce a um bucket, e outra tag de valor diretoria, com o valor loja física para outro bucket.

Metadata tem um comportamento semelhante, mas com algumas diferenças. Metadata pode ser aplicada somente a um objeto, e não a um bucket, e não pode ser editada. Isso quer dizer que, ao adicionar ou alterar metadata de um objeto, ele será um novo objeto cópia do anterior. Ainda assim, ambos podem ser usados para classificar ou adicionar dados a um recurso.

A AWS tem uma documentação sobre esses dois assuntos, que podem ser aprofundados. Vale a pesquisa se esse recurso te interessar.

Sobre precificação, escrevi um artigo específico sobre isso. Se interessar, a leitura pode te ajudar a entender como resolver alguns problemas: https://medium.com/@guilhermesgoncalves/gerenciando-custos-no-amazon-s3-83a2046b2565

Espero que esse overview tenha te ajudado a entender melhor sobre o básico do AWS S3 e, quem sabe, aplicar ele no seu dia a dia :)

--

--