Я занимаюсь разработкой приложения-функции Azure в VS 2017 для C # / csproj, нацеленного на среду выполнения функций Azure 2.x и создающего контейнер Docker (Linux) для развертывания.Я знаю, что я нахожусь на бета территории, но я не нашел ничего, что указывало бы на проблему, с которой я столкнулся, это известное ограничение системы
Пошаговое руководство по MS для справки: https://docs.microsoft.com/en-us/azure/azure-functions/functions-create-function-linux-custom-image
Источник построен на VSTS и использует CLI Azure для создания и отправки образа докера в одну команду:
az acr build --registry <myacrname> --image <myimagename>:$(Build.BuildNumber) --image <myimagename>:latest $(Build.Repository.LocalPath)/<mybuildoutputfolder>
Это работает.В реестре контейнеров Azure перечислены мой новый репозиторий и обновленные теги версий, как и ожидалось.
Далее я хочу создать новое приложение-функцию Azure, которое будет работать поверх службы приложений Azure (Linux) и будет принимать мой док-контейнер,
az functionapp create --name <myazfuncapp> --storage-account <azfuncappstoracct> --resource-group <myazfuncapprezgrp> --plan <mylinuxappsvcplan> --deployment-container-image-name <myacrname>.azurecr.io/<myimagename>:1.0.0.0-alpha
Это работает.Я получаю приложение-функцию, и пока мои методы функций имеют анонимные HTTP-привязки, я могу даже вызвать «GET myazfunctionapp.azurewebsitesnet / api / myfunc01» и получить ответ 200. К сожалению, согласно порталу Azure, в моем приложении функций нет методов.Почему это так?
Это также означает, что для привязок, которые ожидают AuthorizationLevel.Function, я не могу получить / установитьключи авторизации.Приложение функций также не отображается нигде в Azure (например, «Приложения логики», «Управление API» и т. Д.)
Если бы я смог обойти эту точку, моим следующим шагом будет настройка непрерывного развертывания.конвейер в VSTS, чтобы сделать такой вызов в интерфейсе командной строки Azure:
az webapp config container set --name <myfuncapp> --resource-group <myfuncapprezgrp> --docker-registry-server-url <myacrname>.azurecr.io --docker-registry-server-password <myacrpass> --docker-registry-server-user <myacruser> --docker-custom-image-name <myacrname>.azurecr.io/myimagename:1.0.0.7-beta
Так что я просто параметризую номер версии сборки из моего связанного артефакта в VSTS, и мы сможем выпустить желаемыйверсия для целевой среды с относительной легкостью.Однако я не убежден, что обновление «--docker-custom-image-name» или иное изменение переменной среды «DOCKER_CUSTOM_IMAGE_NAME» и перезапуск даже действительно работают - кажется, что после «az functionapp create ...» образ контейнераполучает вид блокировки.
Ответ по умолчанию, который распространялся для других проблем с функциями Azure, заключается в проверке того, что для переменной среды "FUNCTIONS_EXTENSION_VERSION" установлено значение "бета".Мое функциональное приложение действительно установлено на бета-версию.Вот мои настройки приложения:
Вот мои настройки приложения функций:
Я не понимаю, странная ошибка HTTP 500, Azure появляется там, когда я перехожу к этим настройкам.Судя по тому, что я могу сказать, любое приложение-функция Azure, кажется, выбрасывает это при загрузке этого экрана, независимо от версии среды выполнения или платформы ОС.