Esta página apresenta uma vista geral da replicação entre contentores e instruções sobre como usar a funcionalidade.
Vista geral da replicação entre contentores
Em alguns casos, pode querer copiar dados de um contentor do Cloud Storage para outro. A replicação entre contentores copia de forma assíncrona objetos novos e atualizados de um contentor de origem para um contentor de destino.
A replicação entre contentores difere da replicação predefinida e da replicação turbo, uma vez que os seus dados existem em dois contentores, cada um com as suas próprias configurações, como a localização de armazenamento, a encriptação, o acesso e a classe de armazenamento. Como resultado, oferece recuperação e disponibilidade de dados, mas também é adequado para:
- Soberania dos dados: mantenha os dados em regiões geograficamente distantes.
- Mantenha versões de desenvolvimento e produção separadas: crie contentores e espaços de nomes distintos para que o desenvolvimento não afete a sua carga de trabalho de produção.
- Partilhar dados: replique dados para um contentor pertencente a um fornecedor ou parceiro.
- Agregação de dados: combine dados de diferentes contentores num único contentor para executar cargas de trabalho de estatísticas.
- Faça a gestão dos custos, da segurança e da conformidade: mantenha os seus dados sob diferentes proprietários, classes de armazenamento e períodos de retenção.
A replicação entre contentores usa o Serviço de transferência de armazenamento para replicar objetos e o Pub/Sub para receber alertas de alterações aos contentores de origem e de destino. A replicação entre contentores pode ser ativada em novos contentores que criar e em contentores existentes. A maioria dos objetos pode ser replicada em minutos, enquanto os objetos com mais de 1 GiB podem demorar várias horas.
Limitações
A replicação entre contentores não é suportada para contentores de espaço de nomes hierárquicos.
As eliminações de objetos no contentor de origem não são replicadas para o contentor de destino.
As configurações do ciclo de vida dos objetos não são replicadas.
Quando os objetos são replicados, os metadados de data/hora (por exemplo,
timeCreatedetimeUpdated) não são preservados. Consulte o artigo Transferências entre contentores do Cloud Storage para ver detalhes sobre a preservação de metadados.Uma vez que a replicação entre contentores pode ser usada para replicar dados entre contentores localizados em qualquer localização do Google Cloud, o desempenho da replicação entre contentores varia consoante as localizações selecionadas. Consequentemente, a replicação entre contentores não oferece um objetivo de ponto de recuperação (OPR).
Os objetos que já estão no contentor quando é criado um trabalho de replicação não são replicados automaticamente. Apenas os objetos novos e atualizados são replicados. Para replicar objetos existentes, crie uma tarefa de transferência única do Serviço de transferência de armazenamento do seu contentor existente para o novo contentor. Consulte o artigo Crie transferências para ver instruções.
Antes de começar
Antes de começar, conclua os seguintes passos.
Ative a API Storage Transfer Service
Se ainda não o fez, ative a API Storage Transfer Service.
Obtenha as funções necessárias
Para obter as autorizações de que
precisa para usar a replicação entre contentores,
peça ao seu administrador para lhe conceder a
função do IAM utilizador da Transferência de armazenamento (roles/storagetransfer.user)
no contentor ou no projeto de origem.
Esta função predefinida contém as autorizações necessárias para usar a replicação entre contentores. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:
Autorizações necessárias
São necessárias as seguintes autorizações para usar a replicação entre contentores:
-
storagetransfer.jobs.create -
storagetransfer.jobs.delete -
storagetransfer.jobs.get -
storagetransfer.jobs.list -
storagetransfer.jobs.run -
storagetransfer.jobs.update
Para obter instruções sobre como conceder funções em contentores, consulte o artigo Use o IAM com contentores. Para ver instruções sobre como conceder funções em projetos, consulte o artigo Faça a gestão do acesso a projetos.
Conceda as funções necessárias
A replicação entre contentores usa o serviço de transferência de armazenamento para replicar objetos do contentor de origem para o contentor de destino e o Pub/Sub para receber notificações de alterações ao contentor de origem.
Para que a replicação entre contentores possa usar estes serviços, tem de conceder as autorizações necessárias à conta de serviço usada pelo serviço de transferência de armazenamento para replicar dados, bem como ao agente do serviço usado pelo Pub/Sub para escrever notificações.
Conceda as funções necessárias para o Serviço de transferência de armazenamento
As autorizações necessárias para replicar dados através do Storage Transfer Service podem ser concedidas a uma de duas contas de serviço. Uma das seguintes opções:
- O agente do serviço do Serviço de transferência de armazenamento, que é criado automaticamente e
gerido pela Google. O endereço de email deste agente de serviço segue o formato de
nomenclatura
project-PROJECT_NUMBER@storage-transfer-service.s3ns-system.iam.gserviceaccount.com. Pode obter o endereço de email do agente de serviço do Serviço de transferência de armazenamento através da API Serviço de transferência de armazenamento.googleServiceAccounts.get
Ou:
Uma conta de serviço gerida pelo utilizador. O endereço de email desta conta de serviço segue o formato de nomenclatura
SERVICE_ACCOUNT_NAME@PROJECT_ID.s3ns.iam.gserviceaccount.com. Pode criar a sua própria conta de serviço e conceder as autorizações necessárias para replicar os dados.Para obter instruções sobre como usar uma conta de serviço gerida pelo utilizador com o Serviço de transferência de armazenamento, consulte o artigo Delegue autorizações do agente do serviço a uma conta de serviço gerida pelo utilizador. São necessárias autorizações adicionais além das que constam nas listas seguintes. Em particular, tem de conceder ao agente de serviço acesso à conta de serviço gerida pelo utilizador atribuindo-lhe a função de criador de tokens da conta de serviço (
roles/iam.serviceAccountTokenCreator). Consulte o artigo Conceda acesso ao agente de serviço.
O agente do serviço ou a conta de serviço do utilizador do serviço de transferência de armazenamento precisa das seguintes autorizações para replicar os seus objetos e configurar notificações do Pub/Sub para o seu contentor de origem:
Autorizações necessárias
As seguintes autorizações têm de ser concedidas no projeto de origem:
pubsub.topics.createpubsub.subscriptions.createpubsub.subscriptions.consume
As seguintes autorizações têm de ser concedidas no contentor de origem:
storage.buckets.getstorage.buckets.updatestorage.objects.get
As seguintes autorizações têm de ser concedidas no contentor de destino:
storage.buckets.getstorage.objects.createstorage.objects.get
Estas autorizações podem ser concedidas através de funções personalizadas ou concedendo todas as seguintes funções predefinidas:
- Função Editor do Pub/Sub (
roles/pubsub.editor) no projeto de origem - Funções de proprietário de contentores antigos do Storage (
roles/storage.legacyBucketOwner) e visualizador de objetos do Storage (roles/storage.objectViewer) no contentor de origem - Funções Storage Legacy Bucket Writer (
roles/storage.legacyBucketWriter) e Storage Object Viewer (roles/storage.objectViewer) no contentor de destino
Conceda as funções necessárias para o Pub/Sub
O Cloud Storage usa um agente de serviço gerido pela Google para gerir as notificações do Pub/Sub. O endereço de email deste agente do serviço segue o formato de nomenclatura service-PROJECT_NUMBER@gs-project-accounts.s3ns-system.iam.gserviceaccount.com.
O agente do serviço Cloud Storage precisa das seguintes autorizações para configurar o Pub/Sub e publicar mensagens num tópico:
Autorizações necessárias
pubsub.topics.publishno tópico do Pub/Subpubsub.subscriptions.consumeno tópico do Pub/Subpubsub.subscriptions.createno projeto de origem
Estas autorizações podem ser concedidas através de funções personalizadas ou através da concessão da seguinte função predefinida:
- Publicador do Pub/Sub (
roles/pubsub.publisher) no projeto de origem
Crie uma tarefa de replicação
Consola
Para Cloud de Confiance instruções da consola sobre como criar uma tarefa de replicação, consulte o artigo Crie uma tarefa de replicação através da Cloud de Confiance consola.
Linha de comandos
Quando usa a Google Cloud CLI, pode criar uma tarefa de replicação para contentores existentes.
Para criar uma tarefa de replicação, use o comando gcloud alpha transfer jobs create com a flag --replication:
gcloud alpha transfer jobs create gs://SOURCE_BUCKET_NAME gs://DESTINATION_BUCKET_NAME --replication
Substituir:
SOURCE_BUCKET_NAMEcom o nome do contentor de origem que quer replicar. Por exemplo,my-source-bucket.DESTINATION_BUCKET_NAMEcom o nome do contentor de destino. Por exemplo,my-destination-bucket.
APIs REST
API JSON
Quando usa a API JSON, pode criar uma tarefa de replicação para contentores existentes.
Ter a CLI gcloud instalada e inicializada, o que lhe permite gerar um token de acesso para o cabeçalho
Authorization.Crie um ficheiro JSON que contenha um objeto
TransferJobcom um recursoReplicationSpecinicializado:TransferJob { "name": "TRANSFER_JOB_NAME", ... ReplicationSpec: { "gcsDataSource": { "bucketName": "SOURCE_BUCKET_NAME" }, "gcsDataSink" { "bucketName": "DESTINATION_BUCKET_NAME" }, "objectConditions": { }, "transferOptions": { "overwriteWhen": "OVERWRITE_OPTION" } } ... }
Substituir:
TRANSFER_JOB_NAMEcom o nome que quer atribuir ao trabalho de replicação. Consulte atransferJobsdocumentação de referência para ver os requisitos de nomenclatura.SOURCE_BUCKET_NAMEcom o nome do contentor de origem que contém os objetos que quer replicar. Por exemplo,example-source-bucket.DESTINATION_BUCKET_NAMEcom o nome do contentor de destino onde os seus objetos vão ser replicados. Por exemplo,example-destination-bucket.OVERWRITE_OPTIONcom uma opção para determinar como os objetos existentes no contentor de destino podem ser substituídos como resultado de uma tarefa de replicação, o que pode acontecer quando o objeto de destino e o objeto de origem têm o mesmo nome. O valor tem de ser um dos seguintes:ALWAYS: substitui sempre os objetos no contentor de destinoDIFFERENT: apenas substitua objetos no contentor de destino se os dados do objeto de destino forem diferentes dos dados do objeto de origemNEVER: nunca substitua objetos no contentor de destino
Use o cURL para chamar a API REST do serviço de transferência de armazenamento com um pedido
transferJobs.create:curl -X POST --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storagetransfer.googleapis.com/v1/transferJobs"
Onde:
JSON_FILE_NAMEé o nome do ficheiro JSON que criou no passo 2.
Para verificar o estado da tarefa de replicação, consulte os registos do Cloud Logging para o Serviço de transferência de armazenamento.
Apresentar tarefas de replicação
Consola
Para ver Cloud de Confiance instruções da consola sobre como listar tarefas de replicação, consulte o artigo Liste tarefas de replicação com a Cloud de Confiance consola.
Linha de comandos
Use o comando gcloud alpha transfer jobs list com a flag
--job-type:
gcloud alpha transfer jobs list --job-type=replication
APIs REST
API JSON
Ter a CLI gcloud instalada e inicializada, o que lhe permite gerar um token de acesso para o cabeçalho
Authorization.Use o cURL para chamar a API REST do serviço de transferência de armazenamento com um pedido
transferJobs.list:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storagetransfer.googleapis.com/v1/transferJobs"
Veja uma tarefa de replicação
Consola
Para ver Cloud de Confiance instruções da consola sobre como ver uma tarefa de replicação, consulte o artigo Veja uma tarefa de replicação através da Cloud de Confiance consola.
Linha de comandos
Use o comando gcloud alpha transfer jobs describe:
gcloud alpha transfer jobs describe JOB_NAME
Substituir:
JOB_NAMEcom o ID exclusivo da tarefa de replicação. Por exemplo,1234567890. Para encontrar o ID da tarefa de transferência, liste as suas tarefas de replicação.
APIs REST
API JSON
Ter a CLI gcloud instalada e inicializada, o que lhe permite gerar um token de acesso para o cabeçalho
Authorization.Use
cURLpara chamar a API REST do serviço de transferência de armazenamento com um pedidotransferJobs.get:curl -X GET \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storagetransfer.googleapis.com/v1/transferJobs/JOB_NAME"
Substituir:
JOB_NAMEcom o ID exclusivo da tarefa de replicação. Por exemplo,1234567890. Para encontrar o ID da sua tarefa de replicação, liste as suas tarefas de replicação.
Atualize uma tarefa de replicação
Pode atualizar os seguintes campos de uma tarefa de replicação:
A descrição da tarefa de replicação
A configuração para executar uma tarefa de replicação
A configuração das notificações publicadas no Pub/Sub
O comportamento de registo das operações de tarefas de replicação
O estado da tarefa de replicação (se está ativada, desativada ou eliminada)
Consola
Para ver Cloud de Confiance instruções da consola sobre como atualizar uma tarefa de replicação, consulte o artigo Atualize uma tarefa de replicação através da Cloud de Confiance consola.
Linha de comandos
Use o comando gcloud alpha transfer jobs update com as flags que controlam as propriedades da tarefa de replicação que quer atualizar. Para ver uma lista
de possíveis flags, consulte a
gcloud alpha transfer jobs update documentação.
Por exemplo, para atualizar o comportamento de substituição de objetos da tarefa de replicação,
execute o comando gcloud alpha transfer jobs update com a flag --overwrite-when:
gcloud alpha transfer jobs update JOB_NAME --overwrite-when=OVERWRITE_OPTION
Substituir:
JOB_NAMEcom o ID exclusivo da tarefa de replicação. Por exemplo,1234567890. Para encontrar o ID da tarefa de transferência, liste ou veja a sua tarefa de transferência.OVERWRITE_OPTIONcom uma opção para determinar como os objetos existentes no contentor de destino podem ser substituídos como resultado de uma tarefa de replicação, o que pode acontecer quando o objeto de destino e o objeto de origem têm o mesmo nome. O valor tem de ser um dos seguintes:always: substitui sempre os objetos de destino.different: Apenas substitua objetos no contentor de destino se os dados do objeto de destino forem diferentes dos dados do objeto de origem.never: nunca substitua objetos de destino.
APIs REST
API JSON
Ter a CLI gcloud instalada e inicializada, o que lhe permite gerar um token de acesso para o cabeçalho
Authorization.Crie um ficheiro JSON com a seguinte estrutura que inclui os campos do objeto
TransferJobque quer atualizar:{ "projectId": string, "transferJob": { object (TransferJob) }, "updateTransferJobFieldMask": UPDATE_MASK }
Onde:
object (TransferJob)é substituído pelos campos da tarefa de replicação que quer atualizar. Consulte aTransferJobrepresentação de recursos para mais informações.UPDATE_MASKé uma lista separada por vírgulas dos nomes dos campos que quer atualizar. Os valores podem ser um ou mais dos seguintes:description,transferSpec,notificationConfig,loggingConfig,status.
Para mais informações sobre os nomes dos campos que pode incluir, consulte o
transferJobs.patchcorpo do pedido.Use o cURL para chamar a API REST do serviço de transferência de armazenamento com um pedido
transferJobs.patch:curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storagetransfer.googleapis.com/v1/transferJobs/JOB_NAME"
Substituir:
JOB_NAMEcom o ID exclusivo da tarefa de replicação. Por exemplo,1234567890. Para encontrar o ID da sua tarefa de replicação, liste as suas tarefas de replicação.
Elimine uma tarefa de replicação
Consola
Para Cloud de Confiance instruções da consola sobre como eliminar uma tarefa de replicação, consulte o artigo Elimine uma tarefa de replicação através da Cloud de Confiance consola.
Linha de comandos
Use o comando gcloud alpha transfer jobs delete:
gcloud alpha transfer jobs delete JOB_NAME
Substituir:
JOB_NAMEcom o ID exclusivo da tarefa de replicação. Por exemplo,1234567890. Para encontrar o ID da sua tarefa de replicação, liste as suas tarefas de replicação.
APIs REST
API JSON
Ter a CLI gcloud instalada e inicializada, o que lhe permite gerar um token de acesso para o cabeçalho
Authorization.Use o cURL para chamar a API REST do serviço de transferência de armazenamento com um pedido
transferJobs.delete:curl -X DELETE \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storagetransfer.googleapis.com/v1/transferJobs/JOB_NAME"
Substituir:
JOB_NAMEcom o ID exclusivo da tarefa de replicação. Por exemplo,1234567890. Para encontrar o ID da sua tarefa de replicação, liste as suas tarefas de replicação.