簡體   English   中英

部署到具有專用端點的 Azure Web 應用程序

[英]Deploy to an Azure Web App with a private endpoint

我已經配置了一個帶有私有端點的 Azure Web 應用程序,並希望使用 Azure DevOps 部署到它。 I have found this possibility using Azure Blob storage and Azure CLI: https://azure.github.io/AppService/2021/03/01/deploying-to-network-secured-sites-2.html

以下 Azure CLI webapp 部署命令:

az webapp deploy --name $WEBAPP --resource-group $GROUP --type zip --src-url  $ZIP_URL --async false

但是給出了以下 Http 403 錯誤: The web app you have attempted to reach has blocked your access.

我正在使用服務主體登錄。

任何線索我在這里缺少什么?

我遇到了同樣的問題並打開了 Microsoft 支持票。 “az webapp deploy --src-url”有一個問題:它實際上不通過ARM API,而是直接到web-app的scm端點(由於私有端點而被阻止)。 報告了一個錯誤來解決此問題: https ://github.com/Azure/azure-cli/issues/21168

解決方案不是使用 Azure cli 命令“az webapp deploy”,而是直接調用 ARM API,如下所示:

az rest --method PUT --uri https://management.azure.com/subscriptions/${SUBSCRIPTIONID}/resourceGroups/${RESOURCEGROUP}/providers/Microsoft.Web/sites/${WEBAPP}/extensions/onedeploy?api-version=2022-03-01 --body '{"properties": {"type": "zip", "packageUri": ${ARTIFACTURL} }}'

此調用將通過 ARM 進行,不會被您的 Webapp 阻止

使用之前建議的解決方案,我遇到了以下錯誤:

"ERROR: Bad Request({"error":{"code":"BadRequest","message":"System.NullReferenceException: Object reference not set to an instance of an object.\r\n at Kudu.Services.Deployment.PushDeploymentController.<OneDeploy>d__13.MoveNext() in C:\\Kudu Files\\Private\\src\\master\\Kudu.Services\\Deployment\\PushDeploymentController.cs:line 187"}}"

我通過將"packageUri": ${ARTIFACTURL}調整為"packageUri": "'"${ARTIFACTURL}"'"解決了這個問題。

我的完整工作任務如下所示:

- task: AzureCLI@2
        displayName: Azure CLI
        inputs:
          azureSubscription: 'customer a'
          scriptType: bash
          scriptLocation: inlineScript
          inlineScript: |
            EXPIRY=$(date -u -d "$EXPIRY_TIME" '+%Y-%m-%dT%H:%MZ')
            az storage blob upload -f $(Pipeline.Workspace)/**/*.zip --account-name $ACCOUNT -c $CONTAINER
            ZIP_URL=$(az storage blob generate-sas --full-uri --permissions r --expiry $EXPIRY --account-name $ACCOUNT -c $CONTAINER -n s.zip | xargs)
            az rest --method PUT --uri https://management.azure.com/subscriptions/${SUBSCRIPTIONID}/resourceGroups/${GROUP}/providers/Microsoft.Web/sites/${WEBAPP}/extensions/onedeploy?api-version=2022-03-01 --body '{"properties": {"type": "zip", "packageUri": "'"${ZIP_URL}"'" }}'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM