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 にロール付与
下にスクロールすると [ストレージ 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 では、複数のバージョンがサポートされています。 ストレージ サービスに対して要求を行うには、…
続けて 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 アクションのタブを「パラメータ」から「設定」に切り替えていただき、チャンクの許可をオフにしてみてください。