NO IMAGE

Logic AppsからBlob Storageに接続する【HTTP(REST)】

Logic Apps から Storage Account の Blob に接続する際、基本的には Azure Blob Storage コネクタを使用しますが、シナリオによっては REST API でしか解決できないものがございます。

例えば、Blob Storage の Content-Type をtext/csv 等の固定のものにするといったケースであり、本記事の内容は Azure Blob Storage コネクタで解決できなかった人向けのものです。

先述の通り、Logic Apps には Content-Type のみを変更する機能はございません。
REST API での接続は少々手間が掛かりますが、必要となる場面も少なく無いため説明します。

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

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

上記を参考に URI の指定が完了したら HTTP アクションに貼り付け、メソッドを PUT にしてください。

BLOB の 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 名に置き換えて下さい。

チャンクの無効化

ここから先は、前述の手順では次のようなエラーが発生したという人向けの内容になります。

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 アクションのタブを「パラメータ」から「設定」に切り替えていただき、チャンクの許可をオフにしてみてください。

NO IMAGE
Follow Me
>「IT」で繋がるコミュニティ

「IT」で繋がるコミュニティ

IT の普及でコミュニケーションは容易になりましたが、技術的な質問には壁があると私は考えています。本コミュニティは、プログラミングやインフラを問わず、幅広い分野の専門家が互いに助け合う場です。実務未経験含めてどなたでも参加可能です。

CTR IMG