python azure函数v2 msiauthentication

时间:2019-01-24 23:19:50

标签: azure-functions azure-msi azure-functions-core-tools

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

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

credentials = MSIAuthentication()
key_vault_client = KeyVaultClient(credentials)

当我尝试在本地调试时,功能失败并显示以下错误

  

已执行“基于Functions.stat的监视器”(失败,Id = 5611b477-976a-47e0-bb87-db06571eb3b7)   System.Private.CoreLib:执行功能时异常:Functions.stat-based-monitor。 System.Private.CoreLib:结果:失败   例外:ConnectionError:HTTPConnectionPool(host ='...',端口= 80):URL超过最大重试次数:/metadata/identity/oauth2/token?resource=https%3A%2F%2Fmanagement.core.windows.net% 2F&api-version = 2018-02-01(由NewConnectionError(':导致无法建立新连接:[WinError 10051]尝试对不可达网络的套接字操作',))

有趣的是,如果我在azure vm而不是我的本地dev框上运行这些行,它的确会按预期运行。 msiauth是否需要Azure VM?

2 个答案:

答案 0 :(得分:1)

从2019年3月开始,仅Azure资源(如Azure VM)支持托管身份,尚不支持本地开发箱。

答案 1 :(得分:0)

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

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

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

来自Azure Docs

的更多详细信息