【发布时间】:2023-03-03 23:21:01
【问题描述】:
我正在尝试部署一个 Azure 函数,该函数的压缩内容已放置在另一个订阅和资源组的 blob 中。函数应用已部署,但其下没有函数,MSDeploy 失败并超时 -
"provisioningOperation": "Create",
"provisioningState": "Failed",
"timestamp": "2021-07-23T15:10:45.9602877Z",
"duration": "PT2H11.3363166S",
"serviceRequestId": "17787274-8592-465b-a11e-10aada76286e",
"statusCode": "RequestTimeout",
"statusMessage": {
"error": {
"code": "ResourceDeploymentFailure",
"message": "The resource provision operation did not complete within the allowed timeout period."
}
},
"targetResource": {
"id": "/subscriptions/<sub-id>/resourceGroups/rg-7ND96/providers/Microsoft.Web/sites/FnAppubjba74tmczo4/Extensions/MSDeploy",
"resourceName": "FnAppubjba74tmczo4/MSDeploy",
"resourceType": "Microsoft.Web/sites/Extensions"
我假设这是因为 MSDeploy 无法访问 blob 中的 zip 文件。我没有提供任何明确的访问权限,我无法弄清楚如何做到这一点。下面是我的函数应用的 ARM 模板 -
{
"type": "Microsoft.Web/sites",
"apiVersion": "2020-06-01",
"name": "[variables('functionAppName')]",
"location": "[parameters('location')]",
"kind": "functionapp",
"properties": {
"name": "[variables('functionAppName')]",
"clientAffinityEnabled": false
},
"dependsOn": [
"[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]",
"[resourceId('Microsoft.Insights/components', variables('appInsightsName'))]"
],
"resources": [
{
"apiVersion": "2018-11-01",
"name": "appsettings",
"type": "config",
"dependsOn": [
"[resourceId('Microsoft.Web/sites', variables('functionAppName'))]",
"[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]",
"[resourceId('Microsoft.Insights/components', variables('appInsightsName'))]"
],
"properties": {
"AzureWebJobsStorage": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value)]",
"FUNCTIONS_EXTENSION_VERSION": "~3",
"FUNCTIONS_WORKER_RUNTIME": "dotnet",
"WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value)]",
"FileStorageAccountConnectionString": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';EndpointSuffix=', environment().suffixes.storage, ';AccountKey=',listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2019-06-01').keys[0].value)]",
"FileShareName": "[variables('fileShareName')]",
"APPINSIGHTS_INSTRUMENTATIONKEY": "[reference(resourceId('microsoft.insights/components/', variables('appInsightsName')), '2015-05-01').InstrumentationKey]"
}
},
{
"name": "MSDeploy",
"type": "Extensions",
"apiVersion": "2018-11-01",
"dependsOn": [
"[resourceId('Microsoft.Web/Sites', variables('functionAppName'))]"
],
"properties": {
"packageUri": "https://storage-name.blob.core.windows.net/Function.zip",
"appOffline": true
}
}
]
}
我能否在 MSDeploy 资源运行之前使用 ARM 模板中的托管标识动态地为函数应用提供对 blob 的访问权限?如果没有,我可以在 ARM 模板中生成一个 SAS 令牌以供访问吗?
UPADTE - 我在 ..\home\LogFiles\SiteExtensions\MSDeploy - appManagerLog.xml -
中检查了已部署函数应用程序中的日志<?xml version="1.0" encoding="utf-8"?>
<entries>
<entry time="2021-07-23T15:13:08.5448175+00:00" type="Message">
<message>Downloading package path 'Function.zip' from blob 'https://storage-name.blob.core.windows.net'</message>
</entry>
<entry time="2021-07-23T15:13:09.0604383+00:00" type="Message">
<message>No parameters were populated.</message>
</entry>
<entry time="2021-07-23T15:13:09.0604383+00:00" type="Message">
<message>AppOffline enabled</message>
</entry>
<entry time="2021-07-23T15:13:09.0604383+00:00" type="Message">
<message>Calling SyncTo() on package.</message>
</entry>
<entry time="2021-07-23T15:13:09.3104411+00:00" type="Message">
<message>Adding file (.\FunctionApp.csproj).</message>
</entry>
<entry time="2021-07-23T15:13:09.3104411+00:00" type="Message">
<message>Adding file (.\FunctionApp.csproj).</message>
</entry>
<entry time="2021-07-23T15:13:09.3729946+00:00" type="Message">
<message>Deleting file (.\host.json).</message>
</entry>
<entry time="2021-07-23T15:13:09.3729946+00:00" type="Message">
<message>Deleting file (.\host.json).</message>
</entry>
<entry time="2021-07-23T15:13:09.4199523+00:00" type="Message">
<message>Adding file (.\local.settings.json).</message>
</entry>
<entry time="2021-07-23T15:13:09.4199523+00:00" type="Message">
<message>Adding file (.\local.settings.json).</message>
</entry>
<entry time="2021-07-23T15:13:09.4823395+00:00" type="Message">
<message>Adding directory (.\Models).</message>
</entry>
<entry time="2021-07-23T15:13:09.4823395+00:00" type="Message">
<message>Adding directory (.\Models).</message>
</entry>
<entry time="2021-07-23T15:13:09.529223+00:00" type="Message">
<message>Adding file (.\Models\RequestModel.cs).</message>
</entry>
<entry time="2021-07-23T15:13:09.529223+00:00" type="Message">
<message>Adding file (.\Models\RequestModel.cs).</message>
</entry>
<entry time="2021-07-23T15:13:09.5917233+00:00" type="Message">
<message>Adding file (.\Models\State.cs).</message>
</entry>
<entry time="2021-07-23T15:13:09.5917233+00:00" type="Message">
<message>Adding file (.\Models\State.cs).</message>
</entry>
<entry time="2021-07-23T15:13:09.654252+00:00" type="Message">
<message>Adding file (.\Models\StateInfo.cs).</message>
</entry>
<entry time="2021-07-23T15:13:09.654252+00:00" type="Message">
<message>Adding file (.\Models\StateInfo.cs).</message>
</entry>
<entry time="2021-07-23T15:13:09.716655+00:00" type="Message">
<message>Adding file (.\ResponseFunction.cs).</message>
</entry>
<entry time="2021-07-23T15:13:09.716655+00:00" type="Message">
<message>Adding file (.\ResponseFunction.cs).</message>
</entry>
<entry time="2021-07-23T15:13:09.8729031+00:00" type="Message">
<message>Total Changes: 8 (7 added, 1 deleted, 0 updated, 0 parameters changed, 7989 bytes copied)</message>
</entry>
<entry time="2021-07-23T15:13:09.8729031+00:00" type="Message">
<message>[Information] [user: F8C3B4564BD880EEFBE19EBA84667977B183FC6B] [324886c5-3416-4866-b8b4-5c3a2ed83394] WebDeploy operation complete. Performing post-deployment operations.</message>
</entry>
<entry time="2021-07-23T15:13:10.6130904+00:00" type="Message">
<message>[Verbose] [user: F8C3B4564BD880EEFBE19EBA84667977B183FC6B] Begin HttpPost https://adobefnappubjba74tmczo4.azurewebsites.net/admin/host/synctriggers, x-ms-request-id: 324886c5-3416-4866-b8b4-5c3a2ed83394</message>
</entry>
<entry time="2021-07-23T15:16:47.9939772+00:00" type="Message">
<message>Downloading package path 'Function.zip' from blob 'https://storage-name.blob.core.windows.net'</message>
</entry>
<entry time="2021-07-23T15:16:48.0721032+00:00" type="Message">
<message>No parameters were populated.</message>
</entry>
<entry time="2021-07-23T15:16:48.0721032+00:00" type="Message">
<message>AppOffline enabled</message>
</entry>
<entry time="2021-07-23T15:16:48.0721032+00:00" type="Message">
<message>Calling SyncTo() on package.</message>
</entry>
<entry time="2021-07-23T15:16:48.1502509+00:00" type="Message">
<message>Deleting file (.\host.json).</message>
</entry>
<entry time="2021-07-23T15:16:48.1502509+00:00" type="Message">
<message>Deleting file (.\host.json).</message>
</entry>
<entry time="2021-07-23T15:16:48.2596268+00:00" type="Message">
<message>Total Changes: 1 (0 added, 1 deleted, 0 updated, 0 parameters changed, 0 bytes copied)</message>
</entry>
<entry time="2021-07-23T15:16:48.2596268+00:00" type="Message">
<message>[Information] [user: F8C3B4564BD880EEFBE19EBA84667977B183FC6B] [ae7d2678-ec79-476b-8e72-e3a4e4cc0d70] WebDeploy operation complete. Performing post-deployment operations.</message>
</entry>
<entry time="2021-07-23T15:16:48.3221254+00:00" type="Message">
<message>[Verbose] [user: F8C3B4564BD880EEFBE19EBA84667977B183FC6B] Begin HttpPost https://adobefnappubjba74tmczo4.azurewebsites.net/admin/host/synctriggers, x-ms-request-id: ae7d2678-ec79-476b-8e72-e3a4e4cc0d70</message>
</entry>
<entry time="2021-07-23T15:21:42.6541756Z" type="Message">
<message>Downloading package path 'Function.zip' from blob 'https://storage-name.blob.core.windows.net'</message>
</entry>
<entry time="2021-07-23T15:21:42.7318456Z" type="Message">
<message>No parameters were populated.</message>
</entry>
<entry time="2021-07-23T15:21:42.7318456Z" type="Message">
<message>AppOffline enabled</message>
</entry>
<entry time="2021-07-23T15:21:42.7318456Z" type="Message">
<message>Calling SyncTo() on package.</message>
</entry>
<entry time="2021-07-23T15:21:42.8099044Z" type="Message">
<message>Deleting file (.\host.json).</message>
</entry>
<entry time="2021-07-23T15:21:42.8099044Z" type="Message">
<message>Deleting file (.\host.json).</message>
</entry>
<entry time="2021-07-23T15:21:42.8880416Z" type="Message">
<message>Total Changes: 1 (0 added, 1 deleted, 0 updated, 0 parameters changed, 0 bytes copied)</message>
</entry>
<entry time="2021-07-23T15:21:42.8880416Z" type="Message">
<message>[Information] [user: F8C3B4564BD880EEFBE19EBA84667977B183FC6B] [6b7c0ba0-8504-4525-9f99-a5e7d787693f] WebDeploy operation complete. Performing post-deployment operations.</message>
</entry>
<entry time="2021-07-23T15:21:42.9505549Z" type="Message">
<message>[Verbose] [user: F8C3B4564BD880EEFBE19EBA84667977B183FC6B] Begin HttpPost https://adobefnappubjba74tmczo4.azurewebsites.net/admin/host/synctriggers, x-ms-request-id: 6b7c0ba0-8504-4525-9f99-a5e7d787693f</message>
</entry>
</entries>
从日志看来,MSDeploy 确实有权访问 blob,因为正在读取所有文件夹。 但是,我的部署失败,当我转到已部署函数应用的 Azure 门户时,它下面没有任何函数。 我在这里遗漏了什么吗?
【问题讨论】:
-
嗨@kruti Joshi,您用于部署的邮政编码有多大?
-
大小只有1.3Mb。
-
您可以尝试在此推文@AzureSupport...
标签: azure-functions azure-blob-storage azure-resource-manager msdeploy