Azure Logic Apps のワークフローから Azure Blob Storage に接続する
適用対象: Azure Logic Apps (従量課金プラン + Standard)
この攻略ガイドでは、Azure Blob Storage コネクタを使用して Azure Logic Apps のワークフローから Azure Blob Storage アカウントとコンテナーにアクセスする方法について説明します。 このコネクタは、ワークフローが BLOB 操作に使用できるトリガーとアクションを提供します。 これにより、ストレージ コンテナーやその他のシステムでイベントによってトリガーされると実行する自動ワークフローを作成し、ストレージ コンテナー内のデータを操作するアクションを実行できます。 たとえば、Azure ストレージ アカウントに BLOB として保存されているファイルにアクセスして管理できます。
Azure Blob Storage には、Logic App (従量課金) および Logic App (Standard) のリソースの種類のワークフローから接続できます。 マルチテナント Azure Logic Apps とシングルテナント Azure Logic Apps のロジック アプリ ワークフローでコネクタを使用できます。 ロジック アプリ (Standard) では、Azure Blob "組み込み" コネクタ操作または Azure Blob Storage マネージド コネクタ操作のいずれかを使用できます。
コネクタに関するテクニカル リファレンス
Azure Blob Storage コネクタには、ロジック アプリの種類とホスト環境に基づいてさまざまなバージョンがあります。
ロジック アプリ | 環境 | コネクタのバージョン |
---|---|---|
従量課金プラン | マルチテナント Azure Logic Apps | マネージド コネクタ。コネクタ ギャラリーの [ランタイム]>[共有] の下に表示されます。 詳細については、次のドキュメントを確認してください。 - Azure Blob Storage マネージド コネクタ リファレンス - Azure Logic Apps のマネージド コネクタ |
Standard | シングルテナント Azure Logic Apps と App Service Environment v3 (Windows プランのみ) | マネージド コネクタ (Azure ホステッド) は、コネクタ ギャラリーの [ランタイム]>[共有] に表示されます。また、組み込みコネクタは、サービス プロバイダーベースであり、コネクタ ギャラリーの [ランタイム]>[アプリ内] に表示されます。 組み込みバージョンには次のような違いがあります。 - 組み込みバージョンは Azure Storage アカウントに直接接続し、接続文字列のみを必要とします。 - 組み込みバージョンは、Azure 仮想ネットワークに直接アクセスできます。 詳細については、次のドキュメントを確認してください。 - Azure Blob Storage マネージド コネクタ リファレンス - Azure BLOB 組み込みコネクタのリファレンス - Azure Logic Apps の組み込みコネクタ |
制限事項
Azure Blob Storage "マネージド" コネクタ アクションは、"50 MB 以下" のファイルの読み取りや書き込みを行うことができます。 Azure Blob Storage のアクションは、50 MB から 1024 MB までのファイルを処理するため、メッセージ チャンクをサポートしています。 BLOB コンテンツを取得するという名前の Blob Storage アクションは、チャンクを暗黙的に使用します。
Azure Blob Storage の "マネージド" と "組み込み" のトリガーはチャンクをサポートしていませんが、"組み込み" トリガーは 50 MB 以上のファイルを処理できます。 しかし、"マネージド" トリガーは、ファイル コンテンツを要求するときに、50 MB 以下のファイルのみを選択します。 50 MB より大きいファイルを取得するには、次のパターンに従います。
[BLOB が追加または変更されたとき (プロパティのみ)]のように、ファイルのプロパティを返す BLOB トリガーを使用します。
BLOB コンテンツの取得という Azure Blob Storage マネージド コネクタ アクションに従います。これは、暗黙的にチャンクを使用してファイル全体を読み取ります。
Azure Blob Storage トリガーの制限
- "マネージド" コネクタ トリガーは、ポーリング仮想フォルダー内で 30,000 個の BLOB に制限されています。
- "組み込み" コネクタ トリガーは、ポーリング コンテナー全体で 10,000 個の BLOB に制限されています。
この制限を超えると、新しい BLOB がワークフローをトリガーできない可能性があるため、トリガーはスキップされます。
前提条件
Azure アカウントとサブスクリプション。 Azure サブスクリプションがない場合は、無料の Azure アカウントにサインアップしてください。
Azure Storage アカウントにアクセスするロジック アプリ ワークフロー。 Azure BLOB トリガーでワークフローを開始するには、空のワークフローが必要です。 Azure BLOB アクションを使用するには、任意のトリガーでワークフローを開始します。
BLOB トリガーを追加する
従量課金ロジック アプリ ワークフローでは、Azure Blob Storage マネージド コネクタのみを使用できます。 ただし、Standard ロジック アプリ ワークフローでは、Azure Blob Storage マネージド コネクタと Azure BLOB 組み込みコネクタを使用できます。 どちらのコネクタ バージョンも BLOB トリガーを 1 つのみ提供しますが、従量課金と Standard のどちらのワークフローを使用しているかによって、トリガー名が次のように異なります。
ロジック アプリ | コネクタのバージョン | トリガー名 | 説明 |
---|---|---|---|
従量課金 | マネージド コネクタのみ | BLOB が追加または変更されたとき (プロパティのみ) | このトリガーは、ストレージ コンテナーのルート フォルダーで BLOB のプロパティが追加または更新されたときに起動します。 マネージド トリガーを設定すると、マネージド バージョンではストレージ コンテナー内の既存の BLOB が無視されます。 |
Standard | - 組み込みコネクタ - マネージド コネクタ |
- 組み込み: BLOB が追加または更新されたとき - マネージド: BLOB が追加または変更されたとき (プロパティのみ) |
- 組み込み: トリガーは、ストレージ コンテナーで BLOB が追加または更新されると起動し、ルート フォルダーだけでなく、ストレージ コンテナー内の入れ子になったあらゆるフォルダーに対して起動されます。 組み込みトリガーを設定すると、組み込みバージョンではコンテナー内のすべての既存の BLOB が処理されます。 - マネージド: このトリガーは、ストレージ コンテナーのルート フォルダーで BLOB のプロパティが追加または更新されたときに起動します。 マネージド トリガーを設定すると、マネージド バージョンではストレージ コンテナー内の既存の BLOB が無視されます。 |
次に示す手順では Azure portal を使用しますが、適切な Azure Logic Apps 拡張機能を使用すれば、次のツールでロジック アプリ ワークフローを作成することもできます。
従量課金プラン ロジック アプリ ワークフロー: Visual Studio または Visual Studio Code
Standard ロジック アプリ ワークフロー: Visual Studio Code
Azure portal で、従量課金ロジック アプリと空のワークフローをデザイナーで開きます。
デザイナーの検索ボックスの下で [Standard] を選択し、この汎用的な手順に従って、必要な Azure Blob Storage マネージド トリガーを追加します。
この使用例は、BLOB が追加または変更されたとき (プロパティのみ) という名前のトリガーで続行されます。
ダイアログが表示されたら、ストレージ アカウントへの接続に関する次の情報を指定します。 完了したら [作成] を選択します。
プロパティ Required 説明 接続名 はい 接続の名前 認証の種類 はい ストレージ アカウントの認証の種類。 詳細については、認証がサポートされているトリガーおよびアクションの認証の種類の、データへのアクセスをセキュリティで保護することに関するページを参照してください。 たとえば、この接続ではアクセス キー認証が使用され、ストレージ アカウントのアクセス キー値と次のプロパティ値が提供されます。
プロパティ 必要 値 説明 Azure Storage アカウント名 はい、ただし、アクセス キー認証の場合のみ <storage-account-name> 目的の BLOB コンテナーが存在する Azure ストレージ アカウントの名前。
注: ストレージ アカウント名を見つけるには、Azure portal で、お使いのストレージ アカウント リソースを開きます。 リソース メニューの [セキュリティとネットワーク] で [アクセス キー] を選択します。 [ストレージ アカウント名] で、名前をコピーして保存します。Azure ストレージ アカウントのアクセス キー はい、
ただし、アクセス キー認証の場合のみ<ストレージ アカウント アクセス キー> Azure ストレージ アカウントのアクセス キー。
注: アクセス キーを見つけるには、Azure portal で、お使いのストレージ アカウント リソースを開きます。 リソース メニューの [セキュリティとネットワーク] で [アクセス キー]>[key1]>[表示] を選択します。 主キーの値をコピーして保存します。トリガー情報ボックスが表示されたら、必要な情報を入力します。
[コンテナー] のプロパティ値については、フォルダー アイコンを選択して BLOB コンテナーを参照します。 または、構文 /<コンテナー名> を使用して手動でパスを入力します。次に例を示します。
このトリガーで使用できる他のプロパティを追加するには、[新しいパラメーターの追加] の一覧を開き、必要なプロパティを選択します。
詳細については、Azure Blob Storage マネージド コネクタ トリガーのプロパティを確認してください。
ワークフローに必要な他のアクションを追加します。
完了したら、ワークフローを保存します。 デザイナーのツール バーで、 [保存] を選択します。
BLOB アクションを追加する
従量課金ロジック アプリ ワークフローでは、Azure Blob Storage マネージド コネクタのみを使用できます。 ただし、Standard ロジック アプリ ワークフローでは、Azure Blob Storage マネージド コネクタと Azure BLOB 組み込みコネクタを使用できます。 各バージョンには名前が異なる複数のアクションがあります。 たとえば、マネージド コネクタ バージョンと組み込みコネクタ バージョンの両方に、ファイルのメタデータを取得するため、およびファイルの内容を取得するための独自のアクションがあります。
マネージド コネクタ アクション: これらのアクションは、従量課金または Standard ワークフローで実行されます。
組み込みコネクタ アクション: これらのアクションは、Standard ワークフローでのみ実行されます。
次の手順では Azure portal を使用しますが、適切な Azure Logic Apps 拡張機能があれば、次のツールを使用してロジック アプリ ワークフローを作成および編集することもできます。
従量課金プラン ロジック アプリ ワークフロー: Visual Studio または Visual Studio Code
Standard ロジック アプリ ワークフロー: Visual Studio Code
Azure portal で、従量課金ロジック アプリとワークフローをデザイナーで開きます。
ワークフローが空白の場合は、シナリオに必要なトリガーを追加します。
この例では、Recurrence トリガーを使用します。
デザイナーで、この汎用的な手順に従って、必要な Azure Blob Storage マネージド アクションを見つけて追加します。
この例では、[BLOB コンテンツの取得] というアクションを使用して、進めていきます。
ダイアログが表示されたら、接続に関する次の情報を指定します。 完了したら [作成] を選択します。
プロパティ Required 説明 接続名 はい 接続の名前 認証の種類 はい ストレージ アカウントの認証の種類。 詳細については、認証がサポートされているトリガーおよびアクションの認証の種類の、データへのアクセスをセキュリティで保護することに関するページを参照してください。 たとえば、この接続ではアクセス キー認証が使用され、ストレージ アカウントのアクセス キー値と次のプロパティ値が提供されます。
プロパティ 必要 値 説明 Azure Storage アカウント名 はい、
ただし、アクセス キー認証の場合のみ<storage-account-name> 目的の BLOB コンテナーが存在する Azure ストレージ アカウントの名前。
注: ストレージ アカウント名を見つけるには、Azure portal で、お使いのストレージ アカウント リソースを開きます。 リソース メニューの [セキュリティとネットワーク] で [アクセス キー] を選択します。 [ストレージ アカウント名] で、名前をコピーして保存します。Azure ストレージ アカウントのアクセス キー はい、
ただし、アクセス キー認証の場合のみ<ストレージ アカウント アクセス キー> Azure ストレージ アカウントのアクセス キー。
注: アクセス キーを見つけるには、Azure portal で、お使いのストレージ アカウント リソースを開きます。 リソース メニューの [セキュリティとネットワーク] で [アクセス キー]>[key1]>[表示] を選択します。 主キーの値をコピーして保存します。アクション情報ボックスに、必要な情報を指定します。
たとえば、[BLOB コンテンツの取得] アクションで、ストレージ アカウント名を指定します。 [BLOB] のプロパティの値については、フォルダー アイコンを選択してストレージ コンテナーまたはフォルダーを参照します。 または、パスを手動で入力します。
タスク BLOB パスの構文 ルート フォルダー内の特定の BLOB からコンテンツを取得します。 /<コンテナー名>/<BLOB 名> サブフォルダー内の特定の BLOB からコンテンツを取得します。 /<コンテナー名>/<サブフォルダー>/<BLOB 名> 次の例は、ルート フォルダー内の BLOB からコンテンツを取得するアクションの設定を示しています。
次の例は、サブフォルダー内の BLOB からコンテンツを取得するアクションの設定を示しています。
ワークフローに必要な他のアクションを追加します。
完了したら、ワークフローを保存します。 デザイナーのツール バーで、 [保存] を選択します。
ファイアウォールの背後にあるストレージ アカウントにアクセスする
ファイアウォールとファイアウォール規則を使用してアクセスを制限することで、Azure ストレージ アカウントにネットワーク セキュリティを追加できます。 ただし、この設定では、ストレージ アカウントへのアクセスを必要とする Azure およびその他の Microsoft サービスにおいて問題が生じます。 データ センター内のローカル通信では内部 IP アドレスが抽象化されるため、IP アドレスを使用してトラフィックを許可するだけでは、ファイアウォール経由の通信を正常に許可できない可能性があります。 使用する Azure Blob Storage コネクタに基づいて、次のオプションを使用できます。
従量課金ロジック アプリで Azure Blob Storage マネージド コネクタを使用してファイアウォールの内側にあるストレージ アカウントにアクセスするには、次のドキュメントを参照してください。
Standard ロジック アプリでファイアウォールの内側にあるストレージ アカウントにアクセスするには、次のドキュメントを確認してください。
Azure Blob Storage "組み込み" コネクタ: 仮想ネットワーク統合を経由してストレージ アカウントにアクセスする
Azure Blob Storage "マネージド" コネクタ: 他のリージョンにあるストレージ アカウントにアクセスする
他のリージョンにあるストレージ アカウントにアクセスする
マネージド ID 認証を使用しない場合、ロジック アプリのリソースとストレージ アカウントの両方が同じリージョンに存在していると、ロジック アプリ ワークフローはファイアウォールの内側にあるストレージ アカウントに直接アクセスできません。 回避策として、ストレージ アカウントとは別のリージョンにロジック アプリ リソースを配置してください。 そのうえで、リージョン内のマネージド コネクタのアウトバウンド IP アドレスにアクセスを許可します。
Note
このソリューションは、Azure Table Storage コネクタと Azure Queue Storage コネクタには該当しません。 代わりに、組み込み HTTP トリガーとアクションを使用して、Table Storage または Queue Storage にアクセスします。
ストレージ アカウントのファイアウォールにアウトバウンド IP アドレスを追加するには、以下の手順を実行してください。
ロジック アプリ リソースのリージョンのマネージド コネクタ送信 IP アドレスを確認します。
Azure portal で、ストレージ アカウント リソースを検索して開きます。
ストレージ アカウントのナビゲーション メニューの [セキュリティとネットワーク] で、[ネットワーク] を選択します。
信頼された仮想ネットワーク経由でストレージ アカウントにアクセスする
ロジック アプリとストレージ アカウントが同じリージョンに存在します。
プライベート エンドポイントを作成することで、自分のストレージ アカウントを Azure 仮想ネットワークに配置した後、その仮想ネットワークを信頼された仮想ネットワークの一覧に追加することができます。 信頼された仮想ネットワークを介してストレージ アカウントへのアクセスをロジック アプリに許可するには、仮想ネットワーク内のリソースに接続できる Standard ロジック アプリを作成する必要があります。
ロジック アプリとストレージ アカウントが異なるリージョンに存在します。
ストレージ アカウントにアクセス用のプライベート エンドポイントを作成します。
仮想ネットワーク統合を経由してストレージ アカウントにアクセスする
ロジック アプリとストレージ アカウントが同じリージョンに存在します。
プライベート エンドポイントを作成することで、ストレージ アカウントを Azure 仮想ネットワークに配置した後、その仮想ネットワークを信頼された仮想ネットワークの一覧に追加することができます。 ロジック アプリにストレージ アカウントへのアクセス権を付与するには、仮想ネットワーク統合を使用して送信トラフィックを設定し、仮想ネットワーク内のリソースへの接続を有効にする必要があります。 その後、ストレージ アカウントの信頼された仮想ネットワークの一覧に仮想ネットワークを追加できます。
ロジック アプリとストレージ アカウントが異なるリージョンに存在します。
ストレージ アカウントにアクセス用のプライベート エンドポイントを作成します。
システムマネージド ID を使用して同じリージョン内の Blob Storage にアクセスする
任意のリージョンの Azure Blob Storage に接続するには、認証のためにマネージド ID を使用できます。 ファイアウォールを介してストレージ アカウントにアクセスすることを Microsoft の信頼済みサービス (マネージド ID など) に許可する例外を作成できます。
Note
このソリューションは、Standard ロジック アプリには適用されません。 Standard ロジック アプリでシステム割り当てマネージド ID を使用する場合でも、Azure Blob Storage マネージド コネクタは同じリージョン内のストレージ アカウントに接続できません。
ロジック アプリでマネージド ID を使用して Blob Storage にアクセスするには、以下の手順を実行します。
Note
このソリューションには次の制限事項があります。
ストレージ アカウント接続を認証するには、システム割り当てマネージド ID を設定する必要があります。 ユーザー割り当てマネージド ID は機能しません。
ストレージ アカウントへのアクセスを構成する
例外とマネージド ID のサポートを設定するには、まずストレージ アカウントへの適切なアクセスを構成します。
Azure portal で、ストレージ アカウント リソースを検索して開きます。
ストレージ アカウントのナビゲーション メニューの [セキュリティとネットワーク] で、[ネットワーク] を選択します。
Note
ワークフローからストレージ アカウントへの接続を試みたときに "403 Forbidden (許可されていません)" というエラーが表示された場合、複数の原因が考えられます。 その先の手順に進む前に次の解決策を試してみてください。 まず、[信頼された Microsoft サービスによるこのストレージ アカウントに対するアクセスを許可します] 設定を無効にして変更内容を保存します。 次に、設定を再度有効にして、変更を保存し直してください。
ロジック アプリのロールの割り当てを作成する
次に、ロジック アプリ リソースのマネージド ID のサポートを有効にします。
以下の手順は、マルチテナント環境の従量課金プランのロジック アプリと、シングルテナント環境の Standard ロジック アプリのどちらでも同じです。
Azure portal で、ロジック アプリ リソースを開きます。
ロジック アプリ リソースのナビゲーション メニューで、[設定] の配下にある [ID] を選択します。
[システム割り当て] ペインで、[状態] を [オン] に設定します (まだ有効になっていない場合)。[保存] を選択し、変更を確定します。 [アクセス許可] で、 [Azure でのロールの割り当て] を選択します。
[Azure のロールの割り当て] ペインで、[ロールの割り当ての追加] を選択します。
[ロールの割り当ての追加] ペインで、新しいロールの割り当てを次の値で設定します。
プロパティ 値 説明 スコープ <resource-scope> ロールの割り当てを適用するリソースセット。 この例では、[ストレージ] を選択します。 サブスクリプション <Azure-subscription> お使いのストレージ アカウントの Azure サブスクリプション。 リソース <storage-account-name> ロジック アプリ ワークフローからアクセスするストレージ アカウントの名前。 Role <role-to-assign> シナリオのワークフローでリソースを操作するために必要なロール。 この例では、BLOB コンテナーと日付に対する読み取り、書き込み、削除アクセスが許可される [ストレージ BLOB データ共同作成者] が必要です。 ドロップダウン メニューのロールの横にある情報アイコンにマウス ポインターを合わせると、アクセス許可の詳細が表示されます。 操作を完了したら、[保存] を選択して、ロールの割り当ての作成を終了します。
ロジック アプリのマネージド ID のサポートを有効にする
次に、以下の手順を完了します。
空のワークフローがある場合は、Azure Blob Storage コネクタ トリガーを追加します。 それ以外の場合は、Azure Blob Storage コネクタ アクションを追加します。 既存の接続を使用するのではなく、トリガーまたはアクションのために新しい接続を作成してください。
必ず、マネージド ID を使用する認証の種類を設定してください。
トリガーまたはアクションを構成したら、ワークフローを保存して、トリガーまたはアクションをテストできます。
ストレージ アカウントへのアクセスに関する問題のトラブルシューティング
"この要求では、この操作の実行は許可されません。"
次のエラーはよく報告される問題です。ロジック アプリとストレージ アカウントが同じリージョンに存在する場合に発生します。 ただし、この制限を解決するためのオプションがあります。「ファイアウォールの背後にあるストレージ アカウントにアクセスする」セクションを参照してください。
{ "status": 403, "message": "This request is not authorized to perform this operation.\\r\\nclientRequestId: a3da2269-7120-44b4-9fe5-ede7a9b0fbb8", "error": { "message": "This request is not authorized to perform this operation." }, "source": "azureblob-ase.azconn-ase.p.azurewebsites.net" }
Application Insights エラー
404 および 409 エラー
Standard ワークフローで、ストレージ コンテナーに BLOB を追加する Azure BLOB 組み込みアクションを使用している場合、失敗した要求に対して Application Insights で 404 および 409 エラーが発生する可能性があります。 コネクタは BLOB を追加する前に BLOB ファイルが存在するかどうかを確認するため、これらのエラーは予期されたものです。 エラーは、ファイルが存在しない場合に発生します。 これらのエラーにもかかわらず、組み込みアクションによって BLOB が正常に追加されます。