次の方法で共有


Azure Batch ジョブの実行時にアクセスが拒否されました

Azure Storage アカウントは、リソース ファイル、アプリケーション パッケージ、および出力ファイルを格納するために、Azure Batch アカウントに必要な依存コンポーネントです。 多くの場合、ファイアウォールを備えた Azure Storage アカウントを使用してセキュリティを強化します。 ただし、ファイアウォールを備えた Azure Storage アカウントでは、Azure Batch ジョブを実行するとエラーが発生する可能性があります。 この記事では、このような問題の解決策について説明します。

現象

Azure Batch ジョブを実行するときに、関連付けられている Azure ストレージ アカウントに関連するエラーが発生する可能性があります。

エラーの例を次に示します。

カテゴリ: UserError
コード: ResourceContainerAccessDenied
メッセージ: 指定された Azure ブログ コンテナーの 1 つに対するアクセスが拒否されました

原因

Azure Batch プールを作成すると、新しい仮想マシン (Batch ノード) がプロビジョニングされます。 静的パブリック IP アドレスを Batch プールに割り当てない場合は、ランダムなパブリック IP アドレスが割り当てられます。 ノードの数を 0 にサイズ変更し、もう一度サイズを変更するたびに、これらの新しい Batch ノードのパブリック IP アドレスが変更されます。 そのため、関連付けられているストレージ アカウントにファイアウォールが構成されている場合、ファイアウォールの許可リストを管理するのは困難です。

ストレージ アカウントと Batch プールが同じリージョンにある場合、Batch プールに静的パブリック IP アドレスがあるかどうかに関係なく、Batch ノードからの送信トラフィックは常に Azure バックボーン インターネット (プライベート IP アドレス) 経由で送信されます。 ストレージ ファイアウォールで許可リストにプライベート IP アドレスを追加することはできません。これにより、ストレージ アカウントへのトラフィックが拒否されます。

解決方法

この問題を解決するには、シナリオに基づいて Batch プールとストレージ アカウントの構成を管理します。

注:

アプリケーション パッケージをアップロードする必要がある場合、次の解決策は機能しません。 ストレージ アカウントでファイアウォールを構成することはできません。 詳細については、「 ストレージ アカウントをリンクする」を参照してください。

シナリオ 1: Batch プールとストレージ アカウントが同じリージョンにあり、Batch プールに仮想ネットワークがある

  1. [Azure portal> Batch アカウント >プール>のプロパティ] の [ネットワーク構成]下にある [サブネット情報]を確認します。 メモを取り、情報を書き留めておきます。

    Azure Batch プール サブネット情報のスクリーンショット。

  2. ストレージ アカウントに移動し、[ ネットワーク] を選択します。 [ファイアウォールと仮想ネットワーク] 設定で、[選択した仮想ネットワークとパブリック ネットワーク アクセスの IP アドレスから有効にする] を選択します。 ファイアウォール許可リストに Batch プールのサブネットを追加します。

    ファイアウォール許可リストにサブネットを追加する方法を示すスクリーンショット。

    サブネットでサービス エンドポイントが有効になっていない場合は、選択すると、次のように通知が表示されます。

    次のネットワークでは、"Microsoft.Storage" に対してサービス エンドポイントが有効になっていません。 アクセスを有効にするには、最大で 15 分かかります。 この操作を開始した後は、待機しない場合は、後で退出して戻っても安全です。

    そのため、サブネットを追加する前に、そのサブネットを Batch 仮想ネットワークにチェックして、ストレージ アカウントのサービス エンドポイントが有効になっているかどうかを確認します。

    サービス エンドポイントが有効になっているかどうかをチェックする方法を示すスクリーンショット。

上記の構成を完了すると、プール内の Batch ノードがストレージ アカウントに正常にアクセスできるようになります。

シナリオ 2: バッチ プールとストレージ アカウントが異なるリージョンにある

  1. 静的パブリック IP アドレスを持つ仮想ネットワークに新しい Batch プールを作成します。 詳細については、「 指定されたパブリック IP アドレスを使用して Batch プールを作成する」を参照してください。

    Batch プールとストレージ アカウントは異なるリージョンにあるため、送信トラフィックはパブリック IP アドレスを介してパブリック インターネットを経由します。

  2. パブリック IP アドレスを書き留めます。

  3. Batch プールのパブリック Load Balancerの IP にパブリック IP アドレスを割り当てます。

    その後、Batch プールのプロパティをチェックします。 次のスクリーンショットのようなものです。

    Batch プールのプロパティのスクリーンショット。

  4. パブリック IP アドレスをストレージ ファイアウォール許可リストに追加します。

    パブリック IP アドレスのスクリーンショット。

    許可リストにパブリック IP アドレスが追加されていることを示すスクリーンショット。

  5. 新しく作成された Batch プールで Batch ジョブを実行します。

お問い合わせはこちらから

質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。