Бицепс: не удалось установить учетную запись хранилища для ресурса веб-приложения

#azure #azure-resource-manager #azure-bicep

Вопрос:

У меня есть некоторый опыт использования Azure CLI, модуля Az и шаблонов ARM… В любом случае, я экспериментирую с проблемами при настройке учетной записи хранения для веб-приложения.

Это источник бицепса (все еще в стадии разработки):

 @allowed([  'dev'  'qta'  'ppd'  'prd' ]) param targetEnv string = 'dev' @allowed([  'southafricanorth'  'southafricawest'  'northeurope'  'westeurope'  'australiaeast'  'australiasoutheast'  'australiacentral'  'australiacentral2'  'eastasia'  'southeastasia'  'brazilsouth'  'brazilsoutheast'  'centralus'  'eastus'  'eastus2'  'westus'  'westus2'  'westus3'  'northcentralus'  'southcentralus' ]) param location string = 'westeurope' param planName string = 'testplan1' param planGroup string = 'rgdoftempdev'  var locationMap = {  'southafricanorth': 'af'  'southafricawest': 'af'  'northeurope': 'eu'  'westeurope': 'eu'  'australiaeast': 'pc'  'australiasoutheast': 'pc'  'australiacentral': 'pc'  'australiacentral2': 'pc'  'eastasia': 'as'  'southeastasia': 'as'  'brazilsouth': 'sa'  'brazilsoutheast': 'sa'  'centralus': 'us'  'eastus': 'us'  'eastus2': 'us'  'westus': 'us'  'westus2': 'us'  'westus3': 'us'  'northcentralus': 'us'  'southcentralus': 'us' } var locationAcr = locationMap[location]  // var hash = substring(uniqueString(subscription().subscriptionId), 0, 4) var appName = 'bvdof' var insightsName = '${appName}-appinsights-${locationAcr}-${targetEnv}' var storageName = '${appName}sa${locationAcr}${targetEnv}' var webAppName = '${appName}-webapp-${locationAcr}-${targetEnv}'  resource storageAccount 'Microsoft.Storage/storageAccounts@2021-06-01' = {  name: storageName  location: location  kind: 'StorageV2'  sku: {  name: 'Premium_LRS'  }  properties: {  minimumTlsVersion: 'TLS1_2'  allowBlobPublicAccess: true  networkAcls: {  bypass: 'AzureServices'  defaultAction: 'Allow'  }  supportsHttpsTrafficOnly: true  encryption: {  keySource: 'Microsoft.Storage'  services: {  blob: {  keyType: 'Account'  enabled: true  }  file: {  keyType: 'Account'  enabled: true  }  }  }  accessTier: 'Hot'  } }  resource appInsights 'Microsoft.Insights/components@2020-02-02' = {  name: insightsName  location: location  kind: 'web'  properties: {  Application_Type: 'web'  publicNetworkAccessForIngestion: 'Enabled'  publicNetworkAccessForQuery: 'Enabled'  } }  resource webApplication 'Microsoft.Web/sites@2021-02-01' = {  dependsOn: [  appInsights  storageAccount  ]  name: webAppName  location: resourceGroup().location  kind: 'app'  properties: {  httpsOnly: true  serverFarmId: '/subscriptions/${subscription().id}/resourceGroups/${planGroup}/providers/Microsoft.Web/serverfarms/${planName}'  clientAffinityEnabled: true  siteConfig: {  appSettings: [  {  name: 'APPINSIGHTS_INSTRUMENTATIONKEY'  value: appInsights.properties.InstrumentationKey  }  // {  // name: 'AzureWebJobsDashboard'  // value: 'DefaultEndpointsProtocol=https;AccountName=${storageAccount.name};EndpointSuffix=${environment().suffixes.storage};AccountKey=${listKeys(storageAccount.id, storageAccount.apiVersion).keys[0].value}'  // }  // {  // name: 'AzureWebJobsStorage'  // value: 'DefaultEndpointsProtocol=https;AccountName=${storageAccount.name};EndpointSuffix=${environment().suffixes.storage};AccountKey=${listKeys(storageAccount.id, storageAccount.apiVersion).keys[0].value}'  // }  {  name: 'WEBSITE_CONTENTAZUREFILECONNECTIONSTRING'  value: 'DefaultEndpointsProtocol=https;AccountName=${storageName};AccountKey=${listKeys(storageAccount.id, storageAccount.apiVersion).keys[0].value}'  }  {  name: 'WEBSITE_CONTENTSHARE'  value: webAppName  }  {  name: 'ANCM_ADDITIONAL_ERROR_PAGE_LINK'  value: 'https://${webAppName}.scm.azurewebsites.net/detectors?type=toolsamp;name=eventviewer'  }  {  name: 'APPINSIGHTS_PROFILERFEATURE_VERSION'  value: '1.0.0'  }  {  name: 'APPINSIGHTS_SNAPSHOTFEATURE_VERSION'  value: '1.0.0'  }  {  name: 'APPLICATIONINSIGHTS_CONNECTION_STRING'  value: 'InstrumentationKey=${appInsights.properties.InstrumentationKey};IngestionEndpoint=https://${location}.in.applicationinsights.azure.com/'  }  ]  }  } }  

