#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 для всех заинтересованных — они имеют ту же структуру, что и другие наши функции (которые отлично развертываются и отображаются в представлении функций на портале):
Комментарии:
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
папку.