Azure App Service 無法從你的 Azure Container Registry (ACR) 抓取 Image

根據你提供的日誌訊息,問題的核心非常明確:Azure App Service 無法從你的 Azure Container Registry (ACR) 抓取 Image

關鍵錯誤代碼是 ImagePullUnauthorizedFailure。這代表 App Service 的身份識別(Identity)沒有足夠的權限去讀取 policyrecommendacr1.azurecr.io 裡的內容。

請依照以下步驟修復權限問題:


1. 檢查 ACR 的「管理使用者」 (最快速的解法)

如果你是手動部署且想快速測試,可以使用 ACR 的 Admin 帳號:

  1. 前往 Azure Container Registry (policyrecommendacr1)
  2. 在左側選單點選 Settings > Access keys
  3. 確定 Admin user 已勾選為 Enabled
  4. 回到 App Service > Deployment Center
  5. Settings 標籤下,確認來源是 Azure Container Registry,並確保它正確自動填入了認證資訊。

2. 使用「受控識別」 (Managed Identity, 推薦作法)

這是企業級最安全的做法,不需管理密碼。

  1. 啟用 App Service 身分識別
    • App Service 左側選單找到 Identity
    • System assigned 狀態改為 On,然後儲存。
  2. 在 ACR 賦予權限
    • 前往你的 ACR (policyrecommendacr1)
    • 點選 Access Control (IAM) > Add role assignment
    • 角色選擇:AcrPull
    • 指派對象:選擇 Managed Identity,並選取你的 App Service。
  3. 更新 App Service 設定
    • 回到 App Service > Deployment Center
    • 確定 Authentication 方式改為 Managed Identity

3. 檢查網路限制 (Firewall)

如果權限設定正確但依然失敗,請檢查 ACR 的網路設定:

  • 前往 ACR > Networking
  • 如果選取了 Selected networksPrivate access,請確保你的 App Service 位於允許存取的範圍內。
  • 若為測試用途,可先暫時改為 All networks 交叉比對。

總結檢查清單

  • [ ] ACR 的 AcrPull 權限是否已給予 App Service?
  • [ ] Deployment Center 裡的映像檔名稱與標籤 (v1) 是否輸入正確?
  • [ ] 如果使用 Admin User,密碼是否已在 App Service 的 Configuration (如 DOCKER_REGISTRY_SERVER_PASSWORD) 中正確更新?

修改完權限後,記得在 App Service 的 Overview 頁面點擊 “Restart”,強制它重新嘗試 Pull Image。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *