Variáveis de Ambiente com Serverless e GitHub Secrets
Por Eduardo Ferraz
Atualizado em: 15/03/2024
🤔 Por que fazer?
Para que possamos manter a segurança de nossos projetos guardando chaves secretas e outros dados sensíveis da forma adequada, não deixando estes públicos no GitHub e evitando 'hard-coding'.
💡 O que precisamos?
- Conhecimento em programação backend
- Repositório do GitHub separado para backend (Repositórios de exemplo ao final do Manual)
⚙️ Como fazer?
Arquivo .env (Local)
Para utilizar as variáveis de ambiente de forma local, basta criar um arquivo .env em seu repositório local. Esse arquivo não deve ser commitado para o GitHub e ele já está listado no arquivo .gitignore em nosso Template de React Next.
O formato do arquivo .env é bem simples:
VARIAVEL_DE_AMBIENTE=valorQualquer
OUTRA_VARIAVEL=1234
MAIS_UMA_VARIAVEL=qualquerCoisa
GitHub Secrets (Remoto)
No seu repositório, acesse Settings > Secrets and Variables > Actions
Caso o serverless já esteja configurado como esperado, haverá 2 variáveis de ambiente já definidas em Repository Secrets:
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
Não vamos mexer nessas. Só precisamos adicionar todas as outras variáveis de ambiente utilizadas em nosso código (as mesmas que utilizamos no .env localmente).
Agora que definimos as variáveis de ambiente Local ou RemotO, podemos utilizá-las em nosso repositório! Em especial nesse manual, vamos utilizá-las para passar à AWS essas variáveis utilizadas pelo Lambda, tudo por meio do framework Serverless
Arquivo pipeline-serverless.yml
No seu repositório, cria a estrutura de pastas (se não houver) da seguinte forma:
.github > workflows > pipeline-serverless.yml
No arquivo pipeline-serverless.yml , configure as variáveis de ambiente que serão extraídas dos Secrets, como no exemplo do Sistema Redes:
Arquivo serverless.ts
No seu repositório, configure o arquivo serverless.ts como no exemplo do Sistema Redes:
Lambda
Uma forma de avaliar se as variáves de ambiente foram acessadas pela AWS é verificar uma função do AWS Lambda dentre as várias criadas para o seu Sistema e conferir se as variáveis de ambiente foram acessadas após o deploy (elas não devem ser undefined):
🤝 Dicas úteis:
Caso você precise de referências de projetos que utilizem o que foi explicado no presente manual, faça estudo dos repositórios Vidrocar Backend e Sistema Redes Backend
Passos semelhantes foram utilizados em outro contexto para fazer o deploy frontend na vercel do cliente, como descrito em nosso Outro Manual