3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PowerAutomateでサービスのEOLを監視してTeamsに通知するフローを作ってみた

Last updated at Posted at 2024-04-23

はじめに

とあるライブラリのEOL発表に気づくのが遅れてしまい
影響調査等々の対応にとてもバタバタしてしまったことを受け、EOLを定期的にチェックしてTeamsに通知するPowerAutomateのフローを作ったので紹介します。

今回、EOLの監視にはendoflife.dateのAPIを使用しています。

Why PowerAutomate?

AWS Lambdaやローカルで動かす等も考えたのですが、
以下のことを考えてPowerAutomateを使うことにしました。

  • Teamsへの通知で面倒な連携周りを勝手にやってくれる
  • 追加料金が不要だった
  • PowerAutomateを使ってみたかった

成果物イメージ

毎週月曜日にendoflife.dateのAPIを叩き、
EOLが公開されているライブラリ一覧をTeamsへ通知してくれます。
image.png

監視対象はTeamsに配置したExcelの表で管理しています。
image.png

実装

フローの全体図

image.png

APIを実行

フローの肝の部分です。
とはいっても大したことはしていません。

  1. 「HTTP」でExcelの表から取得したURLへGETリクエストを送信
  2. APIの取得結果を「JSONの解析」で解析
    スキーマ定義は下記の通り、ある程度必要そうなものを載せています。
    ※レスポンスの型は公式docを参考にしています。
    {
        "type": "object",
        "properties": {
            "releaseDate": {
                "type": "string"
            },
            "eol": {
                "type": [
                    "boolean",
                    "string"
                ]
            },
            "latest": {
                "type": "string"
            },
            "lts": {
                "type": [
                    "boolean",
                    "string"
                ]
            }
        }
    }
    

EOLの判定

EOLは以下のように判定しています。

image.png

演算子 比較する値
equals(body('JSON_の解析')?['eol'], false) is not equal to true

EOLが公開されていない場合、eolの値にはfalseが入っているようなので、それ以外は全てEOL公開済みと判定するようにしました。
※EOLが公開されている場合、eolの値にはyyyy-MM-dd形式の日付文字列が入っています。

Teamsへ通知

配列を文字列に変換してからひたすらreplace()関数を使って成型しています。
もっとスマートに変換できる術を知る方は是非ご教示ください。

replace(replace(replace(replace(string(variables('EOL_LIST')), ',', '<br />'), '[', ''), ']', ''), '"', '')

参考

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?