Créer et gérer des travaux de copie de conteneur dans Azure Cosmos DB (préversion)
S’APPLIQUE À : NoSQL MongoDB Cassandra
Les travaux de copie de conteneur permettent de créer des copies hors connexion de conteneurs dans des comptes Azure Cosmos DB.
Cet article explique comment créer, superviser et gérer des travaux de copie de conteneur à l’aide de commandes Azure CLI.
Prérequis
- Vous pouvez utiliser le portail Cloud Shell pour exécuter des commandes de copie de conteneur. Vous pouvez également exécuter les commandes localement. Vérifiez que vous avez téléchargé et installé Azure CLI sur votre machine.
- La copie de conteneur est prise en charge uniquement dans ces régions. Vérifiez que la région d’écriture de votre compte figure dans cette liste.
- Installez l’extension de préversion Azure Cosmos DB qui contient les commandes de copie de conteneur.
az extension add --name cosmosdb-preview
Remarque
Le travail de copie de conteneur sur les comptes Azure Cosmos DB est disponible uniquement pour un compte d’API NoSQL. Le travail de copie de conteneur dans un compte Azure Cosmos DB est disponible pour les comptes d’API NoSQL, MongoDB et Cassandra.
Créer un travail de copie de conteneur pour copier des données dans un compte Azure Cosmos DB
Définir des variables shell
Tout d’abord, définissez toutes les variables que chaque script individuel utilise.
$destinationRG = "<destination-resource-group-name>"
$sourceAccount = "<cosmos-source-account-name>"
$destinationAccount = "<cosmos-destination-account-name>"
$jobName = ""
$sourceDatabase = ""
$sourceContainer = ""
$destinationDatabase = ""
$destinationContainer = ""
Créer un travail de copie de conteneur
Compte d’API pour NoSQL
Créer un travail pour copier un conteneur dans un compte d’API NoSQL Azure Cosmos DB :
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
Compte d’API pour Cassandra
Créer un travail pour copier un conteneur dans un compte d’API Cassandra Azure Cosmos DB :
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
Compte d’API pour MongoDB
Créer un travail pour copier un conteneur dans un compte d’API MongoDB Azure Cosmos DB :
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
Notes
--job-name
doit être unique pour chaque travail au sein d’un compte.
Créer un travail de copie de conteneur pour copier des données entre des comptes Azure Cosmos DB
Définir des variables shell
Tout d’abord, définissez toutes les variables que chaque script individuel utilise.
$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 = ""
Attribuer l’autorisation de lecture
Lors de la copie de données du conteneur d’un compte vers le conteneur d’un autre compte. Il est nécessaire d’accorder l’accès en lecture du conteneur source à l’identité du compte de destination pour effectuer l’opération de copie. Suivez les étapes ci-dessous pour attribuer l’autorisation de lecture requise au compte de destination.
Utilisation d’une identité managée par le système
- Définir le contexte de l’abonnement de destination
az account set --subscription $destinationSubId
- Ajouter une identité système sur le compte de destination
$identityOutput = az cosmosdb identity assign -n $destinationAccount -g $destinationAccountRG $principalId = ($identityOutput | ConvertFrom-Json).principalId
- Définir l’identité par défaut sur le compte de destination
az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity="SystemAssignedIdentity"
- Définir le contexte de l’abonnement source
az account set --subscription $sourceSubId
- Ajouter une attribution de rôle à un compte d’utilisateur
# 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
- Réinitialiser le contexte de l’abonnement de destination
az account set --subscription $destinationSubId
Utilisation d’une identité managée affectée par l’utilisateur
- Attribuer une variable d’identité managée affectée par l’utilisateur
$userAssignedManagedIdentityResourceId = "<CompleteResourceIdOfUserAssignedManagedIdentity>"
- Définir le contexte de l’abonnement de destination
az account set --subscription $destinationSubId
- Ajouter une identité managée affectée par l’utilisateur sur le compte de destination
$identityOutput = az cosmosdb identity assign -n $destinationAccount -g $destinationAccountRG --identities $userAssignedManagedIdentityResourceId $principalId = ($identityOutput | ConvertFrom-Json).userAssignedIdentities.$userAssignedManagedIdentityResourceId.principalId
- Définir l’identité par défaut sur le compte de destination
az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity=UserAssignedIdentity=$userAssignedManagedIdentityResourceId
- Définir le contexte de l’abonnement source
az account set --subscription $sourceSubId
- Ajouter une attribution de rôle à un compte d’utilisateur
$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
- Réinitialiser le contexte de l’abonnement de destination
az account set --subscription $destinationSubId
Créer un travail de copie de conteneur
Compte d’API pour NoSQL
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
Gestion des travaux de copie de conteneur
Superviser la progression d’un travail de copie de conteneur
Afficher la progression et l’état d’un travail de copie :
az cosmosdb copy show `
--resource-group $destinationAccountRG `
--account-name $destinationAccount `
--job-name $jobName
Lister tous les travaux de copie de conteneur créés dans un compte
Pour lister tous les travaux de copie de conteneur créés dans un compte :
az cosmosdb copy list `
--resource-group $destinationAccountRG `
--account-name $destinationAccount
Suspendre un travail de copie de conteneur
Pour suspendre un travail de copie de conteneur en cours, vous pouvez utiliser la commande suivante :
az cosmosdb copy pause `
--resource-group $destinationAccountRG `
--account-name $destinationAccount `
--job-name $jobName
Reprendre un travail de copie de conteneur
Pour rependre un travail de copie de conteneur en cours, vous pouvez utiliser la commande suivante :
az cosmosdb copy resume `
--resource-group $destinationAccountRG `
--account-name $destinationAccount `
--job-name $jobName
Annuler un travail de copie de conteneur
Pour annuler un travail de copie de conteneur en cours, vous pouvez utiliser la commande suivante :
az cosmosdb copy cancel `
--resource-group $destinationAccountRG `
--account-name $destinationAccount `
--job-name $jobName
Obtenir de l’aide pour les problèmes de copie de conteneur
Pour les problèmes relatifs à la copie de conteneur, envoyez une nouvelle demande de support à partir du portail Azure. Choisissez le type de problème « Migration de données » et le sous-type de problème « Copie de conteneur ».
Étapes suivantes
- Pour plus d’informations sur les travaux de copie de conteneur, consultez l’article Travaux de copie de conteneur.