https://github.com/gustavofreze/cryptocurrency-prices
POC de uma AWS lambda que executa a consulta de preços de criptomoedas, e é implantada na AWS usando Github actions.
https://github.com/gustavofreze/cryptocurrency-prices
aws aws-lambda ci-cd criptocurrency github-actions poc proof-of-concept python serveless
Last synced: about 1 month ago
JSON representation
POC de uma AWS lambda que executa a consulta de preços de criptomoedas, e é implantada na AWS usando Github actions.
- Host: GitHub
- URL: https://github.com/gustavofreze/cryptocurrency-prices
- Owner: gustavofreze
- License: mit
- Created: 2021-10-19T00:36:14.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2021-10-19T00:42:02.000Z (about 4 years ago)
- Last Synced: 2025-01-22T22:11:41.451Z (11 months ago)
- Topics: aws, aws-lambda, ci-cd, criptocurrency, github-actions, poc, proof-of-concept, python, serveless
- Language: Python
- Homepage:
- Size: 182 KB
- Stars: 5
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Cryptocurrency Prices
[](https://www.python.org)
* [Overview](#overview)
* [Instalação](#installation)
- [Repositório](#repository)
- [Configuração](#settings)
* [CI/CD](#cicd)
* [Roadmap](#roadmap)
* [Testes](#tests)
## Overview
A ideia deste projeto é aplicar o conteúdo estudado sobre **AWS Lambda**. Ele implementa uma funcionalidade simples,
consultar a cotação de uma quantidade determinada de criptomoedas, e enviar os dados processados para uma API.
## Instalação
### Repositório
Para clonar o repositório usando a linha de comando, execute:
```bash
> git clone https://github.com/gustavofreze/cryptocurrency-prices.git
```
### Configuração
É necessário configurar as variáveis de ambiente, para todos os ambientes que você for executar. Isso pode ser feito
definindo os respectivos valores em [configs](configs).
A consulta de cotações é feita usando esta [API](https://coinmarketcap.com/api). Crie uma conta para obter uma chave de
autenticação. A chave deve ser colocada na propriedade `PRICE_KEY` do arquivo de configuração.
A notificação é feita usando esse [Webhook](https://webhook.site), basta copiar a url e adicioná-la a
propriedade `NOTIFICATION_URL` do arquivo de configuração.
Para executar a consulta, processamento e envio dos preços, você pode executar em ambiente local, o seguinte comando:
```bash
> make run
```
## CI/CD
O processo de integração e entrega contínua, definido nessa [pipeline](.github/workflows/pipeline-aws.yml), automatiza o
processo de implantação da lamba em ambientes diferentes.
Para realizar o deploy, será necessário ter uma conta na [AWS](https://aws.amazon.com), e obter as chaves de acesso
no [IAM](https://console.aws.amazon.com/iamv2/home#/home), `Access key ID` e `Secret access key`. Seu usuário precisa de
permissões para o **S3**, **Cloud Watch Logs**, **Cloud Formation** e **Lambda**.
Com as devidas permissões atribuídas, e com suas chaves de acesso, defina no repositório
suas [Actions secrets](https://github.com/gustavofreze/cryptocurrency-prices/settings/secrets/actions), levando em
consideração seu environment.
O action será executado nas operações de push para as branches `main` e `release/**`, onde eu defini que `main` possui o
environment `production`, enquanto `release/**` possui o environment `staging`.
## Roadmap
Depois que o processo de CI/CD foi finalizado, e a lambda foi implantada na AWS, basta acessar o
[console](https://sa-east-1.console.aws.amazon.com/lambda/home?region=sa-east-1#/functions/cryptocurrency-prices?tab=code)
e executar a chamada do lambda com um evento de teste.
Resultado da chamada do evento de teste.
Após a chamada do evento de teste, verifique os dados enviados para o webhook que você definiu anteriormente.
Dados recebidos pelo webhook.
## Testes
###### Executar testes em ambiente local.
- Executa todos os testes:
```bash
> make test
```