Azure portal、Azure PowerShell、またはAzure CLIを使ってAzure Backupで詳細な課金を設定

Azure Backupできめ細かな課金を行うと、チーム、アプリケーション、コスト センター全体のチャージバックとレポートを向上させるために、カスタムの粒度レベルでバックアップ コストを表示できます。

Important

  • 詳細な課金は、Recovery Services コンテナーと Backup ボールトの両方をサポートしています。
  • この機能は、管理プレーン レポートの変更のみであり、価格メーターや合計バックアップ コストは変更されません。
  • 既存の過去の請求書ラインは以前の形式のままであり、選択した細分度を使用するのは新しい料金のみです。
  • Vaultレベルは既存および新規Vaultのデフォルトであり、後方互換性を維持しています。

利用可能な課金の詳細レベル

Azure Backupには、レポートとチャージバックの要件に基づいてバックアップ コストを表示および分析するのに役立つ複数の粒度レベルが用意されています。

要件に従って、次のいずれかの粒度レベルを選択できます。

  • Vaultレベル(デフォルト):関連するRecovery ServicesヴォールトまたはBackup Vaultの下に表示されるバックアップコストを表示します。 指定されたメーターに対応するリソースのコストは、コンテナーごとに 1 行の項目として表示されます。

  • 保護された項目レベル: 保護された各アイテムのバックアップ コストを表示します。

  • タグレベル:バックアップコストをタグごとに集計し、リソースレベルで支出を表示・分析します。

    • デフォルトタグ(推奨):タグレベルを選択すると、Azure Backup自動的に内蔵ms-resource-parentタグをAzure Cost Managementに渡します。 保護対象項目ごとのバックアップ料金はAzure Cost Managementの関連リソースの下に表示されるため、追加設定なしでリソースとバックアップコストを統合的に把握できます。

    • カスタムタグ:バックアップコストを別のリソースに割り当てるには、cm-resource-parentタグを追加し、バックアップコストが表示されたい対象リソースのAzure Resource Manager(ARM)リソースIDに値を設定します。 Azure Backupはそのリソースの下でバックアップ料金をAzure Cost Managementで集約し、カスタムチャージバックやコスト報告シナリオをサポートできます。

Azureポータルを使って細かい請求を設定する

両方のボールトタイプで手順は同じですが、Properties ペインへのナビゲーションのみ異なります。 設定したいボールトタイプを選択してください:

  1. AzureポータルでRecovery Servicesのボールトに移動し、「設定>プロパティ」を選択します。

    Recovery Services コンテナーで詳細な課金プロパティを構成する方法を示すスクリーンショット。

  2. [ プロパティ ] ウィンドウの [ コスト管理の粒度] で、[ 更新 ] を選択します。

  3. コスト管理のグラニュラリティ(細分性)ペインで、粒度オプションを選択してください。

  4. タグ レベル を選択し、コストをデフォルトの ms-resource-parent タグではなくカスタム親リソースにまとめたい場合は、ボールトの タグ ペインに移動し、キー cm-resource-parent、値をターゲット リソースの完全な ARM リソース ID に設定したタグを追加し、保存 を選択してください。 デフォルトの親タググループは手動タグ付けが不要なので、このステップは省略できます。

  5. [ 更新] を選択して設定を保存します。

以下の表は、細かさレベルと -CostManagementGranularity パラメータに渡す値を一覧にしています。

粒度レベル(ポータル) Value Behavior
ヴォールトレベル(デフォルト) VaultLevel バックアップコストは、適用される各請求メーターごとに各ボールトごとに集計されます。
保護された項目レベル ProtectedItemLevel 保護された各アイテムのバックアップコストを表示します。
タグレベル 親タグ付き保護項目 バックアップコストを親タグで集約するため、リソースレベルで支出を確認できます。

Prerequisites

Azure PowerShellを使って詳細な課金を設定する前に、以下の前提条件を満たしていることを確認してください。

  • 使用するボールトの種類に応じて、 Recovery ServicesのVault概要 または バックアップVaultの概要を確認してください。
  • Azure ライブラリのAz.RecoveryServicesとAz.DataProtectionコマンドレットのリファレンスを確認しましょう。
  • バックアップ コントリビューターやコントリビューター ロールなど、ボールトに書き込み権限があるか確認してください。
  • カスタムタグの場合は、ボールトにタグを追加する権限と、使用するARM リソース ID の親リソースへの読み取りアクセス権を持っていることを確認してください。