Это ошибка, которую я получаю после частично неудачного развертывания (создано хранилище и информация о приложениях):

 {"status":"Failed","error":{"code":"DeploymentFailed","message":"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.","details":[{"code":"BadRequest","message":"{rn "Code": "BadRequest",rn "Message": "There was a conflict. The remote name could not be resolved: 'bvdofsaeudev.file.core.windows.net'",rn "Target": null,rn "Details": [rn {rn "Message": "There was a conflict. The remote name could not be resolved: 'bvdofsaeudev.file.core.windows.net'"rn },rn {rn "Code": "BadRequest"rn },rn {rn "ErrorEntity": {rn "ExtendedCode": "01020",rn   "MessageTemplate": "There was a conflict. {0}",rn "Parameters": [rn "The remote name could not be resolved: 'bvdofsaeudev.file.core.windows.net'"rn ],rn "Code": "BadRequest",rn "Message": "There was a conflict. The remote name could not be resolved: 'bvdofsaeudev.file.core.windows.net'"rn }rn }rn ],rn "Innererror": nullrn}"}]}}  

Что не так с этим определением?

Комментарии:

1. в соответствии с ошибкой в создаваемой учетной записи хранения нет службы файлов , у нее есть только служба больших двоичных объектов . вот почему он не может получить файл.core. сетевое удаленное имя.

2. позвольте мне проверить и вернуться сюда

3. @AnsumanBal-MT странно то, что я создаю именно такую учетную запись хранения, используя шаблон ARM, и успешно настраиваю ее с помощью модуля Az. В любом случае спасибо за ваш комментарий.

4. @AnsumanBal-MT тоже найден, благодаря вашей помощи… Я изменил артикул Standard_LRS. Я проверил свой предыдущий шаблон, и фрагмент кода, который его использует, установил это значение. С Premium_LRS у нас есть только компонент blob. Боже, я задал так много вопросов по этому поводу 🙂 лол

Ответ №1:

Я протестировал ваш код и столкнулся с той же ошибкой, которую вы можете видеть ниже:

введите описание изображения здесь

Ошибка в коде заключается в том, что вы используете Premium_LRS артикул, а вид есть storageV2 . Таким образом , он не создает файловую службу только в службе Blob-объектов учетной записи хранения . По этой причине приложение не может найти удаленное имя файлового сервера учетной записи хранения.

Может быть два решения, как показано ниже:

  1. Просто измените имя артикула с Premium_LRS на Standard_LRS на в ресурсе учетной записи хранения, как показано ниже:
 resource storageAccount 'Microsoft.Storage/storageAccounts@2021-06-01' = {  name: storageName  location: location  kind: 'StorageV2'  sku: {  name: 'Standard_LRS'  }  properties: {  minimumTlsVersion: 'TLS1_2'  allowBlobPublicAccess: true  networkAcls: {  bypass: 'AzureServices'  defaultAction: 'Allow'  }  supportsHttpsTrafficOnly: true  encryption: {  keySource: 'Microsoft.Storage'  services: {  blob: {  keyType: 'Account'  enabled: true  }  file: {  keyType: 'Account'  enabled: true  }  }  }  accessTier: 'Hot'  } }  

Выход:

введите описание изображения здесь

введите описание изображения здесь

  1. Если вы хотите использовать Premium_LRS , измените тип на FileStorage вместо StorageV2 , как показано ниже, чтобы создать учетную запись хранилища премиум-класса с файловой службой, а не службой больших двоичных объектов:
 resource storageAccount 'Microsoft.Storage/storageAccounts@2021-06-01' = {  name: storageName  location: location  kind: 'FileStorage'  sku: {  name: 'Premium_LRS'  }  properties: {  minimumTlsVersion: 'TLS1_2'  allowBlobPublicAccess: true  networkAcls: {  bypass: 'AzureServices'  defaultAction: 'Allow'  }  supportsHttpsTrafficOnly: true  encryption: {  keySource: 'Microsoft.Storage'  services: {  blob: {  keyType: 'Account'  enabled: true  }  file: {  keyType: 'Account'  enabled: true  }  }  }  accessTier: 'Hot'  } }  

Выходы:

введите описание изображения здесь

введите описание изображения здесь