#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-объектов учетной записи хранения . По этой причине приложение не может найти удаленное имя файлового сервера учетной записи хранения.
Может быть два решения, как показано ниже:
- Просто измените имя артикула с
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' } }
Выход:
- Если вы хотите использовать
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' } }
Выходы: