快速入門:部署服務類別目錄受控應用程式
本文內容
在本快速入門中,您會使用利用其中一篇快速入門文章所建立的受控應用程式定義。 部署會建立兩個資源群組。 其中一個資源群組包含受控應用程式,另一個是已部署資源的受控資源群組。 受控應用程式定義會部署 App Service 方案、App Service 和儲存體帳戶。
必要條件
建立服務類別目錄受控應用程式
這些範例會使用 快速入門中建立的資源群組名稱,發佈應用程式定義 。 如果您使用快速入門以 使用自備儲存體發佈定義 ,請使用這些資源群組名稱。
發佈應用程式定義 :packageStorageGroup 和 appDefinitionGroup 。
使用自備儲存體發佈定義 :packageStorageGroup 、 byosDefinitionStorageGroup ,以及 byosAppDefinitionGroup 。
取得受控應用程式定義
若要使用 Azure PowerShell 取得受控應用程式的定義,請執行下列命令。
在 Visual Studio Code 中,開啟新的 PowerShell 終端並登入您的 Azure 訂用帳戶。
Connect-AzAccount
此命令會開啟您的預設瀏覽器,並提示您登入 Azure。 如需詳細資訊,請移至 使用 Azure PowerShell 登入 。
從 Azure PowerShell 取得受控應用程式的定義。 在此範例中,請使用您部署受控應用程式定義時所建立的資源群組名稱 appDefinitionGroup 。
Get-AzManagedApplicationDefinition -ResourceGroupName appDefinitionGroup
Get-AzManagedApplicationDefinition
會列出指定資源群組,例如 sampleManagedApplication 中所有可用的定義。
建立受控應用程式定義資源識別碼的變數。
$definitionid = (Get-AzManagedApplicationDefinition -ResourceGroupName appDefinitionGroup -Name sampleManagedApplication).ManagedApplicationDefinitionId
當您部署受控應用程式時,將會使用 $definitionid
變數的值。
若要使用 Azure CLI 取得受控應用程式的定義,請執行下列命令。
在 Visual Studio Code 中,開啟新的 Bash 終端工作階段並登入您的 Azure 訂用帳戶。 如果您已安裝 Git,請選取 [Git Bash]。
az login
此命令會開啟您的預設瀏覽器,並提示您登入 Azure。 如需詳細資訊,請移至使用 Azure CLI 登入 。
從 Azure CLI 取得受控應用程式的定義。 在此範例中,請使用您部署受控應用程式定義時所建立的資源群組名稱 appDefinitionGroup 。
az managedapp definition list --resource-group appDefinitionGroup
命令會列出指定資源群組,例如 sampleManagedApplication 中所有可用的定義。
建立受控應用程式定義資源識別碼的變數。
definitionid=$(az managedapp definition show --resource-group appDefinitionGroup --name sampleManagedApplication --query id --output tsv)
當您部署受控應用程式時,將會使用 $definitionid
變數的值。
若要從 Azure 入口網站取得受控應用程式的定義,請使用下列步驟。
登入 Azure 入口網站 。
選取 [建立資源]。
搜尋服務目錄受控應用程式 ,然後從可用的選項中選取它。
服務類別目錄受控應用程式 隨即顯示。 選取 建立 。
選取 [ 範例受控應用程式 ],然後選取 [建立 ]。
入口網站會顯示您使用快速入門文章發佈的受控應用程式定義。
建立資源群組與參數
為部署期間所使用的受控應用程式建立資源群組。
New-AzResourceGroup -Name applicationGroup -Location westus3
您也需要為受控應用程式資源群組建立名稱。 當您部署受控應用程式時,會建立資源群組。
執行下列命令以建立受控資源群組名稱。
$mrgprefix = 'mrg-sampleManagedApplication-'
$mrgtimestamp = Get-Date -UFormat "%Y%m%d%H%M%S"
$mrgname = $mrgprefix + $mrgtimestamp
$mrgname
$mrgprefix
和 $mrgtimestamp
變數會串連並儲存在 $mrgname
變數中。 變數的值的格式為 mrg-sampleManagedApplication-20230512103059 。 當您部署受控應用程式時,將會使用 $mrgname
變數的值。
您必須為受控應用程式的部署命令提供數個參數。 您可以使用 JSON 格式化字串或建立 JSON 檔案。 在此範例中,我們使用 JSON 格式化字串。 引號的 PowerShell 逸出字元是反引號 (`
) 字元。 反引號也用於行接續,讓命令可以使用多行。
JSON 格式化字串的語法如下:
"{ `"parameterName`": {`"value`":`"parameterValue`"}, `"parameterName`": {`"value`":`"parameterValue`"} }"
為了可讀性,已完成的 JSON 字串會使用行接續的反引號。 這些值會儲存在部署命令中使用的 $params
變數中。 需要 JSON 字串中的參數,才能部署受控資源。
$params="{ `"appServicePlanName`": {`"value`":`"demoAppServicePlan`"}, `
`"appServiceNamePrefix`": {`"value`":`"demoApp`"}, `
`"storageAccountNamePrefix`": {`"value`":`"demostg1234`"}, `
`"storageAccountType`": {`"value`":`"Standard_LRS`"} }"
要建立受控資源的參數:
appServicePlanName
:建立方案名稱。 最多 40 個英數位元和連字號。 例如, demoAppServicePlan 。 App Service 方案名稱在訂用帳戶中的資源群組內必須是唯一的。
appServiceNamePrefix
:建立計劃名稱的前置詞。 最多 47 個英數位元或連字號。 例如, demoApp 。 在部署期間,前置詞會與唯一字串串連,以建立跨 Azure 全域唯一的名稱。
storageAccountNamePrefix
:僅使用小寫字母和數字,以及最多 11 個字元。 例如, demostg1234 。 在部署期間,前置詞會與唯一字串串連,以建立跨 Azure 全域唯一的名稱。 雖然您正在建立前置詞,但控制項會檢查 Azure 中現有的名稱,並可能會張貼名稱已經存在的驗證訊息。 如果是,請選擇不同的前置詞。
storageAccountType
:選項為 Premium_LRS、Standard_LRS 和 Standard_GRS。
為部署期間所使用的受控應用程式建立資源群組。
az group create --name applicationGroup --location westus3
您也需要為受控應用程式資源群組建立名稱和路徑。 當您部署受控應用程式時,會建立資源群組。
執行下列命令以建立受控資源群組的路徑。
mrgprefix='mrg-sampleManagedApplication-'
mrgtimestamp=$(date +%Y%m%d%H%M%S)
mrgname="${mrgprefix}${mrgtimestamp}"
subid=$(az account list --query [].id --output tsv)
mrgpath="/subscriptions/$subid/resourceGroups/$mrgname"
$mrgprefix
和 $mrgtimestamp
變數會串連並儲存在 $mrgname
變數中。 變數的值的格式為 mrg-sampleManagedApplication-20230512103059 。 mrgname
和 subid
變數會串連,以建立在部署期間建立受控資源群組的 mrgpath
變數值。
您必須為受控應用程式的部署命令提供數個參數。 您可以使用 JSON 格式化字串或建立 JSON 檔案。 在此範例中,我們使用 JSON 格式化字串。 在Bash中,引號的逸出字元是反斜杠 (\
) 字元。 反斜杠也用於行接續,讓命令可以使用多行。
JSON 格式化字串的語法如下:
"{ \"parameterName\": {\"value\":\"parameterValue\"}, \"parameterName\": {\"value\":\"parameterValue\"} }"
為了可讀性,已完成的 JSON 字串會使用行接續的反斜杠。 這些值會儲存在部署命令中使用的 params
變數中。 需要 JSON 字串中的參數,才能部署受控資源。
params="{ \"appServicePlanName\": {\"value\":\"demoAppServicePlan\"}, \
\"appServiceNamePrefix\": {\"value\":\"demoApp\"}, \
\"storageAccountNamePrefix\": {\"value\":\"demostg1234\"}, \
\"storageAccountType\": {\"value\":\"Standard_LRS\"} }"
要建立受控資源的參數:
appServicePlanName
:建立方案名稱。 最多 40 個英數位元和連字號。 例如, demoAppServicePlan 。 App Service 方案名稱在訂用帳戶中的資源群組內必須是唯一的。
appServiceNamePrefix
:建立計劃名稱的前置詞。 最多 47 個英數位元或連字號。 例如, demoApp 。 在部署期間,前置詞會與唯一字串串連,以建立跨 Azure 全域唯一的名稱。
storageAccountNamePrefix
:僅使用小寫字母和數字,以及最多 11 個字元。 例如, demostg1234 。 在部署期間,前置詞會與唯一字串串連,以建立跨 Azure 全域唯一的名稱。 雖然您正在建立前置詞,但控制項會檢查 Azure 中現有的名稱,並可能會張貼名稱已經存在的驗證訊息。 如果是,請選擇不同的前置詞。
storageAccountType
:選項為 Premium_LRS、Standard_LRS 和 Standard_GRS。
提供 [基本] 索引標籤的值,然後選取 [下一步:Web 應用程式設定] 。
訂用帳戶 :選取要部署受控應用程式的訂用帳戶。
資源群組 :選取資源群組。 在此範例中,建立名為 applicationGroup 的資源群組。
區域 :選取要部署資源的位置。
應用程式名稱 :輸入您的受控應用程式名稱。 在此範例中,請使用 demoManagedApplication 。
受控資源群組 :受控資源群組的名稱,其中包含為受控應用程式部署的資源。 預設名稱的格式為 mrg-{definitionName}-{dateTime}
,但您可以變更名稱。
提供 [Web 應用程式] 索引標籤的值,然後選取 [下一步:儲存體設定] 。
App Service 方案名稱 :建立方案名稱。 最多 40 個英數位元和連字號。 例如, demoAppServicePlan 。 App Service 方案名稱在訂用帳戶中的資源群組內必須是唯一的。
App Service 名稱前置詞 :建立方案名稱的前置詞。 最多 47 個英數位元或連字號。 例如, demoApp 。 在部署期間,前置詞會與唯一字串串連,以建立跨 Azure 全域唯一的名稱。
輸入儲存體帳戶名稱的前置詞,然後選取儲存體帳戶類型。 完成時,選取 [下一步:檢閱 + 建立]。
儲存體帳戶名稱前置詞 :只使用小寫字母和數字,最多 11 個字元。 例如, demostg1234 。 在部署期間,前置詞會與唯一字串串連,以建立跨 Azure 全域唯一的名稱。 雖然您正在建立前置詞,但控制項會檢查 Azure 中現有的名稱,並可能會張貼名稱已經存在的驗證訊息。 如果是,請選擇不同的前置詞。
儲存體帳戶類型 :選取 [變更類型] 以選擇儲存體帳戶類型。 預設值是 [標準 LRS]。 其他選項為 Premium_LRS、Standard_LRS 和 Standard_GRS。
部署受控應用程式
執行下列命令以部署受控應用程式。
New-AzManagedApplication `
-Name "demoManagedApplication" `
-ResourceGroupName applicationGroup `
-Location westus3 `
-ManagedResourceGroupName $mrgname `
-ManagedApplicationDefinitionId $definitionid `
-Kind ServiceCatalog `
-Parameter $params
部署命令中使用的參數:
Name
:指定受控應用程式的名稱。 在此範例中,請使用 demoManagedApplication 。
ResourceGroupName
:您為受控應用程式建立的資源群組名稱。
Location
:指定要部署資源的區域。 在這個範例中,請使用 westus3 。
ManagedResourceGroupName
:使用 $mrgname
變數的值。 部署受控應用程式時,會建立受控資源群組。
ManagedApplicationDefinitionId
:針對受控應用程式定義的資源識別碼,使用 $definitionid
變數的值。
Kind
:指定受控應用程式的類型。 此範例使用 ServiceCatalog 。
Parameter
:在 JSON 格式化字串中使用 $params
變數的值。
執行下列命令以部署受控應用程式。
az managedapp create \
--name demoManagedApplication \
--resource-group applicationGroup \
--location westus3 \
--managed-rg-id $mrgpath \
--managedapp-definition-id $definitionid \
--kind ServiceCatalog \
--parameters "$params"
部署命令中使用的參數:
name
:指定受控應用程式的名稱。 在此範例中,請使用 demoManagedApplication 。
resource-group
:您為受控應用程式建立的資源群組名稱。
location
:指定要部署資源的區域。 在這個範例中,請使用 westus3 。
managed-rg-id
:使用 $mrgpath
變數的值。 部署受控應用程式時,會建立受控資源群組。
managedapp-definition-id
:針對受控應用程式定義的資源識別碼,使用 $definitionid
變數的值。
kind
:指定受控應用程式的類型。 此範例使用 ServiceCatalog 。
parameters
:在 JSON 格式化字串中使用 $params
變數的值。
檢閱您所選取值的摘要,並確認已顯示 [驗證已通過] 。 選取 [建立] 以部署受控應用程式。
檢視結果
在部署服務類別目錄受控應用程式之後,您會有兩個新的資源群組。 一個資源群組包含受控應用程式。 另一個資源群組包含已部署的受控資源。 在此範例中,App Service、App Service 方案和儲存體帳戶。
受控應用程式
部署完成後,您可以檢查受控應用程式的狀態。
執行下列命令來檢查受控應用程式的狀態。
Get-AzManagedApplication -Name demoManagedApplication -ResourceGroupName applicationGroup
展開屬性,讓您更容易閱讀 Properties
資訊。
Get-AzManagedApplication -Name demoManagedApplication -ResourceGroupName applicationGroup | Select-Object -ExpandProperty Properties
執行下列命令來檢查受控應用程式的狀態。
az managedapp list --resource-group applicationGroup
下列命令會剖析受控應用程式的相關資料,只顯示應用程式的名稱和佈建狀態。
az managedapp list --resource-group applicationGroup --query "[].{Name:name, provisioningState:provisioningState}"
移至名為 applicationGroup 的資源群組 ,然後選取 [概觀] 。 資源群組包含名為 demoManagedApplication 的受控應用程式。
選取受控應用程式的名稱,以取得詳細資訊,例如受控資源群組的連結。
受控資源
您可以檢視部署至受控資源群組的資源。
若要顯示受控資源群組的資源,請執行下列命令。 您在建立參數時建立了 $mrgname
變數。
Get-AzResource -ResourceGroupName $mrgname
顯示受控資源群組的所有角色指派。
Get-AzRoleAssignment -ResourceGroupName $mrgname
您在快速入門文章中建立的受控應用程式定義,使用具有擁有者角色指派的群組。 您可以使用下列命令來檢視群組。
Get-AzRoleAssignment -ResourceGroupName $mrgname -RoleDefinitionName Owner
您也可以列出受控資源群組的否定性指派。
Get-AzDenyAssignment -ResourceGroupName $mrgname
若要顯示受控資源群組的資源,請執行下列命令。 您在建立參數時建立了 $mrgname
變數。
az resource list --resource-group $mrgname
執行下列命令,只列出受控資源的名稱、類型和佈建狀態。
az resource list --resource-group $mrgname --query "[].{Name:name, Type:type, provisioningState:provisioningState}"
執行下列命令,列出受控應用程式定義中使用的群組角色指派。
az role assignment list --resource-group $mrgname
下列命令會剖析群組角色指派的資料。
az role assignment list --resource-group $mrgname --role Owner --query "[].{ResourceGroup:resourceGroup, GroupName:principalName, RoleDefinition:roleDefinitionId, Role:roleDefinitionName}"
若要檢閱受控資源群組的否定性指派,請使用 Azure 入口網站或 Azure PowerShell 命令。
移至名稱前置詞 mrg-sampleManagedApplication 的受控資源群組,然後選取 [概觀] 來顯示已部署的資源。 資源群組包含 App Service、App Service 方案和儲存體帳戶。
受控資源群組和受控應用程式所建立的每個資源都有角色指派。 當您使用快速入門文章來建立定義時,您建立了 Microsoft Entra 群組。 該群組用於受控應用程式定義中。 當您部署受控應用程式時,該群組的角色指派已新增至受控資源。
若要從 Azure 入口網站查看角色指派:
移至您的 mrg-sampleManagedApplication 資源群組。
選取 [存取控制 (IAM)] > [角色指派] 。
您也可以檢視資源的 [拒絕指派] 。
角色指派可給予應用程式的發行者存取權來管理儲存體帳戶。 在此範例中,發行者可能是您的 IT 部門。 [拒絕指派] 可防止客戶對受控資源的組態進行變更。 受控應用程式的設計目的是讓客戶不需要維護資源。 [否定性指派] 會排除在 [角色指派] 中指派的 Microsoft Entra 群組。
清除資源
當您完成使用受控應用程式時,您可以刪除資源群組,這樣會移除您建立的所有資源。 例如,在本快速入門中,您已建立資源群組 applicationGroup 和具有前置詞 mrg-sampleManagedApplication 的受控資源群組。
命令會提示您確認要移除資源群組。
Remove-AzResourceGroup -Name applicationGroup
命令提示您進行確認,在刪除資源期間,您將回到命令提示字元。
az group delete --resource-group applicationGroup --no-wait
從 Azure 入口網站 [首頁] 的搜尋欄位中,輸入資源群組 。
選取 [資源群組]。
選取 [applicationGroup] ,然後選取 [刪除資源群組] 。
若要確認刪除,請輸入資源群組名稱,然後選取 [刪除]。
如果您想要刪除受控應用程式定義,請刪除您在快速入門文章中建立的資源群組。
發佈應用程式定義 :packageStorageGroup 和 appDefinitionGroup 。
使用自備儲存體發佈定義 :packageStorageGroup 、 byosDefinitionStorageGroup ,以及 byosAppDefinitionGroup 。
下一步