Share via


Azure CLI を使用してストレージ アカウント内の Azure BLOB をバックアップする

この記事では、Azure CLI を使用して Azure Blob をバックアップする方法について説明します。

重要

Azure BLOB の CLI によるバックアップと復元のサポートはプレビュー段階であり、Az 2.15.0 バージョン以降で拡張機能として提供されます。 この拡張機能は、az dataprotection コマンドを実行すると自動的にインストールされます。 拡張機能の詳細を参照してください

この記事では、次の方法について学習します。

  • 開始する前に

  • バックアップ コンテナーの作成

  • バックアップ ポリシーの作成

  • Azure Blob のバックアップ構成

  • オンデマンド バックアップ ジョブを実行する

Azure BLOB の使用可能なリージョン、サポートされるシナリオ、制限事項については、サポート マトリックスを参照してください。

開始する前に

始める前に前提条件サポート マトリックスに関する記事を参照してください。

バックアップ コンテナーの作成

バックアップ コンテナーは、Azure Database for PostgreSQL サーバー、ストレージ アカウントの BLOB、Azure ディスクなど、Azure Backup によってサポートされるさまざまな新しいワークロードのバックアップ データを格納する Azure のストレージ エンティティです。 バックアップ コンテナーを使用すると、管理オーバーヘッドを最小限に抑えながら、バックアップ データを簡単に整理できます。 バックアップ コンテナーは、Azure の Azure Resource Manager モデルに基づいており、強化されたバックアップ データの保護機能を提供します。

バックアップ コンテナーを作成する前に、コンテナー内のデータのストレージ冗長を選択します。 次に、そのストレージ冗長と場所を使用したバックアップ コンテナーの作成に進みます。 この記事では、westus リージョンのリソース グループ testBkpVaultRG に、バックアップ コンテナー TestBkpVault を作成します。 バックアップ コンテナーを作成するには、az dataprotection vault create コマンドを使用します。 詳細については、「バックアップ コンテナーの作成」を参照してください。

az dataprotection backup-vault create -g testBkpVaultRG --vault-name TestBkpVault -l westus --type SystemAssigned --storage-settings datastore-type="VaultStore" type="LocallyRedundant"

{
  "eTag": null,
  "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourcegroups/testBkpVaultRG/providers/Microsoft.DataProtection/BackupVaults/TestBkpVault",
  "identity": {
    "principalId": "2ca1d5f7-38b3-4b61-aa45-8147d7e0edbc",
    "tenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "type": "SystemAssigned"
  },
  "location": "westus",
  "name": "TestBkpVault",
  "properties": {
    "provisioningState": "Succeeded",
    "storageSettings": [
      {
        "datastoreType": "VaultStore",
        "type": "LocallyRedundant"
      }
    ]
  },
  "resourceGroup": "testBkpVaultRG",
  "systemData": null,
  "tags": null,
  "type": "Microsoft.DataProtection/backupVaults"
}

重要

コンテナーのバックアップ ストレージの冗長性が表示されますが、冗長性は BLOB の運用バックアップには適用されません。 これは、バックアップが本質的にローカルであり、バックアップコンテナーにデータが格納されていないためです。 ここでのバックアップ コンテナーは、ストレージ アカウント内のブロック BLOB の保護を管理するために役立つ管理エンティティです。

コンテナーを作成した後は、ストレージアカウントの Azure Blob を保護するバックアップポリシーを作成してみましょう。

バックアップ ポリシーの作成

重要

ポリシーの作成と Azure BLOB のバックアップの構成に進む前に、このセクションを参照してください。

Azure Blob バックアップのバックアップ ポリシーの内部構成要素を理解するには、az dataprotection backup-policy get-default-policy-template コマンドを使用してポリシー テンプレートを取得します。 このコマンドにより、指定されたデータソースの種類の既定のポリシー テンプレートが返されます。 このポリシー テンプレートを使用して、新しいポリシーを作成します。

az dataprotection backup-policy get-default-policy-template --datasource-type AzureBlob

{
  "datasourceTypes": [
    "Microsoft.Storage/storageAccounts/blobServices"
  ],
  "name": "BlobPolicy1",
  "objectType": "BackupPolicy",
  "policyRules": [
    {
      "isDefault": true,
      "lifecycles": [
        {
          "deleteAfter": {
            "duration": "P30D",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "OperationalStore",
            "objectType": "DataStoreInfoBase"
          }
        }
      ],
      "name": "Default",
      "objectType": "AzureRetentionRule"
    }
  ]
}

このポリシー テンプレートは、ライフサイクル (バックアップをいつ削除、コピー、移動するかを決定) のみで構成されます。 BLOB の運用バックアップは継続的に行われるため、バックアップを実行するスケジュールは必要ありません。

"policyRules": [
    {
      "isDefault": true,
      "lifecycles": [
        {
          "deleteAfter": {
            "duration": "P30D",
            "objectType": "AbsoluteDeleteOption"
          },
          "sourceDataStore": {
            "dataStoreType": "OperationalStore",
            "objectType": "DataStoreInfoBase"
          }
        }
      ],
      "name": "Default",
      "objectType": "AzureRetentionRule"
    }
  ]

Note

長期間を対象にした復元の場合、復元操作の完了に時間がかかることがあります。 また、一連のデータの復元にかかる時間は、復元期間中に行われた書き込み操作と削除操作の数に基づきます。 たとえば、100 万オブジェクトを持つアカウントで毎日 3,000 オブジェクトが追加され、毎日 1,000 オブジェクトが削除される場合、過去 30 日間のポイントまで復元するのに約 2 時間必要になります。

この変更率のアカウントでは、過去 90 日以上の保有期間と復元は推奨されません。

ポリシーの JSON に必要な値をすべて設定したら、az dataprotection backup-policy create コマンドを使用したポリシー オブジェクトからの新しいポリシーの作成に進みます。

az dataprotection backup-policy get-default-policy-template --datasource-type AzureBlob > policy.json
az dataprotection backup-policy create -g testBkpVaultRG --vault-name TestBkpVault -n BlobBackup-Policy --policy policy.json

{
    "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/TestBkpVault/backupPolicies/BlobBackup-Policy",
    "name": "BlobBackup-Policy",
    "properties": {
      "datasourceTypes": [
        "Microsoft.Storage/storageAccounts/blobServices"
      ],
      "objectType": "BackupPolicy",
      "policyRules": [
        {
          "isDefault": true,
          "lifecycles": [
            {
              "deleteAfter": {
                "duration": "P2D",
                "objectType": "AbsoluteDeleteOption"
              },
              "sourceDataStore": {
                "dataStoreType": "OperationalStore",
                "objectType": "DataStoreInfoBase"
              },
              "targetDataStoreCopySettings": []
            }
          ],
          "name": "Default",
          "objectType": "AzureRetentionRule"
        }
      ]
    },
    "resourceGroup": "testBkpVaultRG",
    "systemData": null,
    "type": "Microsoft.DataProtection/backupVaults/backupPolicies"
  }

バックアップの構成

コンテナーとポリシーを作成したら、ストレージ アカウント内のすべての Azure BLOB を保護するためにユーザーが考慮しなければならない重要なポイントが 2 つあります。

関連する主なエンティティ

保護する BLOB が含まれるストレージ アカウント

保護する BLOB が含まれるストレージ アカウントの Azure Resource Manager ID を取得します。 これは、ストレージ アカウントの識別子として機能します。 ここでは、東南アジア地域に存在する別のサブスクリプションで、リソース グループ blobrg の下に CLITestSA という名前のストレージ アカウントがある場合を例にします。

"/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/blobrg/providers/Microsoft.Storage/storageAccounts/CLITestSA"

バックアップ資格情報コンテナー

バックアップ コンテナーからストレージ アカウント内に存在する BLOB のバックアップを有効にするには、ストレージ アカウントに対するアクセス許可が付与されている必要があります。 コンテナーのシステム割り当てマネージド ID は、そのようなアクセス許可を割り当てるために使用されます。

アクセス許可の割り当て

コンテナー (コンテナー MSI と表示) と関連するストレージ アカウントに、RBAC 経由でいくつかのアクセス許可を割り当てる必要があります。 これらは、ポータルまたは PowerShell を使用して実行できます。 すべての関連するアクセス許可については、こちらをご覧ください。

要求を準備する

関連するすべてのアクセス許可が設定されたら、2 つの手順でバックアップの構成が行われます。 まず、az dataprotection backup-instance initialize コマンドを使用して、関連するコンテナー、ポリシー、ストレージ アカウントを使用し、関連する要求を準備します。 次に、az dataprotection backup-instance create コマンドを使用してディスクを保護する要求を送信します。

az dataprotection backup-instance initialize --datasource-type AzureBlob  -l southeastasia --policy-id "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/TestBkpVault/backupPolicies/BlobBackup-Policy" --datasource-id "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/blobrg/providers/Microsoft.Storage/storageAccounts/CLITestSA" > backup_instance.json
az dataprotection backup-instance create -g testBkpVaultRG --vault-name TestBkpVault --backup-instance backup_instance.json

{
    "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/TestBkpVault/backupInstances/CLITestSA-CLITestSA-c3a2a98c-def8-44db-bd1d-ff6bc86ed036",
    "name": "CLITestSA-CLITestSA-c3a2a98c-def8-44db-bd1d-ff6bc86ed036",
    "properties": {
      "currentProtectionState": "ProtectionConfigured",
      "dataSourceInfo": {
        "datasourceType": "Microsoft.Storage/storageAccounts/blobServices",
        "objectType": "Datasource",
        "resourceId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/blobrg/providers/Microsoft.Storage/storageAccounts/CLITestSA",
        "resourceLocation": "southeastasia",
        "resourceName": "CLITestSA",
        "resourceType": "Microsoft.Storage/storageAccounts",
        "resourceUri": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx/resourcegroups/blobrg/providers/Microsoft.Storage/storageAccounts/CLITestSA"
      },
      "dataSourceSetInfo": null,
      "friendlyName": "CLITestSA",
      "objectType": "BackupInstance",
      "policyInfo": {
        "policyId": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testBkpVaultRG/providers/Microsoft.DataProtection/backupVaults/TestBkpVault/backupPolicies/BlobBackup-Policy",
        "policyParameters": {
          "dataStoreParametersList": [
            {
              "dataStoreType": "OperationalStore",
              "objectType": "AzureOperationalStoreParameters",
              "resourceGroupId": ""
            }
          ]
        },
        "policyVersion": ""
      },
      "protectionErrorDetails": null,
      "protectionStatus": {
        "errorDetails": null,
        "status": "ProtectionConfigured"
      },
      "provisioningState": "Succeeded"
    },
    "resourceGroup": "testBkpVaultRG",
    "systemData": null,
    "type": "Microsoft.DataProtection/backupVaults/backupInstances"
  }

重要

BLOB のバックアップ用にストレージ アカウントを構成すると、変更フィードや削除ロックなど、いくつかの機能が影響を受けます。 詳細については、こちらを参照してください

次のステップ

Azure CLI を使用した Azure Blob の復元