Как развернуть приложение функций Azure, когда план обслуживания находится в другой группе ресурсов - PullRequest
0 голосов
/ 08 июня 2018

У меня есть два разных приложения (A & B) функций Azure, которые используют один и тот же план обслуживания приложений, а не план потребления.Приложение-функция Azure A находится в группе ресурсов 1, а приложение-функция Azure B - в группе ресурсов 2. Если мой план обслуживания приложения находится в группе ресурсов 1, у меня нет проблем с созданием сценария создания приложения-функции Azure A следующим образом:

az functionapp create --resource-group $serverData.ResourceGroupName \
  --plan  $serverData.FunctionAppServicePlanName \
  --name $serverData.FunctionAppName \
  --storage-account $serverData.LrsStorageAccountName 

Однако если я попытаюсь создать приложение-функцию Azure B, приведенная выше команда не будет работать.Он говорит мне, что не может найти план обслуживания приложения.Теперь я МОГУ создать это через портал, но я бы хотела написать его.

Есть ли способ сообщить CLI Azure, что план обслуживания приложения находится в группе ресурсов 1, несмотря на то, что япытаюсь создать приложение-функцию Azure в группе ресурсов 2?

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Документация https://docs.microsoft.com/en-us/cli/azure/functionapp?view=azure-cli-latest#az-functionapp-create гласит следующее относительно параметра - план :

Имя или идентификатор ресурса службы приложения функцииплан ...

Это привело меня к мысли, что можно сообщить идентификатор ресурса (например, / subscription / {Subscription Id} / resourceGroups / {Имя группы ресурсов} / provider / /Microsoft.Web / serverFarms / {Имя плана обслуживания приложения} ) для параметра --plan.

Итак, в соответствии с вашим сценарием я запускаю az functionapp create , передавая идентификатор ресурса плана обслуживания приложения в параметре - план .Кроме того, я добавил опцию - debug , чтобы получить более подробную информацию о выполнении.Найдите последнюю часть вывода команды и сообщения об ошибке ниже:

--- Команда ---

az functionapp create --resource-group "abc" --plan "/subscriptions/{Subscription Id}/resourceGroups/azfuncrg/providers/azfunc" --name "functioappname" --storage-account "/subscriptions/{Subscription Id}/resourceGroups/azfuncrg/providers/Microsoft.Storage/storageAccounts/azfuncstorage"

--- Частичный вывод --

...
msrest.http_logger : Response status: 404
msrest.http_logger : Response headers:
msrest.http_logger :     'Cache-Control': 'no-cache'
msrest.http_logger :     'Pragma': 'no-cache'
msrest.http_logger :     'Content-Type': 'application/json; charset=utf-8'
msrest.http_logger :     'Expires': '-1'
msrest.http_logger :     'x-ms-failure-cause': 'gateway'
msrest.http_logger :     'x-ms-request-id': 'd4ebc73a-a7ca-45b2-bd59-710aeea1faf2'
msrest.http_logger :     'x-ms-correlation-request-id': 'd4ebc73a-a7ca-45b2-bd59-710aeea1faf2'
msrest.http_logger :     'x-ms-routing-request-id': 'WESTUS2:20180608T002628Z:d4ebc73a-a7ca-45b2-bd59-710aeea1faf2'
msrest.http_logger :     'Strict-Transport-Security': 'max-age=31536000; includeSubDomains'
msrest.http_logger :     'X-Content-Type-Options': 'nosniff'
msrest.http_logger :     'Date': 'Fri, 08 Jun 2018 00:26:28 GMT'
msrest.http_logger :     'Content-Length': '139'
msrest.http_logger : Response content:
msrest.http_logger : b'{"error":{"code":"ResourceNotFound","message":"The Resource \'Microsoft.Web/serverFarms/azfunc\' under resource group \'abc\' was not found."}}'
The plan 'azfunc' doesn't exist

Для отладочной информации он ищет план службы приложений (имя которого не было правильно проанализировано) в группе ресурсов, определенной параметром --resource-group.

Я мог что-то упустить, это может быть проблема с документацией и т. Д.

В любом случае я подал следующую проблему, чтобы отследить / уточнить это: https://github.com/Azure/azure-cli/issues/6532

0 голосов
/ 08 июня 2018

Отредактировано для добавления -

Исходя из ответа Эвандро и просматривая исходный код Это ошибка, и она невозможна.

Это потому, что код не анализирует идентификатор ресурса, вместо этого он берет имя приложения и передает переменную --resource-group (я внес исправление для этого)

Единственное решение, которое у вас будет, пока это не будет исправлено, - это создать приложение в той же RG, а затем переместить его туда, куда вы хотите.

Оригинальный ответ

Если вы посмотрите документацию для az functionapp create

для --plan, есть следующее-

Имя или идентификатор ресурса сервисного плана приложения-функции.Используйте 'appservice plan create', чтобы получить его.

Если вы укажете имя, оно ожидает найти его в той же группе ресурсов, если оно не в той же группе ресурсов, которую нужно отправитьполный идентификатор ресурса

как-то так

$ID = $(az appservice plan show --name $name --resource-group $RG | jq '. | .id')

az functionapp create --resource-group $serverData.ResourceGroupName \
  --plan  $ID \
  --name $serverData.FunctionAppName \
  --storage-account $serverData.LrsStorageAccountName
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...