LoginSignup
1
1

More than 1 year has passed since last update.

Azure Logic Appsでつまったことまとめ

Posted at

はじめに

最近Microsoft Azure上で稼働するアプリケーションなどを監視するために、AzureLogic Appsを使うことがある。
UIからの操作をメインに想定しているLogic Appsでは、細かな部分に手が届きづらいという難点があり、プログラムで書いた方が早くね?という自問自答が絶えない。
そんなノーコード・ローコードあるあるを抱えつつ、道中で遭遇したTipsについてまとめてみる。

(随時更新予定)

1. UnixTimeの取得

既存のAPIを定期的に叩き返却値を検証するLogic Appsを作成した時のこと。
そのAPIの仕様で、時間をUnixTimeで扱っていたが、Logic AppsUnixTimeを扱える便利な関数はない。
自分で計算することになるが、下記のように計算で求めることになる。

div(sub(ticks(utcNow()),ticks('1970-01-01')), 10000000)

ticks()は0001年1月1日午前0時00分00秒からの100ナノ秒単位の刻みの回数とのことなので、現在時刻からUnixTimeのベース時間(1970/01/01)との差をticksで求めつつ、ticks()の100ナノ秒単位の部分を秒変換してあげればいい。(1秒 = 1000000000ナノ秒)

Azure Logic Appsのワークフロー式関数のリファレンス ガイド - ticks

2. 日付のフォーマット

現在時刻をJSTでフォーマットしつつ表示したいケースは多いと思う。
その際に現在時刻を取得して、タイムゾーンを変換して、フォーマットして...のような作業をコネクタを組み合わせてやっているとワークフローが長ったらしくなってしまう。
convertFromUtc()を使えば、一撃で取得できる。

convertFromUtc(utcNow(),'Tokyo Standard Time','yyyy/MM/dd HH:mm:ss')

convertFromUtc
Time Zone IDs

3. ロジックアプリデザイナーのフローに名前をつける時アンダースコア(_)が表示されない

ロジックアプリではフローに識別子を与えることができる。
ロジックアプリデザイナーは確かに「For each」と書いてあるが、コードビューでは「For_each」と記載されている。
どうも、ロジックアプリデザイナーでアンダースコアが表示できないバグ?があるようだ。

▼ ロジックアプリデザイナー
スクリーンショット 2023-02-12 15.24.08.png
▼ コードビュー
スクリーンショット 2023-02-12 15.28.45.png

4. テキストファイル作成時の改行

Application Insightsで定期的にクエリを実行し、結果をAzureのストレージアカウントにテキストファイルで保存したい場面があった。その際任意の場所で改行したかったのだが、改行文字列周りで詰まったのでメモ。

URIエンコードされた改行文字列は「'%0A'」で表現されるので、テキストに変換し結合させる。

concat('For_each')?['message'], uriComponentToString( '%0A' ))

uriComponentToString()

まとめ

AzureのLogicAppsはところどころに落とし穴があり、細かいところで時間を浪費してしまうことがある。
細かいところには手が届かないがサクッとつくれることがLogicAppsの売りでもあると思う。
エンジニアの性で解決したくなる気持ちもわかるが、あきらめてAzure Functions等で作ってしまうのもありだと思う。

1
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
1
1