Disponibilize as variáveis de ambiente para sua equipe pela AWS.
Uma das dificuldades minha e da equipe onde trabalho sempre foi lidar com as variáveis de ambiente, sempre acabava faltando alguma variável no arquivo .env
de alguém ou de algum dos ambientes, ou as vezes alguma variável poderia estar errada.
Somos uma equipe pequena de 4 programadores (2 front e 2 back) e temos 5 ambientes diferentes da aplicação:
- Ambiente Local (a máquina de cada programador)
- Ambiente de Testes (uma imagem que criamos do docker)
- Ambiente de Desenvolvimento (uma instância EC2 para testar features novas)
- Ambiente de Staging (uma instância EC2 para testar as hotfixes antes de mandar para produção)
- Ambiente de Produção (uma instância EC2 para os usuários finais)
Depois de um tempo trabalhando nesse lugar pensei em um automatizar algumas coisas e as variáveis de ambiente estavam na minha mira, eu queria que todos pudessem compartilhar no mesmo momento quando tivessem adicionado alguma variável nova ao código independente se fosse no ambiente local, de desenvolvimento ou produção... Enfim o objetivo é tornar a utilização das variáveis de ambiente mais simples!!
Edit 1: @jooojano Mostrou que existem outras duas alternativas em seu comentário aqui, o ParameterStore ou Secrets Manager, provavelmente são alternativas mais robustas e melhores do que essa, inclusive pretendo implementar uma dessas alternativas onde trabalho!!
Antes de continuar é importante ressaltar que todos da equipe precisarão de um usuário com acesso programático na AWS
Passo 1: Criar um Bucket S3
O primeiro passo para automatizar é criar um bucket no S3 da AWS.
(O mais ideal é criar um bucket que só dê permissões de acesso para quem tiver chaves de acesso programático)
Passo 1.5 (Opcional): Criar pastas dentro do Bucket
Você pode criar pastas dentro do bucket dividindo ele da forma que quiser, podendo criar divisões de backend ou frontend, onde na pasta backend ficariam as variáveis de ambiente do backend de cada ambiente por exemplo.
Passo 2: Instalar a AWS CLI
Para fazer a automatização vai ser necessário instalar a CLI da AWS, como quero deixar isso acessível, deixarei aqui o link da documentação da própria AWS de como instalar a CLI.
Passo 3: Configurar o CLI
Após a instalação você deve configurar com suas credenciais da AWS, com apenas um comando aws configure
o terminal já vai te pedir as informações necessárias e fará tudo, de qualquer forma, deixarei aqui o link da documentação.
Passo 4: Criação dos scripts
Como onde trabalho acabamos utilizando nodejs, vou mostrar o exemplo do script sendo feito em um package.json
, mas pode ser utilizado de outras formas também.
Em seu package.json
adicione os seguintes scripts (troque os nomes que estão entre {}
pelos nomes que você criou):
"environment:{nome-do-ambiente}:upload": "aws s3 cp .env s3://{nome-do-bucket}/{pasta-do-bucket}/.env.{nome-do-ambiente}"
"environment:{nome-do-ambiente}:download": "aws s3 cp s3://{nome-do-bucket}/{pasta-do-bucket}/.env.{nome-do-ambiente} .env"
O primeiro script faz um upload do arquivo .env
no diretório que você esta para o seu bucket na AWS e o segundo script faz um download do .env
que esta na AWS para sua máquina local.
Com esses scripts você pode facilmente atualizar as variáveis de ambiente de cada ambiente.
Agradeço pela atenção e espero ter ajudado!!