python azure functions v2 msiauthentication

python azure functions v2 msiauthentication

我试图通过 运行.ps1 脚本设置 MSI_ENDPOINT 和 MSI_SECRET 来弄清楚我们可以在 v1 中做什么。功能将使用服务分配的身份访问许多其他服务。有没有办法设置它,以便我的本地开发环境也可以 运行 完全相同的脚本?

from azure.keyvault import KeyVaultClient, KeyVaultAuthentication
from msrestazure.azure_active_directory import MSIAuthentication

credentials = MSIAuthentication()
key_vault_client = KeyVaultClient(credentials)

当我尝试在本地调试时,函数失败并出现以下错误

Executed 'Functions.stat-based-monitor' (Failed, Id=5611b477-976a-47e0-bb87-db06571eb3b7) System.Private.CoreLib: Exception while executing function: Functions.stat-based-monitor. System.Private.CoreLib: Result: Failure Exception: ConnectionError: HTTPConnectionPool(host='...', port=80): Max retries exceeded with url: /metadata/identity/oauth2/token?resource=https%3A%2F%2Fmanagement.core.windows.net%2F&api-version=2018-02-01 (Caused by NewConnectionError(': Failed to establish a new connection: [WinError 10051] A socket operation was attempted to an unreachable network',))

有趣的是,如果我 运行 这些行在 azure 虚拟机上而不是我的本地开发箱上,它会按预期执行 运行。 msiauth 是否需要 Azure VM?

运行 Azure CLI az 登录并验证您的工作站

  1. 确保您已 Azure CLI 2.0.x 安装
  2. 运行 Azure CLI 中的 az 登录
  3. 将本地环境中的代码输入网络对话框

这应该为您的本地环境提供适当的开发上下文,以便从密钥保管库端点访问值。

来自 Azure Docs

的更多详细信息

截至 2019 年 3 月,托管身份仅在 Azure VM 等 Azure 资源上受支持,尚不支持本地开发箱。