Erstellen und Verwalten von Containerkopieraufträgen in Azure Cosmos DB (Vorschau)

GILT FÜR: NoSQL MongoDB Cassandra

Containerkopieraufträge helfen bei der Erstellung von Offlinekopien von Containern in Azure Cosmos DB-Konten.

In diesem Artikel wird beschrieben, wie Sie mithilfe von Azure CLI-Befehlen Aufträge für Containerkopieraufträge erstellen, überwachen und verwalten.

Voraussetzungen

  • Sie können Cloud Shell im Portal verwenden, um Containerkopierbefehle auszuführen. Alternativ können Sie die Befehle lokal ausführen. Stellen Sie sicher, dass Sie die Azure CLI auf Ihren Computer heruntergeladen und installiert haben.
  • Derzeit wird die Containerkopie nur in diesen Regionen unterstützt. Stellen Sie sicher, dass die Schreibregion Ihres Kontos in dieser Liste aufgeführt ist.
  • Installieren Sie die Azure Cosmos DB-Vorschauerweiterung, die die Containerkopierbefehle enthält.
    az extension add --name cosmosdb-preview
    

Hinweis

Der Containerkopierauftrag für Azure Cosmos DB-Konten ist nur für NoSQL-API-Konten verfügbar. Der Containerkopierauftrag in einem Azure Cosmos DB-Konto ist für NoSQL-, MongoDB- und Cassandra-API-Konten verfügbar.

Erstellen eines Containerkopierauftrags zum Kopieren von Daten in einem Azure Cosmos DB-Konto

Festlegen von Shellvariablen

Legen Sie zunächst alle Variablen fest, die jedes einzelne Skript verwendet.

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

Containerkopierauftrag erstellen

API für NoSQL-Konto

Erstellen Sie einen Auftrag zum Kopieren eines Containers innerhalb einer Azure Cosmos DB API für NoSQL-Kontos:

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 für Cassandra-Konto

Erstellen Sie einen Auftrag zum Kopieren eines Containers innerhalb einer Azure Cosmos DB-API für Cassandra-Kontos:

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 für MongoDB-Konto

Erstellen Sie einen Auftrag zum Kopieren eines Containers innerhalb eines Azure Cosmos DB-API für MongoDB-Kontos:

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 

Hinweis

--job-name sollte für jeden Auftrag innerhalb eines Kontos eindeutig sein.

Erstellen eines Containerkopierauftrags zum Kopieren von Daten in Azure Cosmos DB-Konten

Festlegen von Shellvariablen

Legen Sie zunächst alle Variablen fest, die jedes einzelne Skript verwendet.

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

Leseberechtigung zuweisen

Beim Kopieren von Daten aus dem Container eines Kontos in den Container eines anderen Kontos. Es ist erforderlich, den Lesezugriff des Quellcontainers auf die Identität des Zielkontos zu gewähren, um den Kopiervorgang auszuführen. Führen Sie die folgenden Schritte aus, um dem Zielkonto erforderliche Leseberechtigungen zuzuweisen.

Verwenden einer systemseitig verwalteten Identität

  1. Festlegen des Zielabonnementkontexts
    az account set --subscription $destinationSubId
    
  2. Hinzufügen der Systemidentität für das Zielkonto
    $identityOutput = az cosmosdb identity assign -n $destinationAccount -g $destinationAccountRG
    $principalId = ($identityOutput | ConvertFrom-Json).principalId
    
  3. Festlegen der Standardidentität für das Zielkonto
    az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity="SystemAssignedIdentity"
    
  4. Festlegen des Quellabonnementkontexts
    az account set --subscription $sourceSubId
    
  5. Hinzufügen von Rollenzuweisungen für das Quellkonto
    # 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. Zurücksetzen des Zielabonnementkontexts
    az account set --subscription $destinationSubId
    

Verwenden einer benutzerseitig zugewiesenen verwalteten Identität

  1. Zuweisen einer vom Benutzer zugewiesenen verwalteten Identitätsvariablen
    $userAssignedManagedIdentityResourceId = "<CompleteResourceIdOfUserAssignedManagedIdentity>"
    
  2. Festlegen des Zielabonnementkontexts
    az account set --subscription $destinationSubId
    
  3. Hinzufügen der vom Benutzer zugewiesenen verwalteten Identität für das Zielkonto
    $identityOutput = az cosmosdb identity assign -n $destinationAccount -g $destinationAccountRG --identities $userAssignedManagedIdentityResourceId
    $principalId = ($identityOutput | ConvertFrom-Json).userAssignedIdentities.$userAssignedManagedIdentityResourceId.principalId
    
  4. Festlegen der Standardidentität für das Zielkonto
    az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity=UserAssignedIdentity=$userAssignedManagedIdentityResourceId
    
  5. Festlegen des Quellabonnementkontexts
    az account set --subscription $sourceSubId
    
  6. Hinzufügen von Rollenzuweisungen für das Quellkonto
    $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. Zurücksetzen des Zielabonnementkontexts
    az account set --subscription $destinationSubId
    

Containerkopierauftrag erstellen

API für NoSQL-Konto

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

Verwalten von Containerkopieraufträgen

Überwachen des Fortschritts eines Containerkopierauftrags

Zeigen Sie Fortschritt und Status eines Kopierauftrags an:

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

Auflisten aller Containerkopieraufträge, die in einem Konto erstellt wurden

So listen Sie alle Containerkopieraufträge auf, die in einem Konto erstellt wurden:

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

Anhalten eines Containerkopierauftrags

Um einen laufenden Containerkopierauftrag anzuhalten, können Sie den folgenden Befehl verwenden:

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

Fortsetzen eines Containerkopierauftrags

Um einen angehaltenen Containerkopierauftrag fortzusetzen, können Sie den folgenden Befehl verwenden:

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

Abbrechen eines Containerkopierauftrags

Um einen laufenden Containerkopierauftrag abzubrechen, können Sie den folgenden Befehl verwenden:

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

Anfordern von Unterstützung bei Problemen mit dem Kopieren von Containern

Lösen Sie bei Problemen im Zusammenhang mit Containerkopien eine neue Supportanfrage aus dem Azure-Portal aus. Legen Sie den Problemtyp auf „Datenmigration“ und den Problemuntertyp auf „Containerkopie“ fest.

Nächste Schritte