詳細な請求構成のために Azure PowerShell を設定する

Azure Az PowerShell モジュールを使用して Azure と対話します。 Azure PowerShell の詳細な課金設定を始める前に、まずAzure PowerShellをインストールしてください。 Az PowerShell モジュールに移行するには、「Migrate Azure PowerShell from AzureRM to Az」をご覧ください。

Azure PowerShell を設定するには、以下のcmdletを実行してください:

  1. 必要なモジュールをインストールまたは更新してください。

    注

    -CostManagementGranularityパラメータは、Recovery ServicesのVaultに対してAz.RecoveryServices 7.14.1以降、バックアップ用Vault にはAz.DataProtection 3.1.0以降が必要です。

    Install-Module -Name Az.RecoveryServices -MinimumVersion 7.14.1 -Force
    Install-Module -Name Az.DataProtection -MinimumVersion 3.1.0 -Force
    
  2. インストールモジュールのバージョンを確認してください:

    Get-Module -Name Az.RecoveryServices, Az.DataProtection -ListAvailable |
        Select-Object Name, Version
    

    出力例:

    Name                Version
    ----                -------
    Az.DataProtection   3.1.0
    Az.RecoveryServices 7.14.1
    
  3. 新しいパラメータがインストール済みのモジュールで利用可能かどうかを確認してください:

    'New-AzRecoveryServicesVault',
    'Update-AzRecoveryServicesVault',
    'New-AzDataProtectionBackupVault',
    'Update-AzDataProtectionBackupVault' | ForEach-Object {
        $cmd = Get-Command $_ -ErrorAction SilentlyContinue
        [pscustomobject]@{
            Cmdlet       = $_
            Installed    = $null -ne $cmd
            HasParameter = ($null -ne $cmd) -and $cmd.Parameters.ContainsKey('CostManagementGranularity')
        }
    } | Format-Table -AutoSize
    

    出力例:

    Cmdlet                             Installed HasParameter
    ------                             --------- ------------
    New-AzRecoveryServicesVault             True         True
    Update-AzRecoveryServicesVault          True         True
    New-AzDataProtectionBackupVault         True         True
    Update-AzDataProtectionBackupVault      True         True
    
  4. Connect-AzAccountを使ってAzureアカウントにサインインしてください。 表示される Web ページで、アカウントの資格情報を入力するように求められます。

  5. 1 つのアカウントが複数のサブスクリプションを持つことができるため、使用するサブスクリプションをアカウントに関連付けます。

    Select-AzSubscription -SubscriptionName $SubscriptionName
    

次の表は、この記事で各コンテナーの種類ごとに使用するコマンドレットの一覧です。

タスク Recovery Services コンテナー バックアップ保管庫
作成時に粒度を設定 -CostManagementGranularity を指定した New-AzRecoveryServicesVault -CostManagementGranularity を指定した New-AzDataProtectionBackupVault
細分性を変更する -CostManagementGranularity を指定した Update-AzRecoveryServicesVault -CostManagementGranularity を指定した Update-AzDataProtectionBackupVault
読み取り粒度 Get-AzRecoveryServicesVault - Properties.CostManagementSettings.GranularityLevel を読んでください Get-AzDataProtectionBackupVault -
CostManagementSettingGranularityLevel
カスタム親タグを適用してください Update-AzTag Update-AzTag

Azure PowerShell を使用して詳細な課金を構成する

設定したいボールトタイプを選択してください:

ヴォールトの作成時に粒度を設定する

-CostManagementGranularityパラメータはNew-AzRecoveryServicesVaultでは任意です。 このオプションをボールト作成時に指定しなければ、デフォルト値は VaultLevelになります。

粒度レベルを指定してヴォールトを作成するには、以下のコマンドレットを実行します。 ProtectedItemLevelを粒度表の任意の数値に置き換えます。

$vault = New-AzRecoveryServicesVault `
    -Name "afs-vault" `
    -ResourceGroupName "backup-rg" `
    -Location "westus" `
    -CostManagementGranularity ProtectedItemLevel

