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
- Establecimiento del contexto de la suscripción de destino
az account set --subscription $destinationSubId
- 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
- Establecimiento de la identidad predeterminada en la cuenta de destino
az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity="SystemAssignedIdentity"
- Establecimiento del contexto de la suscripción de origen
az account set --subscription $sourceSubId
- 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
- Restablecer el contexto de la suscripción de destino
az account set --subscription $destinationSubId
Uso de una identidad administrada asignada por el usuario
- Asignar variable de identidad administrada asignada por el usuario
$userAssignedManagedIdentityResourceId = "<CompleteResourceIdOfUserAssignedManagedIdentity>"
- Establecimiento del contexto de la suscripción de destino
az account set --subscription $destinationSubId
- 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
- Establecimiento de la identidad predeterminada en la cuenta de destino
az cosmosdb update -n $destinationAccount -g $destinationAccountRG --default-identity=UserAssignedIdentity=$userAssignedManagedIdentityResourceId
- Establecimiento del contexto de la suscripción de origen
az account set --subscription $sourceSubId
- 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
- 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
- Para más información sobre los trabajos de copia de contenedores, consulte Trabajos de copia de contenedores.