Creación y administración de trabajos de copia de contenedores dentro de la cuenta en Azure Cosmos DB (versión preliminar)

SE APLICA A: NoSQL MongoDB Cassandra

Los trabajos de copia de contenedores ayudan a crear copias sin conexión de contenedores dentro de una cuenta de Azure Cosmos DB.

En este artículo se describe cómo crear, supervisar y administrar trabajos de copia de contenedores dentro de la cuenta mediante comandos de la CLI de Azure.

Requisitos previos

  • Puede usar el portal Cloud Shell para ejecutar los comandos de copia de contenedor. Como alternativa, puede ejecutar los comandos localmente. Asegúrese de que tiene la CLI de Azure descargada e instalada en su equipo.
  • Actualmente, la copia de contenedor solo se admite en estas regiones. Asegúrese de que la región de escritura de la cuenta pertenece a esta lista.
  • Instale la extensión de versión preliminar de Azure Cosmos DB que contiene los comandos de copia del contenedor.
    az extension add --name cosmosdb-preview
    

Nota:

El trabajo de copia de contenedor en las cuentas de Azure Cosmos DB solo está disponible para la cuenta de API de NoSQL. El trabajo de copia de contenedor dentro de una cuenta de Azure Cosmos DB está disponible para las cuentas de NoSQL, MongoDB y Cassandra API.

Creación de un trabajo de copia de contenedor para copiar datos dentro de una cuenta de Azure Cosmos DB

Establecimiento de las variables del shell

En primer lugar, establezca todas las variables que usa cada script individual.

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

Creación de un trabajo de copia de contenedor

Cuenta de API para NoSQL

Cree un trabajo para copiar un contenedor dentro de una API para la cuenta de Azure Cosmos DB for 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

Cuenta de API para Cassandra

Cree un trabajo para copiar un contenedor dentro de la API para una cuenta de Azure Cosmos DB for 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 

Cuenta de API para MongoDB

Cree un trabajo para copiar un contenedor dentro de una cuenta de API for MongoDB para 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 

Nota:

--job-name debe ser único para cada trabajo dentro de una cuenta.

Creación de un trabajo de copia de contenedor para copiar datos en cuentas de Azure Cosmos DB

Establecimiento de las variables del shell

En primer lugar, establezca todas las variables que usa cada script individual.

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

Asignación de permisos de lectura

Al copiar datos desde el contenedor de una cuenta al contenedor de otra cuenta. Es necesario conceder acceso de lectura del contenedor de origen a la identidad de la cuenta de destino para realizar la operación de copia. Siga los pasos que se indican a continuación para asignar el permiso de lectura necesario a la cuenta de destino.

Identidad administrada por el sistema

  1. Establecimiento del contexto de la suscripción de destino
    az account set --subscription $destinationSubId
    
  2. Añadir la identidad del sistema en la cuenta de destino
    $identityOutput = az cosmosdb identity assign -n $destinationAccount -g $destinationAccountRG
    $principalId = ($identityOutput | ConvertFrom-Json).principalId
    
  3. Establecimiento de la identidad predeterminada en la cuenta de destino
    az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity="SystemAssignedIdentity"
    
  4. Establecimiento del contexto de la suscripción de origen
    az account set --subscription $sourceSubId
    
  5. Agregar asignación de roles en la cuenta de origen
    # 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. Restablecer el contexto de la suscripción de destino
    az account set --subscription $destinationSubId
    

Uso de una identidad administrada asignada por el usuario

  1. Asignar variable de identidad administrada asignada por el usuario
    $userAssignedManagedIdentityResourceId = "<CompleteResourceIdOfUserAssignedManagedIdentity>"
    
  2. Establecimiento del contexto de la suscripción de destino
    az account set --subscription $destinationSubId
    
  3. Adición de una identidad administrada asignada por el usuario en la cuenta de destino
    $identityOutput = az cosmosdb identity assign -n $destinationAccount -g $destinationAccountRG --identities $userAssignedManagedIdentityResourceId
    $principalId = ($identityOutput | ConvertFrom-Json).userAssignedIdentities.$userAssignedManagedIdentityResourceId.principalId
    
  4. Establecimiento de la identidad predeterminada en la cuenta de destino
    az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity=UserAssignedIdentity=$userAssignedManagedIdentityResourceId
    
  5. Establecimiento del contexto de la suscripción de origen
    az account set --subscription $sourceSubId
    
  6. Agregar asignación de roles en la cuenta de origen
    $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. Restablecer el contexto de la suscripción de destino
    az account set --subscription $destinationSubId
    

Creación de un trabajo de copia de contenedor

Cuenta de API para 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

Administración de trabajos de copia de contenedor

Supervisión del progreso de un trabajo de copia de contenedores

Vea el progreso y el estado de un trabajo de copia:

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

Enumeración de todos los trabajos de copia de contenedores creados en una cuenta

Para enumerar todos los trabajos de copia de contenedores creados en una cuenta:

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

Puesta en pausa de un trabajo de copia de contenedores

Para pausar un trabajo de copia de contenedores en curso, puede usar el comando:

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

Reanudación de un trabajo de copia de contenedores

Para reanudar un trabajo de copia de contenedores en curso, puede usar el comando:

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

Reanudación de un trabajo de copia de contenedores

Para cancelar un trabajo de copia de contenedor en curso, puede usar el comando:

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

Soporte técnico para los problemas de copia de contenedor

Para problemas relacionados con la Copia del contenedor, genere una Nueva solicitud de soporte técnico desde Azure Portal. Establezca el Tipo de problema como “Migración de datos” y el Subtipo de problema como “Copia del contenedor”.

Pasos siguientes