#azure #azure-functions #azure-storage #azure-powershell
#azure #azure-функции #azure-хранилище #azure-powershell
Вопрос:
У меня есть функциональное приложение Azure powershell. Задача этого функционального приложения — сгенерировать токен SAS учетной записи хранилища Azure.
Я использую следующую команду для генерации токена
$StartTime = Get-Date
$EndTime = $StartTime.AddMinutes(50.0)
$token = Get-AzStorageAccount -Name "<storage-account-name>" -ResourceGroupName "<resource-group-name>" | New-AzStorageContainerSASToken -Container <container-name> -Permission rdwl -StartTime $StartTime -ExpiryTime $EndTime
Код предоставил действительный токен sas в течение нескольких дней. Но с некоторого времени он выдает ошибку
Контекст Azure PowerShell не был инициализирован должным образом. Пожалуйста, импортируйте модуль и повторите попытку
Я видел несколько вопросов, в которых упоминалось «‘ session
не был должным образом инициализирован'» и нигде не упоминался контекст.
Мне нужна помощь в решении этой проблемы
Комментарии:
1. Вы обязательно импортировали модуль после его установки? Кроме того, иногда после установки модуля должна помочь простая перезагрузка вашего компьютера.
Ответ №1:
Это, скорее всего, вызвано https://github.com/Azure/azure-functions-powershell-worker/issues/554 . Недавно выпущенный Az.Accounts 2.1. * ввел эту регрессию. Пока это не будет исправлено в модулях, временным обходным решением является откат к Az.Accounts 1.9.5 с помощью следующих инструкций: https://github.com/Azure/azure-functions-powershell-worker/issues/552#issue-732797653 . Пожалуйста, обратите внимание, что этот шаг является критически важным:
Import-Module Az.Accounts -RequiredVersion '1.9.5'
Ответ №2:
Да, "the context has not been properly initialized"
отличается от "the session has not been properly initialized"
. Возможно, модуль был потерян после запуска несколько дней.
После проверки документов об использовании модулей PowerShell я предлагаю использовать Save-Module
перед публикацией вашей функции. Рассмотрите возможность развертывания вашего функционального приложения в плане обслуживания приложений, для которого установлено значение «Всегда включено«, или в премиум-плане.
Также может сработать более сложное решение — настроить контекст вручную.
Комментарии:
1. Я попытался использовать Save-Module и сохранил модули Az.Account и Az.Storage в модулях и импортировал их в файл запуска. Кажется, это работает абсолютно нормально на локальном. При развертывании я использовал путь
D:homesitewwwroot
в качестве префикса, поскольку это место, где развертываются функции Azure. Но это не устранило ошибку"the context has not been properly initialized"
.2. Во время отладки я попытался извлечь контекст с помощью
Get-AzContext
command. Это тоже вызвано локально, в то время как в развернутой версии написано, что команда не распознана