我有一个Azure应用服务,当应用服务启动时,它会从Azure容器注册表(ACR)中提取容器映像。我正在尝试让ACR Webhook通知App Service有新容器可用并自动重新启动。然而,当Webhook在ADO管道中运行良好时,我得到了一个“401未授权”错误。
在应用服务中,我打开了“持续部署”,并将Webhook URL复制到ACR Webhook中的服务URI:
App Service对Container Registry具有“AcrPull”权限:
即使在Webhook上运行Ping也会导致401,配置如下:
我错过了什么?我在Microsoft文档中没有看到任何特别跳过的内容。
1条答案
按热度按时间gijlo24d1#
Azure容器注册表Webhook到App Service 401:
验证您添加的权限(用户或服务主体),即使您提供了通过App服务获取注册表的适当权限。
因为要能够从ACR中提取,您必须将
AcrPull
角色分配给“托管身份或服务主体”。有时ACR webhook没有访问App服务的授权。要解决此问题,请将ACR Webhook IP地址添加到App Service的IP限制中。
在少数情况下,App Service可能未设置为使用正确的身份验证方法。在设置中检查App Service的
Authentication
中的身份验证。如果问题仍然存在,请尝试使用管理员凭据进行身份验证,如图所示。
检查App服务和容器注册表是否存在防火墙或IP限制。
如果上述方法都没有帮助,请通过访问应用服务中部署选项下的部署中心日志来检查日志。
我在我的环境中尝试了同样的方法,其中添加了以下权限,并在Azure AD中注册了一个应用程序,结果如下所示。
其他解决方案,如ACR任务功能或使用Azure事件网格和Azure函数开发自定义解决方案,如果未解决,可能需要。