$vault.Properties.CostManagementSettings.GranularityLevel

出力例:

ProtectedItemLevel

既存のヴォールトの粒度を変更する

2 日目の変更には、Update-AzRecoveryServicesVault を使用します。 このコマンドレットはポータルでのフロー、[Recovery Services コンテナー]>[プロパティ]>[コスト管理の粒度]>[更新] を反映しています。

コンテナーを保護アイテム レベルに切り替える

ヴォールトを保護アイテムレベルに切り替えるには、以下のコマンドレットを実行してください:

$updatedVault = Update-AzRecoveryServicesVault `
    -ResourceGroupName "backup-rg" `
    -Name "afs-vault" `
    -CostManagementGranularity ProtectedItemLevel

$updatedVault.Properties.CostManagementSettings.GranularityLevel

出力例:

ProtectedItemLevel

現在の粒度設定を見る

Get-AzRecoveryServicesVault 新しいパラメータは必要ありません。 設定は返却されたヴォールトオブジェクトの Properties.CostManagementSettings.GranularityLevelに現れ、 CrossSubscriptionRestoreStateと同じパターンに従っています。

現在の粒度設定を見るには、以下のコマンドレットを実行してください:

$vault = Get-AzRecoveryServicesVault `
    -ResourceGroupName "backup-rg" `
    -Name "afs-vault"

$vault.Properties.CostManagementSettings.GranularityLevel

出力例:

ProtectedItemLevel

サブスクリプション内のすべての Recovery Services ヴォールトの粒度設定を監査するには、以下のコマンドレットを実行します。

Get-AzRecoveryServicesVault | ForEach-Object {
    [pscustomobject]@{
        Name              = $_.Name
        ResourceGroupName = $_.ResourceGroupName
        Location          = $_.Location
        Granularity       = $_.Properties.CostManagementSettings.GranularityLevel
    }
} | Format-Table -AutoSize

出力例:

Name       ResourceGroupName Location Granularity
----       ----------------- -------- -----------
afs-vault  backup-rg         westus   ProtectedItemLevel
fin-vault  finance-rg        eastus   VaultLevel
hr-vault   hr-rg             westus2  ProtectedItemWithParentTag

タグレベルの粒度を設定する

タグレベルの粒度には、以下の独立した役割が含まれます:

  • ボールトにタグを適用する際:標準のAz.Resourcesコマンドレットを再利用してください。 このプロセスではタグ付けのための新しいバックアップコマンドレットは必要ありません。
  • タグレベルのコストグループ化を有効にする:ボールトの -CostManagementGranularity パラメータを ProtectedItemWithParentTag に設定します。

シナリオ1:デフォルトの親タグを使う

バックアップサービスは自動的に ms-resource-parent タグを適用するため、Vault上でタグレベルの細かさを有効にするだけで済みます。 手動タグ付けは不要です。

デフォルトの親タグを使用するには、以下の手順に従ってください:

  1. Vault でタグ レベルのコスト グループ化を有効にしてください。

    Update-AzRecoveryServicesVault `
        -ResourceGroupName "backup-rg" `
        -Name "afs-vault" `
        -CostManagementGranularity ProtectedItemWithParentTag
    
  2. 構成済みの設定を確認してください。

    $vault = Get-AzRecoveryServicesVault -ResourceGroupName "backup-rg" -Name "afs-vault"
    $vault.Properties.CostManagementSettings.GranularityLevel
    

    出力例:

    ProtectedItemWithParentTag
    

注

デフォルトの ms-resource-parent タグは、ボールトや保護されたリソースの表示タグとしては適用されません。 Azure Backupは請求の詳細の一部としてタグをAzure Cost Managementに渡すため、ボールトのタグパネルには表示されません。

シナリオ 2: カスタム親タグを使用する

カスタム親でコストをグループ化するには、まず cm-resource-parent タグをボールトに適用し、その値を親リソースのARMリソースIDに設定します。 次に、コンテナーでタグ レベルの粒度を有効にします。

Important

Update-AzTag -Operation Mergeを使って、ヴォールトの既存のタグを保持してください。 New-AzTag リソース上のすべてのタグを置き換えるので、ここでは使わないでください。

