Ошибка: контекст Azure PowerShell не был инициализирован должным образом. Пожалуйста, импортируйте модуль и повторите попытку

#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. Это тоже вызвано локально, в то время как в развернутой версии написано, что команда не распознана