Mulai cepat: Membawa penyimpanan Anda sendiri untuk membuat dan menerbitkan definisi Azure Managed Application
Mulai cepat ini menyediakan pengenalan untuk membawa penyimpanan Anda sendiri (BYOS) untuk Azure Managed Application. Anda membuat dan menerbitkan definisi aplikasi terkelola di katalog layanan untuk anggota organisasi Anda. Saat Anda menggunakan akun penyimpanan Anda sendiri, definisi aplikasi terkelola Anda dapat melebihi batas 120 MB katalog layanan.
Untuk menerbitkan definisi aplikasi terkelola ke katalog layanan Anda, lakukan tugas berikut:
- Buat templat Azure Resource Manager (templat ARM) yang menentukan sumber daya Azure yang disebarkan oleh aplikasi terkelola.
- Menentukan elemen antarmuka pengguna untuk portal saat menyebarkan aplikasi terkelola.
- Buat paket .zip yang berisi file JSON yang diperlukan.
- Buat akun penyimpanan tempat Anda menyimpan definisi aplikasi terkelola.
- Sebarkan definisi aplikasi terkelola ke akun penyimpanan Anda sendiri sehingga tersedia di katalog layanan Anda.
Jika definisi aplikasi terkelola Anda kurang dari 120 MB dan Anda tidak ingin menggunakan akun penyimpanan Anda sendiri, buka Mulai Cepat: Membuat dan menerbitkan definisi Aplikasi Terkelola Azure.
Anda dapat menggunakan Bicep untuk mengembangkan definisi aplikasi terkelola tetapi harus dikonversi ke JSON templat ARM sebelum Anda dapat menerbitkan definisi di Azure. Untuk informasi selengkapnya, buka Mulai Cepat: Gunakan Bicep untuk membuat dan menerbitkan definisi Azure Managed Application.
Anda juga dapat menggunakan Bicep menyebarkan definisi aplikasi terkelola dari katalog layanan Anda. Untuk informasi selengkapnya, buka Mulai Cepat: Gunakan Bicep untuk menyebarkan definisi Azure Managed Application.
Prasyarat
Untuk menyelesaikan mulai cepat ini, Anda memerlukan prasyarat berikut:
- Akun Azure dengan langganan aktif dan izin ke sumber daya Microsoft Entra seperti pengguna, grup, atau perwakilan layanan. Jika Anda tidak memiliki akun, buat akun gratis sebelum memulai.
- Visual Studio Code dengan ekstensi Alat Azure Resource Manager terbaru. Untuk file Bicep, instal ekstensi Bicep untuk Visual Studio Code.
- Instal versi terbaru Azure PowerShell atau Azure CLI.
Buat templat ARM
Setiap definisi aplikasi terkelola mencakup file bernama mainTemplate.json. Templat mendefinisikan sumber daya Azure untuk disebarkan dan tidak berbeda dari templat ARM biasa.
Buka Visual Studio Code, buat file dengan nama peka huruf besar/kecil mainTemplate.json dan simpan.
Tambahkan JSON berikut dan simpan file-nya. Ini mendefinisikan sumber daya aplikasi terkelola untuk menyebarkan App Service, paket App Service, dan akun penyimpanan.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
},
"appServicePlanName": {
"type": "string",
"maxLength": 40,
"metadata": {
"description": "App Service plan name."
}
},
"appServiceNamePrefix": {
"type": "string",
"maxLength": 47,
"metadata": {
"description": "App Service name prefix."
}
},
"storageAccountNamePrefix": {
"type": "string",
"maxLength": 11,
"metadata": {
"description": "Storage account name prefix."
}
},
"storageAccountType": {
"type": "string",
"allowedValues": [
"Premium_LRS",
"Standard_LRS",
"Standard_GRS"
],
"metadata": {
"description": "Storage account type allowed values"
}
}
},
"variables": {
"appServicePlanSku": "F1",
"appServicePlanCapacity": 1,
"appServiceName": "[format('{0}{1}', parameters('appServiceNamePrefix'), uniqueString(resourceGroup().id))]",
"storageAccountName": "[format('{0}{1}', parameters('storageAccountNamePrefix'), uniqueString(resourceGroup().id))]"
},
"resources": [
{
"type": "Microsoft.Web/serverfarms",
"apiVersion": "2022-03-01",
"name": "[parameters('appServicePlanName')]",
"location": "[parameters('location')]",
"sku": {
"name": "[variables('appServicePlanSku')]",
"capacity": "[variables('appServicePlanCapacity')]"
}
},
{
"type": "Microsoft.Web/sites",
"apiVersion": "2022-03-01",
"name": "[variables('appServiceName')]",
"location": "[parameters('location')]",
"properties": {
"serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]",
"httpsOnly": true,
"siteConfig": {
"appSettings": [
{
"name": "AppServiceStorageConnectionString",
"value": "[format('DefaultEndpointsProtocol=https;AccountName={0};EndpointSuffix={1};Key={2}', variables('storageAccountName'), environment().suffixes.storage, listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2022-09-01').keys[0].value)]"
}
]
}
},
"dependsOn": [
"[resourceId('Microsoft.Web/serverfarms', parameters('appServicePlanName'))]",
"[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]"
]
},
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2022-09-01",
"name": "[variables('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "[parameters('storageAccountType')]"
},
"kind": "StorageV2",
"properties": {
"accessTier": "Hot"
}
}
],
"outputs": {
"appServicePlan": {
"type": "string",
"value": "[parameters('appServicePlanName')]"
},
"appServiceApp": {
"type": "string",
"value": "[reference(resourceId('Microsoft.Web/sites', variables('appServiceName')), '2022-03-01').defaultHostName]"
},
"storageAccount": {
"type": "string",
"value": "[reference(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2022-09-01').primaryEndpoints.blob]"
}
}
}
Tentukan pengalaman portal Anda
Sebagai penerbit, Anda menentukan pengalaman portal untuk membuat aplikasi terkelola. File createUiDefinition.json menghasilkan antarmuka pengguna portal. Anda menentukan bagaimana pengguna menyediakan input untuk setiap parameter menggunakan elemen kontrol seperti drop-down dan kotak teks.
Dalam contoh ini, antarmuka pengguna meminta Anda untuk memasukkan awalan nama App Service, nama paket App Service, awalan akun penyimpanan, dan jenis akun penyimpanan. Selama penyebaran, variabel di mainTemplate.json menggunakan uniqueString
fungsi untuk menambahkan string 13 karakter ke awalan nama sehingga nama unik secara global di seluruh Azure.
Buka Visual Studio Code, buat file dengan nama peka huruf besar/kecil createUiDefinition.json dan simpan.
Tambahkan kode JSON berikut ke file dan simpan.
{
"$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
"handler": "Microsoft.Azure.CreateUIDef",
"version": "0.1.2-preview",
"parameters": {
"basics": [
{}
],
"steps": [
{
"name": "webAppSettings",
"label": "Web App settings",
"subLabel": {
"preValidation": "Configure the web app settings",
"postValidation": "Completed"
},
"elements": [
{
"name": "appServicePlanName",
"type": "Microsoft.Common.TextBox",
"label": "App Service plan name",
"placeholder": "App Service plan name",
"defaultValue": "",
"toolTip": "Use alphanumeric characters or hyphens with a maximum of 40 characters.",
"constraints": {
"required": true,
"regex": "^[a-z0-9A-Z-]{1,40}$",
"validationMessage": "Only alphanumeric characters or hyphens are allowed, with a maximum of 40 characters."
},
"visible": true
},
{
"name": "appServiceName",
"type": "Microsoft.Common.TextBox",
"label": "App Service name prefix",
"placeholder": "App Service name prefix",
"defaultValue": "",
"toolTip": "Use alphanumeric characters or hyphens with minimum of 2 characters and maximum of 47 characters.",
"constraints": {
"required": true,
"regex": "^[a-z0-9A-Z-]{2,47}$",
"validationMessage": "Only alphanumeric characters or hyphens are allowed, with a minimum of 2 characters and maximum of 47 characters."
},
"visible": true
}
]
},
{
"name": "storageConfig",
"label": "Storage settings",
"subLabel": {
"preValidation": "Configure the storage settings",
"postValidation": "Completed"
},
"elements": [
{
"name": "storageAccounts",
"type": "Microsoft.Storage.MultiStorageAccountCombo",
"label": {
"prefix": "Storage account name prefix",
"type": "Storage account type"
},
"toolTip": {
"prefix": "Enter maximum of 11 lowercase letters or numbers.",
"type": "Available choices are Standard_LRS, Standard_GRS, and Premium_LRS."
},
"defaultValue": {
"type": "Standard_LRS"
},
"constraints": {
"allowedTypes": [
"Premium_LRS",
"Standard_LRS",
"Standard_GRS"
]
},
"visible": true
}
]
}
],
"outputs": {
"location": "[location()]",
"appServicePlanName": "[steps('webAppSettings').appServicePlanName]",
"appServiceNamePrefix": "[steps('webAppSettings').appServiceName]",
"storageAccountNamePrefix": "[steps('storageConfig').storageAccounts.prefix]",
"storageAccountType": "[steps('storageConfig').storageAccounts.type]"
}
}
}
Untuk mempelajari lebih lanjut, buka Mulai menggunakan CreateUiDefinition.
Membuat paket file
Tambahkan dua file ke file paket bernama app.zip. Kedua file tersebut harus berada di tingkat akar file .zip. Jika file berada dalam folder, saat Anda membuat definisi aplikasi terkelola, Anda menerima kesalahan yang menyatakan file yang diperlukan tidak ada.
Unggah app.zip ke akun penyimpanan Azure sehingga Anda dapat menggunakannya saat menyebarkan definisi aplikasi terkelola. Nama akun penyimpanan harus unik secara global di Azure dan panjangnya harus 3-24 karakter dengan hanya huruf kecil dan angka. Dalam perintah, ganti tempat penampung <demostorageaccount>
termasuk tanda kurung sudut (<>
), dengan nama akun penyimpanan unik Anda.
New-AzResourceGroup -Name packageStorageGroup -Location westus3
$storageAccount = New-AzStorageAccount `
-ResourceGroupName packageStorageGroup `
-Name "<demostorageaccount>" `
-Location westus3 `
-SkuName Standard_LRS `
-Kind StorageV2
$ctx = $storageAccount.Context
New-AzStorageContainer -Name appcontainer -Context $ctx -Permission blob
Set-AzStorageBlobContent `
-File "app.zip" `
-Container appcontainer `
-Blob "app.zip" `
-Context $ctx
Gunakan perintah berikut untuk menyimpan URI file paket dalam variabel bernama packageuri
. Anda menggunakan nilai variabel saat menyebarkan definisi aplikasi terkelola.
$packageuri=(Get-AzStorageBlob -Container appcontainer -Blob app.zip -Context $ctx).ICloudBlob.StorageUri.PrimaryUri.AbsoluteUri
Membawa penyimpanan Anda sendiri untuk definisi aplikasi terkelola
Anda menyimpan definisi aplikasi terkelola di akun penyimpanan Anda sendiri sehingga lokasi dan aksesnya dapat dikelola oleh Anda untuk kebutuhan peraturan organisasi Anda. Menggunakan akun penyimpanan Anda sendiri memungkinkan Anda memiliki aplikasi yang melebihi batas 120 MB untuk definisi aplikasi terkelola katalog layanan.
Catatan
Bawa penyimpanan Anda sendiri hanya didukung dengan templat ARM atau penyebaran REST API dari definisi aplikasi terkelola.
Buat akun penyimpanan
Buat akun penyimpanan untuk definisi aplikasi terkelola Anda. Nama akun penyimpanan harus unik secara global di Azure dan panjangnya harus 3-24 karakter dengan hanya huruf kecil dan angka.
Contoh ini membuat grup sumber daya baru bernama byosDefinitionStorageGroup
. Dalam perintah, ganti tempat penampung <definitionstorage>
termasuk tanda kurung sudut (<>
), dengan nama akun penyimpanan unik Anda.
New-AzResourceGroup -Name byosDefinitionStorageGroup -Location westus3
New-AzStorageAccount `
-ResourceGroupName byosDefinitionStorageGroup `
-Name "<definitionstorage>" `
-Location westus3 `
-SkuName Standard_LRS `
-Kind StorageV2
Gunakan perintah berikut untuk menyimpan ID sumber daya akun penyimpanan dalam variabel bernama storageid
. Anda menggunakan nilai variabel saat menyebarkan definisi aplikasi terkelola.
$storageid = (Get-AzStorageAccount -ResourceGroupName byosDefinitionStorageGroup -Name <definitionstorage>).Id
Tetapkan penetapan peran untuk akun penyimpanan Anda
Sebelum Anda menyebarkan definisi aplikasi terkelola ke akun penyimpanan Anda, tetapkan peran Kontributor ke pengguna Penyedia Sumber Daya Appliance di cakupan akun penyimpanan. Tugas ini memungkinkan identitas menulis file definisi ke kontainer akun penyimpanan Anda.
Anda dapat menggunakan variabel untuk menyiapkan penetapan peran. Contoh ini menggunakan variabel yang $storageid
Anda buat di langkah sebelumnya dan membuat $arpid
variabel.
$arpid = (Get-AzADServicePrincipal -SearchString "Appliance Resource Provider").Id
New-AzRoleAssignment -ObjectId $arpid `
-RoleDefinitionName Contributor `
-Scope $storageid
Penyedia Sumber Daya Appliance adalah perwakilan layanan di penyewa Microsoft Entra Anda. Dari portal Azure, Anda dapat memverifikasi apakah terdaftar dengan masuk ke aplikasi Microsoft Entra ID>Enterprise dan mengubah filter pencarian ke Aplikasi Microsoft. Telusuri Penyedia Sumber Daya Appliance. Jika tidak ditemukan, daftarkanMicrosoft.Solutions
penyedia sumber daya.
Mendapatkan ID grup dan ID definisi peran
Langkah selanjutnya adalah memilih pengguna, grup keamanan, atau aplikasi untuk mengelola sumber daya untuk pelanggan. Identitas ini memiliki izin pada grup sumber daya terkelola sesuai dengan peran yang ditetapkan. Perannya bisa berupa peran bawaan Azure seperti Pemilik atau Kontributor.
Contoh ini menggunakan grup keamanan, dan akun Microsoft Entra Anda harus menjadi anggota grup. Untuk mendapatkan ID objek grup, ganti tempat penampung <managedAppDemo>
termasuk tanda kurung sudut (<>
), dengan nama grup Anda. Anda menggunakan nilai variabel saat menyebarkan definisi aplikasi terkelola.
Untuk membuat grup Microsoft Entra baru, buka Mengelola grup Microsoft Entra dan keanggotaan grup.
$principalid=(Get-AzADGroup -DisplayName <managedAppDemo>).Id
Selanjutnya, dapatkan ID definisi peran peran bawaan Azure yang ingin Anda berikan akses ke pengguna, grup, atau aplikasi. Anda menggunakan nilai variabel saat menyebarkan definisi aplikasi terkelola.
$roleid=(Get-AzRoleDefinition -Name Owner).Id
Membuat templat penyebaran definisi
Gunakan file Bicep untuk menyebarkan definisi aplikasi terkelola di katalog layanan Anda. Setelah penyebaran, file definisi disimpan di akun penyimpanan Anda sendiri.
Buka Visual Studio Code, buat file dengan nama deployDefinition.bicep dan simpan.
Tambahkan kode Bicep berikut dan simpan file.
param location string = resourceGroup().location
@description('Name of the managed application definition.')
param managedApplicationDefinitionName string
@description('Resource ID for the bring your own storage account where the definition is stored.')
param definitionStorageResourceID string
@description('The URI of the .zip package file.')
param packageFileUri string
@description('Publishers Principal ID that needs permissions to manage resources in the managed resource group.')
param principalId string
@description('Role ID for permissions to the managed resource group.')
param roleId string
var definitionLockLevel = 'ReadOnly'
var definitionDisplayName = 'Sample BYOS managed application'
var definitionDescription = 'Sample BYOS managed application that deploys web resources'
resource managedApplicationDefinition 'Microsoft.Solutions/applicationDefinitions@2021-07-01' = {
name: managedApplicationDefinitionName
location: location
properties: {
lockLevel: definitionLockLevel
description: definitionDescription
displayName: definitionDisplayName
packageFileUri: packageFileUri
storageAccountId: definitionStorageResourceID
authorizations: [
{
principalId: principalId
roleDefinitionId: roleId
}
]
}
}
Untuk informasi selengkapnya tentang properti templat, buka Microsoft.Solutions/applicationDefinitions.
Pada lockLevel
grup sumber daya terkelola mencegah pelanggan melakukan operasi yang tidak diinginkan pada grup sumber daya ini. Saat ini, ReadOnly
adalah satu-satunya level kunci yang didukung. ReadOnly
menentukan bahwa pelanggan hanya dapat membaca sumber daya yang ada di grup sumber daya terkelola. Identitas penerbit yang diberikan akses ke grup sumber daya terkelola dikecualikan dari tingkat kunci.
Buat file parameter
Templat penyebaran definisi aplikasi terkelola memerlukan input untuk beberapa parameter. Perintah penyebaran meminta nilai atau Anda dapat membuat file parameter untuk nilai tersebut. Dalam contoh ini, kita menggunakan file parameter untuk meneruskan nilai parameter ke perintah penyebaran.
Di Visual Studio Code, buat file baru bernama deployDefinition.parameters.json dan simpan.
Tambahkan yang berikut ini ke file parameter Anda dan simpan. Kemudian, ganti <placeholder values>
termasuk tanda kurung sudut (<>
), dengan nilai Anda.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"managedApplicationDefinitionName": {
"value": "<placeholder for managed application name>"
},
"definitionStorageResourceID": {
"value": "<placeholder for you storage account ID>"
},
"packageFileUri": {
"value": "<placeholder for the packageFileUri>"
},
"principalId": {
"value": "<placeholder for principalid value>"
},
"roleId": {
"value": "<placeholder for roleid value>"
}
}
}
Tabel berikut menjelaskan nilai parameter untuk definisi aplikasi terkelola.
Parameter | Nilai |
---|---|
managedApplicationDefinitionName |
Nama definisi aplikasi terkelola. Untuk contoh ini, gunakan sampleByosManagedApplication. |
definitionStorageResourceID |
ID sumber daya untuk akun penyimpanan tempat definisi disimpan. Gunakan nilai variabel Anda storageid . |
packageFileUri |
Masukkan URI untuk file paket .zip Anda. Gunakan nilai variabel Anda packageuri . Formatnya adalah https://yourStorageAccountName.blob.core.windows.net/appcontainer/app.zip . |
principalId |
ID Utama penerbit yang memerlukan izin untuk mengelola sumber daya di grup sumber daya terkelola. Gunakan nilai variabel Anda principalid . |
roleId |
ID Peran untuk izin ke grup sumber daya terkelola. Misalnya Pemilik, Kontributor, Pembaca. Gunakan nilai variabel Anda roleid . |
Untuk mendapatkan nilai variabel Anda:
- Azure PowerShell: Di PowerShell, ketik
$variableName
untuk menampilkan nilai variabel. - Azure CLI: Di Bash, ketik
echo $variableName
untuk menampilkan nilai variabel.
Menyebarkan definisi
Saat Anda menyebarkan definisi aplikasi terkelola, definisi tersebut akan tersedia di katalog layanan Anda. Proses ini tidak menyebarkan sumber daya aplikasi terkelola.
Buat grup sumber daya bernama byosAppDefinitionGroup dan sebarkan definisi aplikasi terkelola ke akun penyimpanan Anda.
New-AzResourceGroup -Name byosAppDefinitionGroup -Location westus3
New-AzResourceGroupDeployment `
-ResourceGroupName byosAppDefinitionGroup `
-TemplateFile deployDefinition.bicep `
-TemplateParameterFile deployDefinition.parameters.json
Memverifikasi penyimpanan file definisi
Selama penyebaran, properti storageAccountId
templat menggunakan ID sumber daya akun penyimpanan Anda dan membuat kontainer baru dengan nama applicationdefinitions
peka huruf besar/kecil. File dari paket .zip yang Anda tentukan selama penyebaran disimpan dalam kontainer baru.
Anda dapat menggunakan perintah berikut untuk memverifikasi bahwa file definisi aplikasi terkelola disimpan di kontainer akun penyimpanan Anda. Dalam perintah, ganti tempat penampung <definitionstorage>
termasuk tanda kurung sudut (<>
), dengan nama akun penyimpanan unik Anda.
Get-AzStorageAccount -ResourceGroupName byosDefinitionStorageGroup -Name <definitionstorage> |
Get-AzStorageContainer -Name applicationdefinitions |
Get-AzStorageBlob | Select-Object -Property Name | Format-List
Catatan
Untuk keamanan tambahan, Anda dapat membuat definisi aplikasi terkelola menyimpannya di Blob akun penyimpanan Azure tempat enkripsi diaktifkan. Konten definisi dienkripsi melalui opsi enkripsi akun penyimpanan. Hanya pengguna dengan izin ke file yang dapat mengakses definisi di katalog layanan Anda.
Pastikan pengguna dapat mengakses definisi Anda
Anda memiliki akses ke definisi aplikasi terkelola, tetapi Anda ingin memastikan pengguna lain di organisasi Anda dapat mengaksesnya. Beri mereka setidaknya peran Pembaca pada definisi. Mereka mungkin telah mewarisi tingkat akses ini dari grup langganan atau sumber daya. Untuk memeriksa siapa yang memiliki akses ke definisi dan menambahkan pengguna atau grup, buka Menetapkan peran Azure menggunakan portal Azure.
Membersihkan sumber daya
Jika Anda akan menyebarkan definisi, lanjutkan dengan bagian Langkah berikutnya yang menautkan ke artikel untuk menyebarkan definisi.
Jika Anda selesai dengan definisi aplikasi terkelola, Anda dapat menghapus grup sumber daya yang Anda buat bernama packageStorageGroup, byosDefinitionStorageGroup, dan byosAppDefinitionGroup.
Perintah meminta Anda untuk mengonfirmasi bahwa Anda ingin menghapus grup sumber daya.
Remove-AzResourceGroup -Name packageStorageGroup
Remove-AzResourceGroup -Name byosAppDefinitionGroup
Remove-AzResourceGroup -Name byosDefinitionStorageGroup
Langkah berikutnya
Anda telah menerbitkan definisi aplikasi terkelola. Sekarang, pelajari cara menyebarkan instans definisi tersebut.