Azure Функция (PowerShell) - PullRequest
       6

Azure Функция (PowerShell)

2 голосов
/ 07 января 2020

После установки azure -core-functions v3 и переноса проекта в v3 проекты Powershell начали давать сбой. Суженная проблема заключалась в том, что модули Az, загруженные как зависимости, больше не распознавались во время выполнения. Дальнейшее тестирование выявило настройку управляемых зависимостей в узле функций. json Файл правильно загружает модули Az, так как удаление папки data / ManagedDependencies через Kudu и перезапуск приложения-функции восстанавливает модули Az, так что require.psd1 работает - Powershell just не могу найти загруженные модули.

После возврата к v2 я нахожу ту же проблему в v2. Мне удалось временно обойти проблему, добавив необходимые модули AZ в папку модулей в проекте функции Azure. Примечание: Dev и Deploy в настоящее время используют VS Code.

Как Powershell ссылается на управляемые зависимости? Каковы следующие пути решения проблем со ссылками?

Хост. json содержимое:

 "version": "2.0",
 "managedDependency": {
 "enabled": true
  }
}

needs.psd1 содержимое:

# This file enables modules to be automatically managed by the Functions service.
# See https://aka.ms/functionsmanageddependency for additional information.
#
@{
 'Az' = '3.*'
}

Функция Конфигурация приложения:

[
  {
    "name": "APPINSIGHTS_INSTRUMENTATIONKEY",
    "value": "32178670-77eb-40aa-afbc-ca17946f0350",
    "slotSetting": false
  },
  {
    "name": "AzureWebJobsStorage",
    "value": "DefaultEndpointsProtocol=https;AccountName=REDACTED;EndpointSuffix=core.windows.net",
    "slotSetting": false
  },
  {
    "name": "FUNCTIONS_EXTENSION_VERSION",
    "value": "~2",
    "slotSetting": false
  },
  {
    "name": "FUNCTIONS_WORKER_RUNTIME",
    "value": "powershell",
    "slotSetting": false
  },
  {
    "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING",
    "value": "DefaultEndpointsProtocol=REDACTED;EndpointSuffix=core.windows.net",
    "slotSetting": false
  },
  {
    "name": "WEBSITE_CONTENTSHARE",
    "value": "rightrezmonitor7d0758",
    "slotSetting": false
  },
  {
    "name": "WEBSITE_NODE_DEFAULT_VERSION",
    "value": "~10",
    "slotSetting": false
  },
  {
    "name": "WEBSITE_RUN_FROM_PACKAGE",
    "value": "1",
    "slotSetting": false
  }
]

Каталог data / ManagedDependencies / 200103210646931.r в Куду содержит папки для AZ и AZ. Модульные папки

1 Ответ

0 голосов
/ 23 января 2020

вы все еще видите эту проблему? Есть ли у вашего функционального приложения зависимость от Net Core 2.2?

У меня есть функциональное приложение PowerShell, которое использует командлет Get-AzKeyVaultSecret для получения секретов из KeyVault. Это функциональное приложение изначально было создано для работы на V2. Однако я вручную внес изменение, чтобы переместить его в V3, и все продолжало работать должным образом.

Чтобы ответить на ваши вопросы:

Как Powershell ссылается на управляемые зависимости?

A: Путь управляемых зависимостей, который указывает на учетную запись хранения, добавляется к $env:PSModulePath при первом вызове.

Каковы следующие пути решения проблем со ссылками?

A: Вы можете попробовать принудительно переустановить зависимости приложения функции. Для этого go перейдите на Портал и выберите приложение-функцию. Go до Обзор и остановка функции приложения. После этого выберите Функции платформы и go для Куду, как показано ниже.

enter image description here

Однажды в Куду, go для отладки консоли и выберите PowerShell, как показано ниже.

enter image description here

Оттуда перейдите к D:\home\data\ManagedDependencies. После запуска Remove-Item * -Recurse -Force, например,

cd D:\home\data\ManagedDependencies
Remove-Item * -Recurse -Force

Далее запустите приложение функции, и при первом вызове функции будут загружены зависимости, и путь будет добавлен к $env:PSModulePath.

Если после переноса приложения на V3 проблемы все еще возникают, откройте вопрос по адресу https://github.com/Azure/azure-functions-powershell-worker/issues, укажите имя своего функционального приложения, и я посмотрю.

Приветствия,

Франциско

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...