Получение следующей ошибки в приложении-функции на портале Azure: Неверное имя пользователя или пароль: C:\host\LogFiles\Application\Function\Host.
Мы создали функциональное приложение, которое входило в план потребления, но переключили его на выделенный хост — P3V2, чтобы использовать аутентификацию на основе MSI с учетной записью хранения. Мы удалили переменные AzureWebJobsStorage, WEBSITE_CONTENTSHARE и WEBSITE_CONTENTAZUREFILECONNECTIONSTRING и вместо этого добавили AzureWebJobsStorage__accountName, содержащее имя учетной записи хранения. Мы предоставили следующие разрешения в учетной записи хранения:
И получаю следующую ошибку:
Что мне здесь не хватает?
Вместо того, чтобы вручную вносить все изменения, я внес изменения в артефакты (шаблоны ARM) и снова развернул все ресурсы, после чего эта проблема исчезла, но возникла другая проблема.
Мы развернули следующий файл бицепса для функции Azure:
param functionAppName string
@description('Packaged build')
param servicePackageLink string = ''
@description('App service hosting plan id')
param hostingPlanId string
@description('Allows user to target a region other than the resource group region.')
param location string = resourceGroup().location
@description('Additional configs to be set in the function enviroment variable')
param configs array = []
param storageAccountName string
param storageAccountId string
@secure()
param appInsightsInstrumentationKey string
// Service Configurations
// -----------------------------------------------------------------------------------------------
var defaultAzureFunctionsConfigs = [
{
name: 'APPINSIGHTS_INSTRUMENTATIONKEY'
value: appInsightsInstrumentationKey
}
{
name: 'AzureWebJobsStorage__accountName'
value: '${storageAccountName}'
}
{
name: 'FUNCTIONS_EXTENSION_VERSION'
value: '~4'
}
{
name: 'FUNCTIONS_WORKER_RUNTIME'
value: 'dotnet'
}
{
name: 'WEBSITE_RUN_FROM_PACKAGE'
value: '0'
}
{
name: 'WEBSITE_FIRST_PARTY_ID'
value: 'AntMDS'
}
{
name: 'WEBSITE_LOAD_USER_PROFILE'
value: '1'
}
// WEBSITE_CONTENTSHARE will also be auto-generated - https://docs.microsoft.com/en-us/azure/azure-functions/functions-app-settings#website_contentshare
// WEBSITE_RUN_FROM_PACKAGE will be set to 1 by func azure functionapp publish
]
// Resources
// -----------------------------------------------------------------------------------------------
resource functionApp 'Microsoft.Web/sites@2020-06-01' = {
name: functionAppName
location: location
kind: 'functionapp'
identity: {
type: 'SystemAssigned'
}
properties: {
httpsOnly: true
serverFarmId: hostingPlanId
clientAffinityEnabled: true
siteConfig: {
alwaysOn: false
appSettings: concat(defaultAzureFunctionsConfigs, configs)
minTlsVersion: '1.2'
}
}
}
resource zipDeploy 'Microsoft.Web/sites/extensions@2022-03-01' = {
parent: functionApp
name: 'MSDeploy'
properties: {
packageUri: servicePackageLink
appOffline: true
}
}
// Outputs
// -----------------------------------------------------------------------------------------------
output ResourceId string = functionApp.id
output FunctionAppName string = functionApp.name
output PrincipalId string = functionApp.identity.principalId
Используемый план обслуживания — P3V2. Развертывание происходит успешно, но приложение-функция не запускается.
На портале Azure выдается следующая ошибка:
Конфигурация для функции Azure:
В плане обслуживания выделенных приложений WEBSITE_CONTENTSHARE
, WEBSITE_CONTENTAZUREFILECONNECTIONSTRING
не требуется.
В этом параметре приложения используются файлы Azure, которые не поддерживают управляемое удостоверение, как указано в этом MSDos.
AzureWebJobsStorage
можно использовать с управляемой идентификацией.
AzureWebJobsStorage__blobServiceUri
, если вы используете URL-адрес учетной записи хранения https://<accountName>.blob.core.windows.net
.AzureWebJobsStorage__accountName
.OUTPUT
:Как вы можете видеть, мой триггер таймера, для выполнения которого требуется значение AzureWebJobsStorage
, работает отлично.
@ASW просто подтверждаю: включили ли вы идентификацию, управляемую системой, в своей функции? и назначили роли этому управляемому удостоверению в учетной записи хранения? сообщение об ошибке предполагает, что проблема связана с доступом.
Да, я включил его. Я также обновил вышеуказанную проблему с учетом достигнутого мною прогресса.
@ASW поделитесь подробностями вашего кода и переменных среды
Я обновил вышеуказанную проблему с помощью кода и переменных.
@ASW вы развертываете свою функцию в формате zip, поэтому вам нужно установить WEBSITE_RUN_FROM_PACKAGE
на 1
, чтобы загрузить функцию на портал.
Давайте продолжим обсуждение в чате.
Ошибка была устранена после обновления версии DurableTask до >= 2.7.0.
Я выполнил те же действия, но все еще получаю вышеупомянутые ошибки.