我有两个不同的Azure功能应用程序(一个
az functionapp create --resource-group $serverData.ResourceGroupName \
--plan $serverData.FunctionAppServicePlanName \
--name $serverData.FunctionAppName \
--storage-account $serverData.LrsStorageAccountName
但是,如果我尝试创建 Azure 函数应用 B,则上述命令将不起作用。它告诉我它找不到应用服务计划。现在,我可以通过门户创建它,但我想编写脚本。
尽管我试图在资源组2中创建Azure功能应用程序,但是否有方法告诉Azure CLI应用程序服务计划在资源组1中?
编辑以添加-
根据Evandro的回答,查看源代码,这是一个错误,而且是不可能的。
这是因为代码不解析资源 ID,而是采用应用名称并传递 --resource-group 变量(我已为此提交了修复程序)
在这个问题得到解决之前,唯一的解决方案是在同一个RG中创建一个应用程序,然后将它移动到您想要的位置。
原始答案
如果您查看az functionapp create的文档
对于--plan
有以下内容-
功能应用服务计划的名称或资源id。请使用“appservice计划创建”来获取一个。
如果您指定一个名称,它希望在同一个资源组中找到它,如果它不在同一个资源组中,您需要发送完整的资源ID
类似这样的东西
$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
文档https://docs.microsoft.com/en-us/cli/azure/functionapp?view=azure-cli-latest#az-functionapp-create就--plan参数声明如下:
函数应用服务计划的名称或资源ID...
这使我相信也可以将资源 ID(例如 /subscriptions/{Subscription Id}/resourceGroups/{Resource Group Name}/providers/Microsoft.Web/serverFarms/{App Service Plan Name})通知给 --plan 参数。
因此,根据你的方案,我运行 az 函数应用创建,在 --plan 参数中传递应用服务计划资源 ID。此外,我还添加了 --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
在新Azure管理门户上创建新资源组或应用程序服务计划/位置时,我遇到以下错误。 提交部署请求出错。来自基础API的其他详细信息可能会有所帮助:所提供的位置“印度中部”不允许订阅。允许的区域列表是“东亚、东南亚、东方、东方2、西方、北方、南方、南方、北方、西方、日本东部、日本西部、巴西南部”。请联系支持部门以更改支持的区域。 这是我尝试的时候 发生了什么?是否允许选择印度地区创建新的资源组或应用程
我有三个azure功能和两个webapp,我希望所有应用都在同一个应用服务计划中,但azure manual和maven都不允许添加同一个应用服务计划。 在azure中,是否可以在同一应用程序服务计划中添加web和功能应用程序?
我认为Azure的优点之一是,我可以根据我希望服务何时可用来打开和关闭服务。 然而,我看不到如何暂停我的应用程序服务计划。有可能吗? 我想使用S1层,这样我就可以使用它提供的东西。然而,当我不使用它时,我希望能够暂停成本积累。 我从应用程序服务定价帮助中看到,即使某个应用程序处于停止状态,仍将为其计费。 然而,这种联系也清楚地表明,我只为我使用的东西付费。那么这是如何运作的呢?
我已经构建了一个Web应用程序,该应用程序仅使用。它查看环境变量 以决定要侦听的端口。现在我想用一个Windows应用服务计划将其部署到天主,这在蔚蓝中被称为“Java SE部署”。 在Linux应用程序服务计划中,我可以简单地部署应用程序。jar文件(使用vs-code-plugin、zipdeploy或其他工具),设置环境变量PORT,一切正常。 对于Windows应用程序服务计划,尝试访问该
我有两个应用程序服务计划在同一地区、同一资源组和同一订阅中运行。我在应用程序服务计划a中有一个web应用程序,我想将其移动到应用程序服务计划b。单击“更改应用程序服务计划”时,门户会告诉我“未找到应用程序服务计划”。 应用程序服务计划a正在标准上运行:1小。应用程序服务计划b正在标准上运行:2大。将应用程序服务计划a更改为标准:1大,在尝试移动应用程序服务时不会显示应用程序服务计划b。 这里有什么
我正在尝试更改其中一个Azure应用服务的Azure应用服务计划,以下是我得到的。它无法搜索我刚刚创建的应用服务计划。 Azure应用服务的当前应用服务计划和我想要更改为存在于同一位置和同一资源组中的计划。这两个计划的唯一区别是定价层。现有计划恰好在“标准:2小”中,我刚刚创建的计划在“标准:1小”中。对于这两个计划,我都选择定价层为“标准1”,因此不确定这是如何在定价层名称中添加数字1和2的。