«развертывание az functionapp» сообщает об успешном завершении, но представление функций в Azure пустое

#azure #azure-functions #azure-cli

#azure #azure-функции #azure-cli

Вопрос:

У меня есть 1 функциональное приложение, которое по какой-то причине не хочет развертываться (все 30 других функциональных приложений, которыми я управляю, отлично развертываются с помощью того же метода ZipDeploy).

После выполнения следующей команды AzureCLI для развертывания в существующем функциональном приложении на основе потребления:

 az functionapp deployment source config-zip --resource-group $resourceGroupName --name $functionAppName --src $artifactPath
  

Это возвращает результат успешного развертывания (полный результат JSON см. В нижней части вопроса), однако при просмотре блейка функций для приложения-функции это пустое:

раздел функций на портале (пустой)

Мой вопрос заключается в следующем: что я здесь делаю не так? Почему развертывание функции через AzureCLI завершается неудачей?

Немного предыстории:

  • Функции, которые мы используем, предварительно скомпилированы на C#
  • Функциональные приложения создаются Terraform
  • Эта функция является функцией запуска служебной шины, которая имеет тот же host.json / functions.json, что и другие успешные развертывания функций

Вещи, которые я пробовал до сих пор:

  • Развернуто с помощью маршрута «Публикация» в Visual Studio 2019 в качестве теста. Это работает успешно.
  • Запуск команды AzureCLI локально, тот же результат
  • Проверил структуру кода функции на соответствие предлагаемой структуре папок, это соответствует
  • Сравнил архивированный артефакт, который я развертываю, с другими архивами успешного развертывания. Та же структура, что и у рабочих функций.

Полное ведение журнала с помощью команды AzureCLI: установка SCM_DO_BUILD_DURING_DEPLOYMENT в значение false Ожидание обновления сайта SCM с последними настройками приложения Получение учетных данных сайта scm для развертывания zip Запуск развертывания zip. Выполнение этой операции может занять некоторое время … Конечная точка развертывания ответила кодом состояния 202

Полный ответ JSON от команды AzureCLI:

 active                : True
author                : N/A
author_email          : N/A
complete              : True
deployer              : ZipDeploy
end_time              : 23/09/2020 16:32:28
id                    : 02c6219516244615beca1c126749baa1
is_readonly           : True
is_temp               : False
last_success_end_time : 23/09/2020 16:32:28
log_url               : https://xxxx.scm.azurewebsites.net/api/deployments/latest/log
message               : Created via a push deployment
progress              :
provisioningState     :
received_time         : 23/09/2020 16:31:55
site_name             : xxxx
start_time            : 23/09/2020 16:31:55
status                : 4
status_text           :
url                   : https://xxxx.scm.azurewebsites.net/api/deployments/latest
  

РЕДАКТИРОВАТЬ 1: Вот содержимое папки wwwroot для всех заинтересованных — они имеют ту же структуру, что и другие наши функции (которые отлично развертываются и отображаются в представлении функций на портале):
Содержимое папки wwwroot

Комментарии:

1. Можете ли вы проверить в Kudu, присутствует ли функция или нет?

2. Вы можете перейти к «https://<your-function-app-name>.scm.azurewebsites.net/DebugConsole ‘ -> сайт-> wwwroot, чтобы проверить, что сказал Харшитасингх. И проверьте имя приложения функции в вашей команде.

3. Эй, ребята, да, действительно, все файлы есть — я добавил скриншот к своему первоначальному вопросу, чтобы показать содержимое папки (никаких отличий от других функций, которые мы успешно развернули)

Ответ №1:

После долгого времени мы выяснили причину, по которой приложение функции не было развернуто.

Оказывается, оно развернуто нормально (файлы были развернуты в нужном месте) — просто при запуске произошел сбой во время выполнения функции.

Мы обнаружили использование «builder.Услуги.AddMvc () «вызвал эту проблему: введите описание изображения здесь

Что имеет смысл, учитывая, что функции Azure не являются Mvc. Derp!

Мы удалили эту строку и вуаля, больше никаких проблем.

Ответ №2:

Возможно, я знаю, что не так во время вашего процесса ZipDeploy. Возможно, способ получения вашей zip-папки неверен.

Как я уже сказал, вы можете проверить, правильно ли указано имя приложения функции назначения, и проверить, соответствует ли содержимое https://<functionAppName> .scm.azurewebsites.net/DebugConsole ->сайт-> wwwroot(kudu) правильно.

Правильный шаг ZipDepoly:

1. Выберите параметр публикации, как при развертывании по маршруту «Опубликовать» в Visual Studio 2019

2. Выберите папку для создания файла публикации.

введите описание изображения здесь

3. Сожмите содержимое файла публикации, полученное на последнем шаге. Структура файла публикации такая же, как в документах.

 Publish.zip
 | - bin
 | - host.json
 | - FunctionName
 | | - function.json
  

4. Опубликуйте этот zip-файл своей командой. И содержимое wwwroot должно совпадать с файлом публикации:
введите описание изображения здесь

Комментарии:

1. @Jack S, пожалуйста, дайте мне знать, помогло ли это.

2. Отличное предложение! К сожалению, это не сработало — список функций на портале по-прежнему пуст. В папке wwwroot есть файлы (в структуре, рекомендованной MS), но они все равно были там раньше.

3. Мне интересно, почему у вас есть function_dataplat*.json файл в корневом каталоге, который незнаком с моим. Вы создали папку публикации так же, как и я? Другое предложение — создать новое функциональное приложение и повторить попытку.

4. Это не что-то из нашего решения для приложений функций — я думаю, это то, что использует внутреннее ядро .NET Core. Смотрите здесь: natemcmaster.com/blog/2017/12/21/netcore-primitives/#depsjson

5. Это не имеет смысла, потому что мой файл манифеста зависимостей был включен в bin папку.