function - 从 Powershell 设置 Azure 函数
问题描述
在 Azure CLI 中,有az functionapp ,但在 Powershell AzureRM-library和Az-library中找不到这样的等效项。
使用原始 Azure 资源,我尝试过这样的事情来在我的应用程序服务计划中创建一个函数应用程序:
New-AzResource -ResourceType 'Microsoft.Web/Sites' `
-ResourceGroupName "MyRgName" `
-Location "westeurope" `
-ResourceName "MyFunctionName" `
-kind 'functionapp' `
-Properties @{ServerFarmId="abc-123"; alwaysOn=$True;} `
-ApiVersion '2018-11-01' `
-Force;
它几乎可以工作,但不能创建 100% 工作的功能应用程序。Azure 门户会吐出大量错误和警告,例如缺少主机密钥。
备择方案:
- ARM 模板。将什么放入模板以成功创建 Azure Function?我不知道。Azure Portal 生成的那个是没用的。
- Azure 门户:从 Azure DevOps 发布管道进行环境设置并不是很方便,但它会创建一个完全正常工作的函数应用程序。
问题是:如何从 Powershell 脚本创建函数应用程序?
解决方案
我正在做同样的事情来创建一个开发沙盒环境。
预配功能应用程序是 Az Powershell 模块中的一个缺口,但它似乎是可能的。
我按照此处的步骤https://clouddeveloper.space/2017/10/26/deploy-azure-function-using-powershell/配置了我的函数应用程序,但将其更改为使用现有的应用程序服务计划而不是消费计划。
$AppServicePlan = "abc-123"
$AppInsightsKey = "your key here"
$ResourceGroup = "MyRgName"
$Location = "westeurope"
$FunctionAppName = "MyFunctionName"
$AzFunctionAppStorageAccountName = "MyFunctionAppStorageAccountName"
$FunctionAppSettings = @{
ServerFarmId="/subscriptions/<GUID>/resourceGroups/$ResourceGroup/providers/Microsoft.Web/serverfarms/$AppServicePlan";
alwaysOn=$True;
}
# Provision the function app service
New-AzResource -ResourceGroupName $ResourceGroup -Location $Location -ResourceName $FunctionAppName -ResourceType "microsoft.web/sites" -Kind "functionapp" -Properties $FunctionAppSettings -Force | Out-Null
$AzFunctionAppStorageAccountKey = Get-AzStorageAccountKey -ResourceGroupName $ResourceGroup -AccountName $AzFunctionAppStorageAccountName | Where-Object { $_.KeyName -eq "Key1" } | Select-Object Value
$AzFunctionAppStorageAccountConnectionString = "DefaultEndpointsProtocol=https;AccountName=$AzFunctionAppStorageAccountName;AccountKey=$($AzFunctionAppStorageAccountKey.Value)"
$AzFunctionAppSettings = @{
APPINSIGHTS_INSTRUMENTATIONKEY = $AppInsightsKey;
AzureWebJobsDashboard = $AzFunctionAppStorageAccountConnectionString;
AzureWebJobsStorage = $AzFunctionAppStorageAccountConnectionString;
FUNCTIONS_EXTENSION_VERSION = "~2";
FUNCTIONS_WORKER_RUNTIME = "dotnet";
}
# Set the correct application settings on the function app
Set-AzWebApp -Name $FunctionAppName -ResourceGroupName $ResourceGroup -AppSettings $AzFunctionAppSettings | Out-Null
推荐阅读
- selenium - selenium.common.exceptions.WebDriverException:消息:chrome 无法访问(会话信息:chrome=88.0.4324.150)
- google-cloud-platform - 如何在 GCP 的操作日志中公开完整的信息?
- javascript - BootstrapVue 表中的自定义列
- java - 拒绝删除的 Java 文件权限
- python - 在列表中查找下一个最接近的数字
- c++ - How to delete a specific line/string from a text file (fstream/c++)
- r - 如何将矩阵的最后一行附加到R中的空矩阵?
- python - 姜戈。我如何每 5 秒运行一次函数并更新页面
- node.js - node.js 应用程序在 CPanel 上部署后返回“无法获取 /”
- swiftui - SwiftUI 本地化中的多个占位符