Azure Batch ジョブの実行時にアクセスが拒否される
Azure ストレージ アカウントは、リソース ファイル、アプリケーション パッケージ、出力ファイルを格納するために Azure Batch アカウントに必要な依存コンポーネントです。 多くの場合、Azure Storage アカウントとファイアウォールを使用してセキュリティを強化します。 ただし、ファイアウォールを備えた Azure Storage アカウントでは、Azure Batch ジョブを実行するときにエラーが発生する可能性があります。 この記事では、このような問題の解決策について説明します。
現象
Azure Batch ジョブを実行すると、関連付けられている Azure ストレージ アカウントに関連するエラーが発生する可能性があります。
エラーの例を次に示します。
Category: UserError
Code: ResourceContainerAccessDenied
メッセージ: 指定された Azure ブログ コンテナーの 1 つに対するアクセスが拒否されました
原因
Azure Batch プールを作成すると、新しい仮想マシン (Batch ノード) がプロビジョニングされます。 静的パブリック IP アドレスを Batch プールに割り当てない場合は、ランダムなパブリック IP アドレスが割り当てられます。 ノードの数を 0 に変更し、再度サイズを変更するたびに、これらの新しい Batch ノードのパブリック IP アドレスが変更されます。 そのため、関連付けられているストレージ アカウントにファイアウォールが構成されている場合、ファイアウォールの許可リストを管理するのは困難です。
ストレージ アカウントと Batch プールが同じリージョンにある場合、Batch プールに静的パブリック IP アドレスがあるかどうかに関係なく、Batch ノードからの送信トラフィックは常に Azure バックボーン インターネット (プライベート IP アドレス) 経由で送信されます。 ストレージ ファイアウォールで許可リストにプライベート IP アドレスを追加することは許可されていません。これにより、ストレージ アカウントへのトラフィックが拒否されます。
解決方法
この問題を解決するには、シナリオに基づいて Batch プールとストレージ アカウントの構成を管理します。
Note
アプリケーション パッケージをアップロードする必要がある場合、次のソリューションは動作しません。 ストレージ アカウントでファイアウォールを構成することはできません。 詳細については、「 ストレージ アカウントのリンク」を参照してください。
シナリオ 1: Batch プールとストレージ アカウントが同じリージョンにあり、Batch プールに仮想ネットワークがある
Azure portal >Batch Account>Pool>Properties から Network Configuration でSubnet 情報を確認します。 メモを取り、情報を書き留めておきます。
ストレージ アカウントに移動し、 Networking を選択します。 ファイアウォールと仮想ネットワーク設定で、選択した仮想ネットワークと IP アドレスから有効を選択パブリック ネットワーク アクセス。 ファイアウォール許可リストに Batch プールのサブネットを追加します。
サブネットでサービス エンドポイントが有効になっていない場合は、選択すると、次のように通知が表示されます。
次のネットワークでは、"Microsoft.Storage" に対してサービス エンドポイントが有効になっていません。 アクセスが有効になるまでに、最大で 15 分かかることがあります。 この操作を開始した後は、後で待機しない場合は、そのままにして戻っても問題ありません。
そのため、サブネットを追加する前に、Batch 仮想ネットワークでそれを確認して、ストレージ アカウントのサービス エンドポイントが有効になっているかどうかを確認します。
上記の構成を完了すると、プール内の Batch ノードがストレージ アカウントに正常にアクセスできるようになります。
シナリオ 2: バッチ プールとストレージ アカウントが異なるリージョンにある
静的パブリック IP アドレスを使用して、仮想ネットワークに新しい Batch プールを作成します。 詳細については、「 パブリック IP アドレスを指定して Batch プールを作成するを参照してください。
Batch プールとストレージ アカウントは異なるリージョンにあるため、送信トラフィックはパブリック IP アドレスを介してパブリック インターネットを経由します。
パブリック IP アドレスを書き留めます。
パブリック IP アドレスを Batch プールのパブリック ロード バランサーの IP に割り当てます。
その後、Batch プールのプロパティを確認します。 これらは、次のスクリーンショットのようになります。
ストレージ ファイアウォールの許可リストにパブリック IP アドレスを追加します。
新しく作成された Batch プールで Batch ジョブを実行します。
お問い合わせはこちらから
質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。