Python Azure функции v2 msiauthentication
Я пытаюсь выяснить, что мы могли бы сделать в v1, установив MSI_ENDPOINT и MSI_SECRET через скрипт run.ps1. Функция получит доступ к ряду других сервисов, используя присвоенный сервису идентификатор. Есть ли способ настроить это так, чтобы моя локальная среда разработки могла также запускать тот же сценарий?
from azure.keyvault import KeyVaultClient, KeyVaultAuthentication
from msrestazure.azure_active_directory import MSIAuthentication
credentials = MSIAuthentication()
key_vault_client = KeyVaultClient(credentials)
Когда я пытаюсь отладить локально, функция завершается со следующей ошибкой
Выполнен 'Functions.stat-based-monitor' (Ошибка, Id=5611b477-976a-47e0-bb87-db06571eb3b7) System.Private.CoreLib: Исключительная ситуация при выполнении функции: Functions.stat-based-monitor. System.Private.CoreLib: Результат: Сбой Исключение: ConnectionError: HTTPConnectionPool(host='...', port=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 вместо моего локального устройства разработки, он работает так, как ожидалось. Требуется ли виртуальная машина Azure для msiauth?
1 ответ
По состоянию на март 2019 года управляемые удостоверения поддерживаются только в таких ресурсах Azure, как виртуальная машина Azure, а локальные блоки разработки еще не поддерживаются.
Запустите Azure CLI az login и аутентифицируйте свою рабочую станцию.
- Убедитесь, что у вас установлен Azure CLI 2.0.x
- запустите az login в Azure CLI
- введите код из вашей локальной среды в веб-диалог
Это должно дать вашей локальной среде надлежащий контекст разработки для доступа к значениям из конечной точки хранилища ключей.
Подробнее из документов Azure