カスタムタグを使用するには、以下の手順に従ってください:

  1. Recovery Services コンテナーにカスタムの親タグを適用します。 タグキーは cm-resource-parentで、タグ値は親リソースのARMリソースIDです。

    $vault  = Get-AzRecoveryServicesVault -ResourceGroupName "backup-rg" -Name "afs-vault"
    $parent = Get-AzResource -Name "financeparent" -ResourceGroupName "storage-rg"
    
    Update-AzTag -ResourceId $vault.ID `
        -Tag @{ "cm-resource-parent" = $parent.Id } `
        -Operation Merge
    

    出力例:

    Id         : /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/backup-rg/providers/Microsoft.RecoveryServices/vaults/afs-vault/providers/Microsoft.Resources/tags/default
    Name       : default
    Type       : Microsoft.Resources/tags
    Properties :
                 Name                Value
                 ==================  ==========================================================
                 cm-resource-parent  /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resour
                                     ceGroups/storage-rg/providers/Microsoft.Storage/storageAcc
                                     ounts/financeparent
    
  2. Vault でタグ レベルのコスト グループ化を有効にしてください。

    Update-AzRecoveryServicesVault `
        -ResourceGroupName "backup-rg" `
        -Name "afs-vault" `
        -CostManagementGranularity ProtectedItemWithParentTag
    
  3. 構成済みの設定を確認してください。

    $vault = Get-AzRecoveryServicesVault -ResourceGroupName "backup-rg" -Name "afs-vault"
    $vault.Properties.CostManagementSettings.GranularityLevel
    

    出力例:

    ProtectedItemWithParentTag
    

以下の表は、 --cost-management-granularity オプションに渡す細かさレベルと値を一覧にしています。

粒度レベル(ポータル) Value Behavior
ヴォールトレベル(デフォルト) VaultLevel バックアップコストは、適用される各請求メーターごとに各ボールトごとに集計されます。
保護された項目レベル ProtectedItemLevel 保護された各アイテムのバックアップコストを表示します。
タグレベル 親タグ付き保護項目 バックアップコストを親タグで集約するため、リソースレベルで支出を確認できます。

Prerequisites

Azure CLIを使って細分化請求を設定する前に、以下の前提条件を満たしていることを確認してください。

  • 使用するボールトの種類に応じて、 Recovery ServicesのVault概要 または バックアップVaultの概要を確認してください。
  • az backup vaultとaz dataprotection backup-vaultのコマンド リファレンスを確認してください。
  • バックアップ コントリビューターやコントリビューター ロールなど、ボールトに書き込み権限があるか確認してください。
  • カスタムタグの場合は、ボールトにタグを追加する権限と、使用するARM リソース ID の親リソースへの読み取りアクセス権を持っていることを確認してください。
  • --cost-management-granularity オプションには、Recovery Services コンテナーには Azure CLI バージョン 2.89.0 以降、バックアップ コンテナーには dataprotection 拡張機能バージョン 1.13.0 以降が必要です。

詳細な請求構成用に Azure CLI を設定する

細かな請求設定のためにAzure CLIを設定する前に、まずAzure CLIをインストールしてください。 これらのコマンドは、常に最新バージョンの CLI が含まれている Azure Cloud Shell で実行することもできます。

Azure CLI を設定するには、以下のコマンドを実行してください:

  1. インストール済みのAzure CLIバージョンを確認してください:

    az version
    

    出力例:

    {
      "azure-cli": "2.89.0",
      "azure-cli-core": "2.89.0",
      "azure-cli-telemetry": "1.1.0",
      "extensions": {}
    }
    
  2. データ保護拡張機能を追加してください。 az dataprotectionコマンドグループは拡張機能であり、CLIコアの一部ではないため、バックアップボールトを管理する前に必ずインストールする必要があります。 Recovery Servicesのボールトだけを使う場合はこのステップを省略してください。

    az extension add --name dataprotection --upgrade
    
  3. 拡張機能がインストールされているか確認してください:

    az extension list --query "[].{Name:name, Version:version}" -o table
    

    出力例:

    Name             Version
    ---------------  ---------
    dataprotection   1.13.0
    
  4. インストールされているAzure CLIバージョンでgranularityオプションが利用可能か確認してください。 このオプションはコマンドのヘルプ出力に現れます:

    az backup vault update --help
    

    出力例:

    --cost-management-granularity
        Use this parameter to configure cost management settings for the vault.
        By default, the property is "VaultLevel" for the vault.
        Allowed values: ProtectedItemLevel, ProtectedItemWithParentTag, VaultLevel.
    

    バックアップボールトでオプションが利用可能かどうかを確認するには、代わりに以下のコマンドを実行してください:

    az dataprotection backup-vault update --help
    

    出力例:

    --cost-management-granularity
        Settings for cost management granularity level for a vault.
        Accepted values: ProtectedItemLevel, ProtectedItemWithParentTag, VaultLevel
    
  5. Azure アカウントにサインインします。

    az login
    
  6. 使いたいサブスクリプションを設定してください。アカウントに複数のサブスクリプションがある場合があります:

    az account set --subscription "<subscription-name-or-id>"
    

以下の表は、各ボールトタイプで使用するコマンドを一覧にしています。

タスク Recovery Services コンテナー バックアップ保管庫
作成時に粒度を設定 az backup vault create with --cost-management-granularity az dataprotection backup-vault create with --cost-management-granularity
細分性を変更する az backup vault update with --cost-management-granularity az dataprotection backup-vault update with --cost-management-granularity
読み取り粒度 az backup vault show az dataprotection backup-vault show
コンテナーと粒度の一覧を表示する az backup vault list az dataprotection backup-vault list
カスタム親タグを適用してください az tag update az tag update

Azure CLI を使用して詳細な課金を構成する

設定したいボールトタイプを選択してください:

粒度レベルを指定したコンテナーを作成する

粒度レベルを指定してボールトを作成するには、以下のコマンドを実行します:

az backup vault create \
    --name "afs-vault" \
    --resource-group "backup-rg" \
    --location "westus" \
    --cost-management-granularity ProtectedItemLevel \
    --query "{name:name, granularity:properties.costManagementSettings.granularityLevel}"

出力例:

{
  "granularity": "ProtectedItemLevel",
  "name": "afs-vault"
}

既存のヴォールトの粒度を変更する

既存のボールトの粒度を変更するには、以下のコマンドを実行します:

az backup vault update \
    --name "afs-vault" \
    --resource-group "backup-rg" \
    --cost-management-granularity ProtectedItemWithParentTag \
    --query "properties.costManagementSettings.granularityLevel" -o tsv

出力例:

ProtectedItemWithParentTag

現在の粒度設定を見る

az backup vault showコマンドは新しいオプションを受け入れません。 粒度レベルを確認するには、JSON出力から properties.costManagementSettings.granularityLevel を読み取ってください。

ボールトに設定されたコスト管理の細分度レベルを取得するには、以下のコマンドを実行します:

az backup vault show \
    --name "afs-vault" \
    --resource-group "backup-rg" \
    --query "properties.costManagementSettings.granularityLevel" -o tsv

出力例:

VaultLevel

サブスクリプション内のすべてのRecovery Servicesのボールトを監査するには、以下のコマンドを実行します:

az backup vault list \
    --query "[].{Name:name, ResourceGroup:resourceGroup, Granularity:properties.costManagementSettings.granularityLevel}" \
    -o table

出力例:

Name       ResourceGroup    Granularity
---------  ---------------  --------------------------
afs-vault  backup-rg        VaultLevel
fin-vault  finance-rg       ProtectedItemLevel
hr-vault   hr-rg            ProtectedItemWithParentTag

タグレベルの粒度を設定する

タグレベルの粒度には、以下の独立した役割が含まれます:

  • ヴォールトにタグを適用する:標準の az tag コマンドグループを使います。 タグ付けにバックアップ専用コマンドは必要ありません。
  • タグレベルのコストグループ化を有効にする:ボールトの --cost-management-granularity パラメータを ProtectedItemWithParentTag に設定します。

シナリオ1:デフォルトの親タグを使う

バックアップサービスは自動的に ms-resource-parent タグを適用します。 Vault 上でタグレベルの細かさを有効にするだけで、手動のタグ付けは不要です。

デフォルトの親タグを使用するには、以下の手順に従ってください:

  1. Vault でタグ レベルのコスト グループ化を有効にしてください。

    az backup vault update \
        --name "afs-vault" \
        --resource-group "backup-rg" \
        --cost-management-granularity ProtectedItemWithParentTag
    
  2. 構成済みの設定を確認してください。

    az backup vault show \
        --name "afs-vault" \
        --resource-group "backup-rg" \
        --query "properties.costManagementSettings.granularityLevel" -o tsv
    

    出力例:

    ProtectedItemWithParentTag
    

注

デフォルトの ms-resource-parent タグは、ボールトや保護されたリソースの表示タグとしては適用されません。 Azure Backupは請求情報の一部としてタグをAzure Cost Managementに渡すため、az backup vault show --query tagsには表示されません。

シナリオ 2: カスタム親タグを使用する

カスタム親でコストをグループ化するには、まず cm-resource-parent タグをボールトに適用し、その値を親リソースのARMリソースIDに設定します。 次に、Vaultでタグレベルの粒度を有効にしてください。

Important

az tag update --operation Mergeを使って、ヴォールトの既存のタグを保持してください。 Replace操作はリソース上のすべてのタグを上書きします。

カスタムタグを使用するには、以下の手順に従ってください:

  1. Vaultにカスタム親タグを適用してください。 タグキーは cm-resource-parentで、タグ値は親リソースのARMリソースIDです。

    vaultId=$(az backup vault show \
        --name "afs-vault" \
        --resource-group "backup-rg" \
        --query id -o tsv)
    
    parentId=$(az storage account show \
        --name "financeparent" \
        --resource-group "storage-rg" \
        --query id -o tsv)
    
    az tag update \
        --resource-id "$vaultId" \
        --operation Merge \
        --tags "cm-resource-parent=$parentId" \
        --query "properties.tags" -o json
    

    出力例:

    {
      "cm-resource-parent": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/storage-rg/providers/Microsoft.Storage/storageAccounts/financeparent"
    }
    
  2. Vault でタグ レベルのコスト グループ化を有効にしてください。

    az backup vault update \
        --name "afs-vault" \
        --resource-group "backup-rg" \
        --cost-management-granularity ProtectedItemWithParentTag
    
  3. 構成済みの設定を確認してください。

    az backup vault show \
        --name "afs-vault" \
        --resource-group "backup-rg" \
        --query "properties.costManagementSettings.granularityLevel" -o tsv
    

    出力例:

    ProtectedItemWithParentTag
    

コスト分析でのバックアップ料金の検証

Azure Backupの詳細な課金を構成したら、選択した粒度を使用して、更新されたバックアップ料金が Cost Management に正しく反映されていることを確認します。

注

  • Cost Management の粒度を更新すると、選択した形式で新しい料金が表示されます。
  • 以前の料金は以前の形式を維持します。
  • アクティビティ ログは、コスト設定の変更をキャプチャします。
  • 更新された変更がコスト分析に表示されるまでに最大 2 時間かかる場合があります。

Cost Analysis でバックアップ料金を検証するには、次の手順に従います。

  1. Azure portalの「コスト管理+請求」に行き、「コスト管理>コスト分析」を選択してください。 スコープを ターゲットサブスクリプションに設定してください。

  2. [コスト分析] ウィンドウで、[リソースとして表示] を設定し、選択した粒度形式で新しいバックアップ料金が表示されるかどうかを確認します。

    次のスクリーンショットに示す価格は、例示目的のみです。

    Cost Analysis で選択した粒度形式のバックアップ料金を示すスクリーンショット。

詳細な課金に関する問題のトラブルシューティング

このセクションでは、Azure Backupの詳細な課金に関連する問題を解決するためのトラブルシューティング手順について説明します。

予想される料金は コスト分析には表示されません。

この問題を解決するには:

  1. ボールトの種類がRecovery ServicesのVaultかBackup Vaultかを確認してください。

  2. 粒度設定を保存したことを確認します。

  3. 更新操作が正常に完了したアクティビティ ログを確認します。

  4. 最大 2 時間待ち、 Cost Analysis を更新して変更を表示します。

  5. Cost Analysis で正しいサブスクリプションと時間範囲のスコープを選択していることを確認します。

Azure Backup の料金を見積もり、理解する。