注目キーワード
  1. Azure

Logic Apps から Storage Account の Blob に HTTP(REST API)接続する

Azure Logic Apps から Azure Storage Account の Blob に接続する際、基本的には Azure Blob Storage コネクタを使用します。

本記事の内容は、Azure Blob Storage コネクタで解決できなかった人向けのものです。

REST API 接続で Blob Storage に接続する必要が想定されるシナリオとして、Blob Storage の Content-Type を text/html や text/csv 等の固定のものにするといったケースが考えられます。

Logic Apps にはファイルの Content-Type のみを変更する機能は搭載されていません。

少々手間は掛かりますが、必要となる場面も少なくは無いため説明していきます。

Logic Apps のマネージド ID に Storage Account のロールを付与

Logic Apps と Storage Account のリソースは既に作成しているという前提のもと、Logic Apps のマネージド ID に Storage Account のロールを付与する手順を説明します。

事前に Logic Apps と Storage Account でタブを 2 つ開くと良いかもです。

Logic Apps のマネージド ID を有効化

メニューから「設定 > ID」に飛んでください。

デフォルトではマネージド ID はオフとなっているので、オンにして保存してください。

Storage Account 側で Logic Apps のマネージド ID にロール付与

Storage Account に移動して、メニューの「アクセス制御 (IAM) > 追加 > ロールの割り当ての追加」を選択してください。

下にスクロールすると「ストレージ BLOB データ共同作成者」があるので、選択して次へ。

割り当て先でマネージド ID を選択して、メンバーを選択。
先程マネージド ID を有効化した Logic Apps を選択してください。

その後、画面下部にあるレビューと割り当てを選択するとロールの付与が完了します。

Logic Apps のワークフロー構築

今回は、Google drive から取得したファイルを Storage Account に転送するというシナリオを想定し、全体のワークフローを構築しています。
Google drive の箇所は SharePoint だろうが SFTP だろうが何でもいいです。

REST API – URI とメソッドの設定

はじめに、以下の指定箇所を置き換えて URI を作成してください。

https://<ストレージアカウント名>.blob.core.windows.net/<コンテナ名>/<ファイル名>

今回は、以下内容でいきます。
ストレージアカウント名 : storageaccount20240401
コンテナ名 : blob-test
ファイル名 : sample.txt

完成したら HTTP アクションに張り付け、ついでにメソッドを PUT にしてください。

▼ 参考情報

Put Blob 操作では、新しいブロック、ページ、または追加 BLOB を作成するか、既存のブロック BLOB の内容…

REST API – Header と body

公開情報を参考にすると Header を設定する際、以下のものが必須となっています。
・Authorization
・Date または x-ms-date
・x-ms-version
・Content-Length
・x-ms-blob-type

しかしながら、今回は Logic Apps から接続するため、他の方法で代用できるものや Header に追加しなくても動作するものがあります。

Authorization はマネージド ID で代用するため、最低限必要なものとして x-ms-version と x-ms-blob-type の 2 つと、必須ではありませんが Content-Type を Header に挿入してください。

補足として、x-ms-version は Storage サービスのバージョン、x-ms-blob-type は作成する BLOB の種類、Content-Type はファイルの種類となっています。

今回は以下のものを設定してください。
x-ms-version : 2023-11-03
x-ms-blob-type : BlockBlob
Content-Type : text/plain

Azure Storage では、複数のバージョンがサポートされています。 ストレージ サービスに対して要求を行うには、…

Qiita

Content-Type List自分が使いそうなとこだけピックアップ…

続けて body の中身を設定します。
今回は Google drive から取得したコンテンツを埋め込みます。

マネージド ID での認証を追加する

HTTP アクションの最下部に認証を有効にする箇所があります。

画像のように設定し、黄色マーカーだけ自分の Storage Account 名に置き換えて下さい。

チャンクの無効化

ここから先は、これまで紹介した手順で、Storage Account へのプッシュが出来たという人はやらなくていい作業になります(前はこんな事しなくても動いたのに……)

ちなみに、やらないと以下のエラーが出ます。

InvalidProtocolResponse
The response to partial content upload request is not valid. The status code returned in the subsequent partial content response is 'Created'. Expected status code is 'OK'.

ただ、実施いただく内容としてはとてもシンプルで、HTTP アクションのタブを「パラメータ」から「設定」に切り替えていただき、チャンクの許可をオフにするだけです。

まとめ

手順を全て実施いただくことで、Storage Account にファイルを追加する事が出来ます。

最新情報をチェックしよう!