Creare e gestire processi di copia del contenitore in Azure Cosmos DB (anteprima)

SI APPLICA A: Nosql Mongodb Cassandra

I processi di copia dei contenitori consentono di creare copie offline dei contenitori negli account Azure Cosmos DB.

Questo articolo descrive come creare, monitorare e gestire processi di copia del contenitore usando i comandi dell'interfaccia della riga di comando di Azure.

Prerequisiti

  • È possibile usare il portale Cloud Shell per eseguire i comandi di copia del contenitore. In alternativa, è possibile eseguire i comandi in locale; Assicurarsi di avere scaricato e installato l'interfaccia della riga di comando di Azure nel computer.
  • Attualmente, la copia del contenitore è supportata solo in queste aree. Assicurarsi che l'area di scrittura dell'account appartenga a questo elenco.
  • Installare l'estensione di anteprima di Azure Cosmos DB che contiene i comandi di copia del contenitore.
    az extension add --name cosmosdb-preview
    

Nota

Il processo di copia del contenitore tra account Azure Cosmos DB è disponibile solo per l'account API NoSQL. Il processo di copia del contenitore all'interno di un account Azure Cosmos DB è disponibile per gli account NoSQL, MongoDB e Cassandra API.

Creare un processo di copia del contenitore per copiare i dati all'interno di un account Azure Cosmos DB

Impostare le variabili della shell

Innanzitutto, impostare tutte le variabili usate da ogni singolo script.

$destinationRG = "<destination-resource-group-name>"
$sourceAccount = "<cosmos-source-account-name>"
$destinationAccount = "<cosmos-destination-account-name>"
$jobName = ""
$sourceDatabase = ""
$sourceContainer = ""
$destinationDatabase = ""
$destinationContainer = ""

Creare un processo di copia del contenitore

API per l'account NoSQL

Creare un processo per copiare un contenitore all'interno di un account API Di Azure Cosmos DB per NoSQL:

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

API per l'account Cassandra

Creare un processo per copiare un contenitore all'interno di un account DELL'API Azure Cosmos DB per Cassandra:

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 

API per l'account MongoDB

Creare un processo per copiare un contenitore all'interno di un account DELL'API Azure Cosmos DB per MongoDB:

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 

Nota

--job-name deve essere univoco per ogni processo all'interno di un account.

Creare un processo di copia del contenitore per copiare i dati tra gli account Azure Cosmos DB

Impostare le variabili della shell

Innanzitutto, impostare tutte le variabili usate da ogni singolo script.

$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 = ""

Assegnare l'autorizzazione di lettura

Durante la copia dei dati da un contenitore di un account al contenitore di un altro account. È necessario concedere l'accesso in lettura del contenitore di origine all'identità dell'account di destinazione per eseguire l'operazione di copia. Seguire questa procedura per assegnare l'autorizzazione di lettura necessaria all'account di destinazione.

Uso dell'identità gestita dal sistema

  1. Impostare il contesto della sottoscrizione di destinazione
    az account set --subscription $destinationSubId
    
  2. Aggiungere un'identità di sistema nell'account di destinazione
    $identityOutput = az cosmosdb identity assign -n $destinationAccount -g $destinationAccountRG
    $principalId = ($identityOutput | ConvertFrom-Json).principalId
    
  3. Impostare l'identità predefinita nell'account di destinazione
    az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity="SystemAssignedIdentity"
    
  4. Impostare il contesto della sottoscrizione di origine
    az account set --subscription $sourceSubId
    
  5. Aggiungere un'assegnazione di ruolo nell'account di origine
    # 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
    
  6. Reimpostare il contesto della sottoscrizione di destinazione
    az account set --subscription $destinationSubId
    

Uso dell'identità gestita assegnata dall'utente

  1. Assegnare una variabile di identità gestita assegnata dall'utente
    $userAssignedManagedIdentityResourceId = "<CompleteResourceIdOfUserAssignedManagedIdentity>"
    
  2. Impostare il contesto della sottoscrizione di destinazione
    az account set --subscription $destinationSubId
    
  3. Aggiungere un'identità gestita assegnata dall'utente nell'account di destinazione
    $identityOutput = az cosmosdb identity assign -n $destinationAccount -g $destinationAccountRG --identities $userAssignedManagedIdentityResourceId
    $principalId = ($identityOutput | ConvertFrom-Json).userAssignedIdentities.$userAssignedManagedIdentityResourceId.principalId
    
  4. Impostare l'identità predefinita nell'account di destinazione
    az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity=UserAssignedIdentity=$userAssignedManagedIdentityResourceId
    
  5. Impostare il contesto della sottoscrizione di origine
    az account set --subscription $sourceSubId
    
  6. Aggiungere un'assegnazione di ruolo nell'account di origine
    $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
    
  7. Reimpostare il contesto della sottoscrizione di destinazione
    az account set --subscription $destinationSubId
    

Creare un processo di copia del contenitore

API per l'account 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

Gestione dei processi di copia del contenitore

Monitorare lo stato di avanzamento di un processo di copia del contenitore

Visualizzare lo stato e lo stato di un processo di copia:

az cosmosdb copy show `
    --resource-group $destinationAccountRG `
    --account-name $destinationAccount `
    --job-name $jobName

Elencare tutti i processi di copia del contenitore creati in un account

Per elencare tutti i processi di copia del contenitore creati in un account:

az cosmosdb copy list `
    --resource-group $destinationAccountRG `
    --account-name $destinationAccount

Sospendere un processo di copia del contenitore

Per sospendere un processo di copia del contenitore in corso, è possibile usare il comando :

az cosmosdb copy pause `
    --resource-group $destinationAccountRG `
    --account-name $destinationAccount `
    --job-name $jobName

Riprendere un processo di copia del contenitore

Per riprendere un processo di copia del contenitore in corso, è possibile usare il comando :

az cosmosdb copy resume `
    --resource-group $destinationAccountRG `
    --account-name $destinationAccount `
    --job-name $jobName

Annullare un processo di copia del contenitore

Per annullare un processo di copia del contenitore in corso, è possibile usare il comando :

az cosmosdb copy cancel `
    --resource-group $destinationAccountRG `
    --account-name $destinationAccount `
    --job-name $jobName

Ottenere supporto per i problemi di copia del contenitore

Per i problemi relativi alla copia del contenitore, generare una nuova richiesta di supporto dal portale di Azure. Impostare il tipo di problema come sottotipo "Migrazione dati" e "Copia contenitore".

Passaggi successivi

  • Per altre informazioni sui processi di copia dei contenitori, vedere Processi di copia del contenitore.