Executando verificação de segurança...
1

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!!

Carregando publicação patrocinada...
3
1

Opa, tudo certo mano?

Sendo bem sincero eu não conhecia essas alternativas que você citou, acabei utilizando upload e downloas no S3 por questões de facilidade e por ser um serviço na aws bem conhecido, entretanto, acredito que as opções que você entregou aqui são muito valiosas, gostaria de aprender mais sobre esses serviços e quem sabe até mesmo mudar essa implementação no futuro, no momento estou pelo celular mas assim que ligar meu computador amanhã, irei editar o post para destacar de alguma forma seu comentário nele, agradeço demais por ter compartilhado!!