共用方式為


執行 Azure Batch 作業時拒絕存取

Azure 儲存體 帳戶是 Azure Batch 帳戶儲存資源檔案、應用程式套件和輸出檔案的必要相依元件。 在許多情況下,您可以使用 Azure 儲存體 帳戶搭配防火牆來增強其安全性。 不過,Azure 儲存體 具有防火牆的帳戶可能會在您執行 Azure Batch 作業時造成錯誤。 本文提供這類問題的解決方案。

徵兆

執行 Azure Batch 作業時,您可能會遇到與相關聯 Azure 記憶體帳戶相關的錯誤。

以下是錯誤範例:

類別:UserError
程序代碼:ResourceContainerAccessDenied
訊息:拒絕存取其中一個指定的 Azure 部落格容器

原因

當您建立 Azure Batch 集區時,將會佈建新的虛擬機(Batch 節點)。 如果您未將靜態公用IP位址指派給 Batch 集區,則會指派隨機公用IP位址。 每當您將節點數目調整為 0 並再次重設大小時,這些新 Batch 節點的公用 IP 位址將會變更。 因此,如果相關聯的記憶體帳戶已設定防火牆,您很難管理防火牆的允許清單。

如果記憶體帳戶和 Batch 集區位於相同區域,則不論 Batch 集區是否有靜態公用 IP 位址,來自 Batch 節點的輸出流量一律會透過 Azure 骨幹因特網 (私人 IP 位址) 傳送。 不允許記憶體防火牆在允許清單中新增私人IP位址,這會導致記憶體帳戶的流量遭到拒絕。

解決方法

若要解決此問題,請根據您的案例管理 Batch 集區和記憶體帳戶組態。

注意

如果您需要上傳應用程式套件,則下列任何解決方案都無法運作。 記憶體帳戶不得設定任何防火牆。 如需詳細資訊,請參閱 鏈接記憶體帳戶

案例 1:Batch 集區和記憶體帳戶位於相同的區域,而 Batch 集區具有虛擬網路

  1. 從 Azure 入口網站 >Batch 帳戶>集>區屬性檢查 [網络組態] 底下的子網資訊。 記下並記下資訊。

    Azure Batch 集區子網信息的螢幕快照。

  2. 流覽至記憶體帳戶,然後選取 [網络]。 在 [防火牆和虛擬網络] 設定中,針對 [公用網络存取] 選取 [從選取的虛擬網络和IP 位址啟用]。 在防火牆允許清單中新增 Batch 集區的子網。

    顯示如何將子網新增至防火牆允許清單的螢幕快照。

    如果子網未啟用服務端點,當您選取服務端點時,將會顯示通知,如下所示:

    下列網路未針對 『Microsoft.Storage』 啟用服務端點。 啟用存取最多需要 15 分鐘才能完成。 啟動此作業之後,如果您不想等候,請放心離開並稍後返回。

    因此,在您新增子網之前,請在 Batch 虛擬網路中檢查它,以查看記憶體帳戶的服務端點是否已啟用。

    顯示如何檢查服務端點是否已啟用的螢幕快照。

完成上述設定之後,集區中的 Batch 節點可以成功存取記憶體帳戶。

案例 2:Batch 集區和記憶體帳戶位於不同的區域

  1. 在具有靜態公用IP位址的虛擬網路中建立新的Batch集區。 如需詳細資訊,請參閱 使用指定的公用IP位址建立 Batch 集區

    由於 Batch 集區和記憶體帳戶位於不同的區域,因此輸出流量會透過公用 IP 位址通過公用因特網。

  2. 記下公用IP位址。

  3. 將公用IP位址指派給 Batch 集區公用 Load Balancer 的IP。

    之後,請檢查 Batch 集區的屬性。 它們會像下列螢幕快照中的螢幕快照:

    Batch 集區屬性的螢幕快照。

  4. 將公用IP位址新增至記憶體防火牆允許清單。

    公用 IP 位址的螢幕擷取畫面。

    顯示公用IP位址已新增至allowlist的螢幕快照。

  5. 使用新建立的 Batch 集區執行 Batch 作業。

與我們連絡,以取得說明

如果您有問題或需要相關協助,請建立支援要求,或詢問 Azure community 支援。 您也可以向 Azure 意見反應社群提交產品意見反應。