はじめに
すごく久しぶりにLogic Appsでシステム作ってます。
アラート発報のシステムなんですけど、発報に必要な設定をストレージアカウントに入れてあるJSONファイルから取得しようと思ったら、なんかうまくいかなくて・・・。
昔のことを思い出しながら作成した備忘録。
前提
Logic Appとストレージアカウント(Blob)は作成済みとします。
また、Blobのコンテナ内にJSONファイルが格納されているものとします。
下準備(Logic AppsからBlobに安全にアクセスするために)
まず、作成したLogic AppにマネージドIDを用意します。
今回はシステム割り当て済みのマネージドIDを使うことにします。
Logic Apps の左側ペインの「設定」の中にあるIDを選択します。
システム割り当て済みタブをえらび、状態を「ON」にしてください。
続いて、このマネージドIDに、ストレージアカウントのアクセス権の設定を行います。
ストレージアカウントの左側ペインで「アクセス制御(IAM)」を選択します。
上部にある「追加」から「ロールの割り当ての追加」を選択します。

まず、ロールを選択します。
「職務ロール」から、ストレージBlobにアクセス可能なロールを選びます。
ここでは「共同作成者」を選択してみます。
その後、画面下部にある「次へ」をクリックします。

次は選択したロールに割り当てるメンバーを選択します。
Logic AppsのマネージドIDを割り当てたいので、
アクセスの割り当て先を「マネージドID」とします。
「+メンバーを選択する」をクリックしてください。

右側ペインにいかのような画面が表示されるので、
マネージドIDのプルダウンから「Logic app」を選択します。

存在するLogic AppsのマネージドIDのリストが表示されるので、該当のマネージドIDを選択します。

メンバーに選択したマネージドIDが追加されたら、
画面下部の「レビューと割り当て」をクリックします。

確認の画面が表示されるので、「レビューと割り当て」をクリックしてください。

これで下準備は終了です。
Logic Appの処理
Logic Appでは、以下の手順でJSONファイルのデータを抽出します。
①BLOBからファイルを取得
②取得したデータを文字列に変換
③変換した文字列をJSONデータに変換
BLOBからのファイル取得
まずはBlobからファイルを取得するアクションを追加していきます。
専用のアクション「BLOB コンテンツを取得する (V2)」を追加すると、「新しい接続の作成」を行う必要があります。
ここでは、以下のように認証の種類として「Logic Apps のマネージドID」を選択し、「Create new」をクリックします。

接続の作成がうまくいくと、以下のような画面に切り替わります。

取得するBLOB内のファイルを指定するには、「ストレージアカウント名またはBLOBエンドポイント」と「BLOB」を設定する必要があります・・・が、マネージドIDでの接続の場合、「ストレージアカウント名またはBLOBエンドポイント」は手作業で入力する必要があります。

正しいストレージアカウント名を入力すれば、BLOBの方はフォルダアイコンをクリックするとプルダウンで選択できるようになります。

これでBlob内のファイルを取得できます。
取得データの文字列変換
この後、取得できたファイルデータを直接JSONデータ変換にかけたいところなのですが(笑)、実はそれだとうまくいきませんでした💦

一旦、取得したデータ(バイナリデータ)を文字列に変換する必要があります。
今回は、変数の初期化アクションを使って、文字列に変換します。
Nameは任意に入力して下さい。Typeは「String」にします。
Valueには、以下のような関数を設定してください。
文字列をJSONデータに変換
これはBuilt-inのアクション「Parse JSON」で大丈夫でした。
Contentに前のアクションの出力、SchemaにBlob内ファイルのJSONデータのスキーマを設定します。



