Pocket

[DigitalOcean]APIを使って毎月の請求をSlackに通知させてみた

3年前に作った、DigitalOceanで毎月の請求額をシェルスクリプトでSlack通知(CircleCI/スケジュールトリガー)させていましたが、勉強がてらGoに移行してみました。かつ、今ChatGPTが流行りまくっていますが、コードのベースは作ってくれたとしても全く動かなかったので、デバッグして修正してみました。


add billing/main.go

  • go version 1.20.3 
  • 流れ
    • APIのHTTPリクエストを作成/送信
      • レスポンスボディをJSONとしてパース
      • 請求履歴を取得
    • 取得した請求履歴を使用
      • Slackに通知するメッセージを作成
    • Slack Incoming Webhook URLを設定
      • SlackにPOSTするJSONデータを作成
      • SlackのHTTPリクエストを作成/Slackに通知。
  • 環境変数
    • DO_TOKEN
    • SLACK_URL

ちなみに latestBillを fmt.Println すると以下のように出てきます。


CircleCI

  • .circleci/config.yml

golangコンテナに変更してSlack Orbsもバージョン3だったので、4にバージョンアップしました。(通知方法はTemplates)ジョブのスケジュールトリガーは毎月2日0時のまま実行となります。

[CircleCI]Orbs Slackをv3からv4にバージョンアップしてみた


Test

  • CircleCI

  • Slack

 


まとめ

シェル芸からChatGPTを使ってGoに移行することができました。ChatGPTのメリットはプログラムを書く際に、学習の速度が向上します。やはり人のコードを真似して書くのが手っ取り早いので、ChatGPTはバシバシ活用していきましょう!

てか機能ごとに関数にしたほうが可読性が良いので、後でリファクタリングします。深夜3時のブログは眠いんだわ。


リファクタリング

そして時は2024/01/20!リファクタリングしたああああ!これでメンテナンス性上がった。

  • 変更点
    • 関数の分割とモジュール化
    • エラーハンドリングの修正
    • 型の明確化とJSONパースの改善
    • フォーマット指定子の修正

 

Pocket


adachin

1989年生まれのSRE。ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、オブザーバビリティ、緊急対応、AWS/Azureでのインフラ構築、Docker開発環境の提供、Kubernetes保守、インフラコード化、新技術の検証、リファクタリング、セキュリティ強化などを担当している。個人事業主では数社サーバー保守とベンチャー企業のSREインフラコンサルティングやMENTAで未経験者にインフラのコーチング/コミュニティの運用を実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。

0件のコメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください