Azure Cosmos DB でのコンテナー コピー ジョブの作成と管理 (プレビュー)
適用対象: NoSQL MongoDB Cassandra
コンテナー コピー ジョブは、Azure Cosmos DB アカウントにコンテナーのオフライン コピーを作成するのに役立ちます。
この記事では、Azure CLI コマンドを使用してコンテナー コピー ジョブを作成、監視、管理する方法について説明します。
前提条件
- ポータルの Cloud Shell を使用して、コンテナー コピー コマンドを実行できます。 コマンドをローカルで実行することもできます。Azure CLI がマシンにダウンロードおよびインストールされていることを確認してください。
- 現在、コンテナー コピーはこれらのリージョンでのみサポートされています。 アカウントの書き込みリージョンがこの一覧に含まれていることを確認してください。
- コンテナー コピー コマンドを含む Azure Cosmos DB プレビュー拡張機能をインストールします。
az extension add --name cosmosdb-preview
Note
Azure Cosmos DB アカウント間のコンテナー コピー ジョブは、NoSQL API アカウントでのみ使用できます。 Azure Cosmos DB アカウント内のコンテナー コピー ジョブは、NoSQL、MongoDB、Cassandra API アカウントで使用できます。
Azure Cosmos DB アカウント内にデータをコピーするコンテナー コピー ジョブを作成する
シェル変数を設定する
最初に、個々のスクリプトで使用されるすべての変数を設定します。
$destinationRG = "<destination-resource-group-name>"
$sourceAccount = "<cosmos-source-account-name>"
$destinationAccount = "<cosmos-destination-account-name>"
$jobName = ""
$sourceDatabase = ""
$sourceContainer = ""
$destinationDatabase = ""
$destinationContainer = ""
コンテナー コピー ジョブを作成する
NoSQL 用 API アカウント
Azure Cosmos DB の NoSQL 用 API アカウント内にコンテナーをコピーするジョブを作成します。
az cosmosdb copy create `
--resource-group $destinationRG `
--job-name $jobName `
--dest-account $destinationAccount `
--src-account $sourceAccount `
--dest-nosql database=$destinationDatabase container=$destinationContainer `
--src-nosql database=$sourceDatabase container=$sourceContainer
Cassandra 用 API アカウント
Azure Cosmos DB の Cassandra 用 API アカウント内にコンテナーをコピーするジョブを作成します。
az cosmosdb copy create `
--resource-group $destinationRG `
--job-name $jobName `
--dest-account $destinationAccount `
--src-account $sourceAccount `
--dest-cassandra keyspace=$destinationKeySpace table=$destinationTable `
--src-cassandra keyspace=$sourceKeySpace table=$sourceTable
MongoDB 用 API アカウント
Azure Cosmos DB の MongoDB 用 API アカウント内にコンテナーをコピーするジョブを作成します。
az cosmosdb copy create `
--resource-group $destinationRG `
--job-name $jobName `
--dest-account $destinationAccount `
--src-account $sourceAccount `
--dest-mongo database=$destinationDatabase collection=$destinationCollection `
--src-mongo database=$sourceDatabase collection=$sourceCollection
注意
--job-name
は、アカウント内のジョブごとに一意である必要があります。
Azure Cosmos DB アカウントでデータをコピーするコンテナー コピー ジョブを作成する
シェル変数を設定する
最初に、個々のスクリプトで使用されるすべての変数を設定します。
$sourceSubId = "<source-subscription-id>"
$destinationSubId = "<destination-subscription-id>"
$sourceAccountRG = "<source-resource-group-name>"
$destinationAccountRG = "<destination-resource-group-name>"
$sourceAccount = "<cosmos-source-account-name>"
$destinationAccount = "<cosmos-destination-account-name>"
$jobName = ""
$sourceDatabase = ""
$sourceContainer = ""
$destinationDatabase = ""
$destinationContainer = ""
読み取りアクセス許可を割り当てる
あるアカウントのコンテナーから別のアカウントのコンテナーにデータをコピーしている間。 コピー操作を実行するには、ソース コンテナーの読み取りアクセスをコピー先アカウントの ID に付与する必要があります。 次の手順に従って、必要な読み取りアクセス許可をコピー先アカウントに割り当てます。
システム マネージド ID の使用
- 変換先サービスのコンテキストを設定する
az account set --subscription $destinationSubId
- コピー先アカウントにシステム ID を追加する
$identityOutput = az cosmosdb identity assign -n $destinationAccount -g $destinationAccountRG $principalId = ($identityOutput | ConvertFrom-Json).principalId
- コピー先アカウントで既定の ID を設定する
az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity="SystemAssignedIdentity"
- 変換元サービスのコンテキストを設定する
az account set --subscription $sourceSubId
- コピー先アカウントにロールの割り当てを追加する
# Read-only access role $roleDefinitionId = "00000000-0000-0000-0000-000000000001" az cosmosdb sql role assignment create --account-name $sourceAccount --resource-group $sourceAccountRG --role-definition-id $roleDefinitionId --scope "/" --principal-id $principalId
- 変換先サービスのコンテキストをリセットする
az account set --subscription $destinationSubId
ユーザー割り当てマネージド ID の使用
- ユーザー割り当てマネージド ID の変数を割り当てる
$userAssignedManagedIdentityResourceId = "<CompleteResourceIdOfUserAssignedManagedIdentity>"
- 変換先サービスのコンテキストを設定する
az account set --subscription $destinationSubId
- コピー先アカウントでユーザー割り当てマネージド ID を追加する
$identityOutput = az cosmosdb identity assign -n $destinationAccount -g $destinationAccountRG --identities $userAssignedManagedIdentityResourceId $principalId = ($identityOutput | ConvertFrom-Json).userAssignedIdentities.$userAssignedManagedIdentityResourceId.principalId
- コピー先アカウントで既定の ID を設定する
az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity=UserAssignedIdentity=$userAssignedManagedIdentityResourceId
- 変換元サービスのコンテキストを設定する
az account set --subscription $sourceSubId
- コピー先アカウントにロールの割り当てを追加する
$roleDefinitionId = "00000000-0000-0000-0000-000000000001" # Read-only access role az cosmosdb sql role assignment create --account-name $sourceAccount --resource-group $sourceAccountRG --role-definition-id $roleDefinitionId --scope "/" --principal-id $principalId
- 変換先サービスのコンテキストをリセットする
az account set --subscription $destinationSubId
コンテナー コピー ジョブを作成する
NoSQL 用 API アカウント
az cosmosdb copy create `
--resource-group $destinationAccountRG `
--job-name $jobName `
--dest-account $destinationAccount `
--src-account $sourceAccount `
--dest-nosql database=$destinationDatabase container=$destinationContainer `
--src-nosql database=$sourceDatabase container=$sourceContainer
コンテナー コピー ジョブの管理
コンテナー コピー ジョブの進行状況を監視する
コピー ジョブの進行状況と状態を表示します。
az cosmosdb copy show `
--resource-group $destinationAccountRG `
--account-name $destinationAccount `
--job-name $jobName
アカウントで作成されたすべてのコンテナー コピー ジョブを一覧表示する
アカウントで作成されたすべてのコンテナー コピー ジョブを一覧表示するには:
az cosmosdb copy list `
--resource-group $destinationAccountRG `
--account-name $destinationAccount
コンテナー コピー ジョブを一時停止する
進行中のコンテナー コピー ジョブを一時停止するには、次のコマンドを使用できます。
az cosmosdb copy pause `
--resource-group $destinationAccountRG `
--account-name $destinationAccount `
--job-name $jobName
コンテナー コピー ジョブを再開する
進行中のコンテナー コピー ジョブを再開するには、次のコマンドを使用できます。
az cosmosdb copy resume `
--resource-group $destinationAccountRG `
--account-name $destinationAccount `
--job-name $jobName
コンテナー コピー ジョブをキャンセルする
進行中のコンテナー コピー ジョブをキャンセルするには、次のコマンドを使用できます。
az cosmosdb copy cancel `
--resource-group $destinationAccountRG `
--account-name $destinationAccount `
--job-name $jobName
コンテナー コピーの問題についてサポートを受ける
コンテナー コピーに関する問題については、Azure portal から新しいサポート リクエストを作成してください。 [問題の種類] を [データ移行] に、[問題のサブタイプ] を [コンテナー コピー] に設定します。
次のステップ
- コンテナー コピー ジョブの詳細については、コンテナー コピー ジョブに関するページを参照してください。