Azure功能应用程序-交换部署插槽卡住,然后完全崩溃

hkmswyz6  于 2023-01-05  发布在  其他
关注(0)|答案(1)|浏览(138)

最近我的函数应用程序停止了插槽交换,它们几个月来一直运行良好,但突然之间它们都停止了交换,花了很长时间然后崩溃。我用相同的脚本重新创建了函数应用程序,并复制了问题,但仍然无法修复。
我是否正在设置阻止插槽切换的内容?
下面是我正在使用的基本构建脚本。我可以运行这个脚本,但当试图在Azure中交换插槽时,它会冻结,然后崩溃,并显示一个模糊的错误消息:

# Azure Login
az login

# Set deployment Environment
$environment = "stage"

# Resource Group Variables
$subscriptionId = ""
$domain = "test4"
$resourceGroup = "xx-platform-$domain-$environment"
$region = "northEurope"

# Functions app variables
$storageName = "xxfn$domain$environment" # must be less than 24 chars and all lower case
$functionAppDeploymentSlotName = "test"
$functionAppName = "xx-platform-$domain-fn-$environment"
$functionAppEnvironment = "AZURE_FUNCTIONS_ENVIRONMENT=Development"
$websiteRunFromPackage = "WEBSITE_RUN_FROM_PACKAGE=1"

#########################################################################################################################################################################
## Resource Group
Write-output "Creating resource group";

# Set subscription
az account set --subscription $subscriptionId

# Create resource group
az group create -l $region -n $resourceGroup  

#########################################################################################################################################################################
## Functions App
Write-output "Creating Functions App";

# Create storage account
az storage account create --name $storageName --location $region --resource-group $resourceGroup --sku Standard_LRS

# Create functions app - using consumption plan
az functionapp create --name $functionAppName --storage-account $storageName --consumption-plan-location northEurope --resource-group $resourceGroup --functions-version 4

# Set functions app configuration settings

# Environment
az functionapp config appsettings set --name $functionAppName --resource-group $resourceGroup --settings $functionAppEnvironment 
# WEBSITE_RUN_FROM_PACKAGE 
az functionapp config appsettings set --name $functionAppName --resource-group $resourceGroup --settings $websiteRunFromPackage 
# SET DOT NET FRAMEWORK ERSION
az functionapp config set --net-framework-version v6.0 -g $resourceGroup -n $functionAppName

# Create functions app deployment slot
az functionapp deployment slot create --name $functionAppName  --resource-group  $resourceGroup --slot $functionAppDeploymentSlotName
t98cgbkg

t98cgbkg1#

我修改了您的脚本,将变量值直接初始化为cmdlet:

# Azure Login
az login
az account set --subscription "<Ur_Azure_Subscription_Id>"

# Function App Create
az functionapp create --name dt-platform-fn-stage --storage-account dtfnstageenvironment --consumption-plan-location northEurope --resource-group HariTestRG --runtime dotnet --functions-version 4

# Environment
az functionapp config appsettings set --name dt-platform-fn-stage --resource-group HariTestRG --settings AZURE_FUNCTIONS_ENVIRONMENT=Development

# WEBSITE_RUN_FROM_PACKAGE
az functionapp config appsettings set --name dt-platform-fn-stage --resource-group HariTestRG --settings WEBSITE_RUN_FROM_PACKAGE=1

# SET DOT NET FRAMEWORK ERSION
az functionapp config set --net-framework-version v6.0 -g HariTestRG -n dt-platform-fn-stage

# Create functions app deployment slot

az functionapp deployment slot create --name dt-platform-fn-stage --resource-group HariTestRG --slot test

使用以下给定MS文档中给出的cmdlet创建了Http触发器函数。
对于连续部署,需要配置此应用设置:

az functionapp config appsettings set --name dt-platform-fn-stage --resource-group HariTestRG --settings "SCM_DO_BUILD_DURING_DEPLOYMENT=true"

使用az cli cmdlet将函数部署到Azure函数,az cli cmdlet在我的变通办法one中给出。
默认情况下,将禁用插槽上的自动交换:

在插槽交换过程中,它工作正常,请确保您遵循了此MS Doc中提到的注意事项,此MS Doc还提供了用于管理插槽(如创建、列出、删除、交换和自动交换配置)的**az cli**cmdlet列表。
以上Azure CLI命令取自此MS Doc参考。

相关问题