Giter Site home page Giter Site logo

aws-notificator's Introduction

aws-notificator

📦☁️🔔💬 Um notificador de alertas da AWS para WhatsApp e Discord, plug and play!

🔴 Configure as dependências:

  • Crie um bucket S3 na sua conta AWS para armazenar o tfstate
  • Tenha um usuário IAM na conta AWS com as credenciais em mãos para rodar o terraform e criar os recursos
  • Caso queira usar o WhatsApp, você precisa criar uma conta na Twillio e assinar o serviço de api, aqui tem um tutorial, você sairá do tutorial com destination_number, from_number, account_sid e auth_token em mãos: primeiro tutorial, segundo tutorial.
  • Caso queira usar o discord, crie um webhook no seu canal e copie o link: tutorial.
  • Tenha o docker instalado, ou se preferir, rode o terraform direto, eu prefiro com o docker :)

⚪ Explicando as variáveis:

  • destination_number Numero do seu celular neste modelo: "whatsapp:+55xxxxxxxxxx" - Obs: Se não quiser whatsapp, deixe a tag vazia, mas declare.
  • from_number Numero from do twilio - Obs: Se não quiser whatsapp, deixe a tag vazia, mas declare.
  • account Nome da sua conta da AWS
  • threshold Valor em USD que você deseja ser alertado
  • account_sid account_sid do twillio - Obs: Se não quiser whatsapp, deixe a tag vazia, mas declare.
  • auth_token auth_token do twillio - Obs: Se não quiser whatsapp, deixe a tag vazia, mas declare.
  • discord Deseja notificar via discord?: true ou false
  • whatsapp Deseja notificar via whatsapp?: true ou false
  • discord_webhook_url Webhook do discord region *Região AWS
  • AWS_ACCESS_KEY_ID Access Key ID do usuário IAM criado acima
  • AWS_SECRET_ACCESS_KEY Secret Access Key do usuário IAM criado acima

👨🏻‍🏫 Como usar:

⚠️ Isso é um exemplo e os valores das variáveis devem ser alterados de acordo com a sua realidade para funcionar⚠️

  • Clona o repositório e entra na raiz
git clone https://github.com/myengineer-io/aws-notificator.git
cd aws-notificator
  • Cria variaveis para as credenciais da AWS
export AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE"
export AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
  • terraform init
docker run --user root:root --entrypoint="" --network host -w /app -e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY -v $(pwd)/terraform:/app hashicorp/terraform:1.1.6 \
  terraform init \
  -backend-config="bucket=hashicorp-aws-notificator-bucket" \
  -backend-config="region=us-east-1" \
  -backend-config="key=aws-notificator"
  • terraform apply
docker run --user root:root --entrypoint="" --network host -w /app -e AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY -v $(pwd)/terraform:/app hashicorp/terraform:1.1.6 \
  terraform apply \
  -auto-approve \
  -var "region=us-east-1" \
  -var "destination_number=whatsapp:+5511999999999" \
  -var "from_number=whatsapp:+551155555555" \
  -var "account=hashicorp" \
  -var "threshold=100" \
  -var "account_sid=xxxxxXxxxX4" \
  -var "auth_token=26x55X5x45X55623" \
  -var "discord=true" \
  -var "whatsapp=true" \
  -var "discord_webhook_url=https://discord.com/api/webhooks/000000000000000/_-xxxXxXxXxXXXXXXXxxxxxXXXxxxxxxxxXXXxxxxxxxxxxxdxxxx"

🟢 Demo

  • Assim que você aplicar o terraform serão criados os seguintes recursos na sua conta:

    • aws_sns_topic
    • aws_sns_topic_subscription
    • aws_iam_role
    • aws_lambda_function
    • aws_lambda_permission
    • aws_cloudwatch_log_group
    • aws_iam_policy
    • aws_iam_role_policy_attachment
    • aws_cloudwatch_metric_alarm
  • E quando o alarme atingir o threshold, você será notificado:

    • via Discord

    • via WhatsApp

🛣️ Roadmap:

[✅❌⌛]

  • Cadastro na twilio ✅
  • Código para enviar mensagem para o whatsapp ✅
  • Subir tópico SNS ✅
  • Subir o código na lambda ✅
  • Criar alerta para orçamento ✅
  • Testar enviar mensagem para o whatsapp usando o SNS ✅
  • Notificação no discord ✅
  • Multiplos thresholds ⌛
  • Conversão do valor em Reais ⌛

📩 Mensagem SNS para teste da lambda:

{
  "account": "aws-prod",
  "threshold": "100",
  "discord": "true",
  "whatsapp": "true",
  "from_number": "whatsapp:+14155238886",
  "destination_number": "whatsapp:+5511952249624",
  "discord_webhook_url": "https://discord.com/api/webhooks/000000000000000/_-xxxXxXxXxXXXXXXXxxxxxXXXxxxxxxxxXXXxxxxxxxxxxxdxxxx"
}

Autor

👤 Marcus Neves

🤝 Contribuições são bem-vindas! Por favor, envie uma issue ou PR se você acredita que algo possa ser atualizado/melhorado!

aws-notificator's People

Contributors

nevesm avatar nicolasmatos avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.