Pular para o conteúdo principal

Trabalhando com AWS e LocalStack - AWS S3

 Olá pessoal, hoje vamos ver como podemos utilizar os serviços da AWS em ambiente local utilizando o LocalStack.


AWS e Localstack

AWS

Antes de entrarmos em detalhes sobre o localstack, precisamos entender como que funciona os recursos de um cloud provider, no caso a AWS, ela nos fornece uma dezenas de serviços que podemos utilizar dentro de nossos projetos, sendo alguns deles:
  • S3;
  • SQS;
  • SNS;
  • Lambda;
  • RDS.
Para utilizarmos esses serviços, precisamos criar uma conta válida e configurar os serviços que nossa aplicação irá utilizar, aqui podemos pensar, se temos uma unica conta, como vamos testar as funcionalidades da aplicação antes de subir para produção ?

Existem várias estratégias para testar aplicações que usam algum serviço da cloud, segue algumas delas:
  • Ter contas separadas para Desenvolvimento, Homologação, Produção, etc;
  • Criar VPCs para ambientes Desenvolvimento, Homologação, Produção, etc;
  • Utilizar o AWS Organizations para gerenciar contas e ambientes.
Todas essas possibilidades são válidas e são muito utilizadas, mas com o uso do Localstack, podemos reduzir os custos de termos várias contas, ou ambientes exclusivos de desenvolvimento e homologação.

Localstack

O Localstack é uma ferramenta que permite simular os serviços da AWS em ambiente local, ele ajuda no processo de desenvolvimento, onde podemos testar as funcionalidades da aplicação sem a necessidade de uma conta do cloud provider.

Utilizando o Localstack

Instalação

Para utilizarmos o localstack, antes precisamos realizar a sua instalação, existem algumas formas que podemos ver aqui, neste exemplo, iremos utilizar o localstack através do Docker.

AWS CLI

Uma outra ferramenta necessária é o AWS CLI, este é utilizado para realizar configuração e provisionar recursos na AWS através da linha de comando, a comunicação com o Localstack também acontece através do CLI, bastando apenas especificar o atributo endpoint-url.

Utilizando o LocalStack com AWS S3

Como sabemos, o S3 é um serviço da AWS para armazenar arquivos e objetos, para demostrar o uso do LocalStack com S3, vamos seguir os passos abaixo:

Criando o container LocalStack

docker run -d -p 4566:4566 -e SERVICES=s3 localstack/localstack:0.12.2
Aqui podemos passar através da variável SERVICES quais serviços queremos utilizar, no caso, queremos apenas o S3.

Após criação do container, podemos verificar o funcionamento:
http://localhost:4566/health

Criando um S3 Bucket 

aws s3 mb s3://example-bucket --endpoint-url http://localhost:4566
Aqui criamos um bucket chamado example-bucket, e passamos o atribuito --endpoint-url com o endereço do LocalStack, esta flag seta no AWS CLI qual é o endpoint do cloud provider.

Listando os S3 Buckets

aws s3 ls --endpoint-url http://localhost:4566 
Aqui listamos todos os buckets criados.

Enviando arquivos para o S3 Bucket

aws s3api put-object --bucket example-bucket --key README.md --body README.md --endpoint-url http://localhost:4566
Neste exemplo, iremos enviar um arquivo chamado README.md para o bucket criado anteriormente.

Recuperando arquivos do S3 Bucket

Após podemos recuperar o arquivo através da URL:
http://http://localhost:4566/example-bucket/README.md

Excluindo S3 Bucket

aws s3 rb s3://example-bucket --endpoint-url http://localhost:4566 --force
Aqui iremos excluir o bucket example-bucket, perceba que passamos a flag --force, esta força a remoção mesmo que o bucket não esteja vazio.

Código de exemplo

Referências

Comentários

Postagens mais visitadas do Blog