Настройте функцию Azure из Powershell - PullRequest
1 голос
/ 03 апреля 2019

В Azure CLI есть az functionapp , но такого эквивалента нет в Powershell AzureRM-библиотека или Az-библиотека .

Используя сырые ресурсы 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?Я понятия не имею.Сгенерированный Azure Portal бесполезен.
  • Azure Portal: не очень удобный подход для настройки среды из конвейера выпуска DevOps Azure, но он создаст полностью работающее приложение функций.

Вопрос в том, как создать приложение Function из скрипта Powershell?

Ответы [ 2 ]

2 голосов
/ 03 апреля 2019

Я делаю то же самое, чтобы создать среду разработки для песочницы.

Функция обеспечения приложений - это пробел в модуле 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
0 голосов
/ 03 апреля 2019

Лучший способ сделать это из PowerShell - использовать шаблон ARM, а не пытаться создавать каждый ресурс по отдельности. Вы можете найти пример шаблона здесь . Он также подключает приложение к github, но вы можете пропустить эту часть, если вы просто хотите пустое приложение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...