Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Aturan linter ini mengeluarkan peringatan saat templat berisi Microsoft.Resources/deployments
sumber daya pada tingkat akar.
Kode aturan linter
Gunakan nilai berikut pada file konfigurasi Bicep untuk menyesuaikan pengaturan aturan:
no-deployments-resources
Solusi
Di templat ARM, Anda dapat menggunakan kembali atau memodulasi templat melalui templat berlapis atau menautkan menggunakan Microsoft.Resources/deployments
sumber daya. Untuk informasi selengkapnya, lihat Menggunakan templat tertaut dan berlapis saat menyebarkan sumber daya Azure Templat ARM berikut ini adalah sampel templat berlapis:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountName": {
"type": "string",
"defaultValue": "[format('{0}{1}', 'store', uniqueString(resourceGroup().id))]"
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2024-03-01",
"name": "nestedTemplate1",
"properties": {
"mode": "Incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2023-04-01",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2"
}
]
}
}
}
]
}
Di Bicep, Anda masih dapat menggunakan Microsoft.Resources/deployments
sumber daya untuk menyarangkan templat ARM atau menautkan templat ARM eksternal. Tapi, ini bukan ide yang bagus karena dapat menyebabkan perilaku yang tidak aman dan sulit karena bagaimana hal itu dievaluasi beberapa kali. Selain itu, hampir tidak ada validasi dan penyelesaian diri dari Visual Studio Code saat Anda menulis file Bicep, sehingga sulit untuk dikerjakan. File Bicep berikut gagal dalam pengujian ini karena templat berisi Microsoft.Resources/deployments
sumber daya pada tingkat akar.
param storageAccountName string = 'store${uniqueString(resourceGroup().id)}'
param location string = resourceGroup().location
resource nestedTemplate1 'Microsoft.Resources/deployments@2024-03-01' = {
name: 'nestedTemplate1'
properties:{
mode: 'Incremental'
template: {
'$schema': 'https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#'
contentVersion: '1.0.0.0'
resources: [
{
type: 'Microsoft.Storage/storageAccounts'
apiVersion: '2023-04-01'
name: storageAccountName
location: location
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
}
]
}
}
}
Untuk memperbaiki masalah ini, Anda dapat menggunakan perintah dekompilasi Bicep CLI. Misalnya, templat ARM sebelumnya dapat diurai ke dalam file Bicep berikut:
main.bicep:
param storageAccountName string = 'store${uniqueString(resourceGroup().id)}'
param location string = resourceGroup().location
module nestedTemplate1 './nested_nestedTemplate1.bicep' = {
name: 'nestedTemplate1'
params: {
storageAccountName: storageAccountName
location: location
}
}
nested_nestedTemplate1.bicep:
param storageAccountName string
param location string
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: storageAccountName
location: location
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
}
Selain itu, Anda juga dapat mereferensikan templat ARM menggunakan pernyataan modul .
main.bicep:
param storageAccountName string = 'store${uniqueString(resourceGroup().id)}'
param location string = resourceGroup().location
module nestedTemplate1 './createStorage.json' = {
name: 'nestedTemplate1'
params: {
storageAccountName: storageAccountName
location: location
}
}
createStorage.json:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountName": {
"type": "string",
"defaultValue": "[format('{0}{1}', 'store', uniqueString(resourceGroup().id))]"
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2023-04-01",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2"
}
]
}
Langkah berikutnya
Untuk informasi selengkapnya tentang linter, lihat Menggunakan linter Bicep.