O Serviço de transferência do Cloud Storage oferece suporte a sistemas de armazenamento em nuvem ou no local de objetos compatíveis com a API Amazon S3.
O Serviço de transferência do Cloud Storage acessa seus dados em armazenamento compatível com S3 usando agentes de transferência implantados em VMs próximas à fonte de dados. Esses agentes são executados em um contêiner do Docker e pertencem a um pool de agentes, que é uma coleção de agentes que usa a mesma configuração e que movem coletivamente seus dados em paralelo.
Esse recurso permite migrar do armazenamento de objetos no local ou na nuvem para o Cloud Storage, arquivar dados para liberar a capacidade de armazenamento no local, replicar dados para o Google Cloud para manter a continuidade dos negócios ou transferir dados ao Google Cloud para análise e processamento. Para clientes que estão migrando do AWS S3 para o Cloud Storage, esse recurso oferece uma opção de controle das rotas de rede para o Google Cloud, resultando em cobranças de transferência de dados consideravelmente menores.
Antes de começar
Antes de configurar suas transferências, siga estas etapas:
- Instale a CLI da gcloud.
- Cumpra os requisitos para transferências de sistema de arquivos, incluindo a instalação do Docker na máquina do agente de transferência.
Receber credenciais de origem
A transferência de armazenamento compatível com S3 exige um ID da chave de acesso e uma chave de acesso secreta.
As etapas para acessar esses recursos dependem do seu provedor de armazenamento.
A conta que gera o ID e a chave requer uma das permissões a seguir:
- Permissão somente leitura em objetos de origem, se não quiser excluir objetos na origem.
- Acesso total aos objetos de origem, se você optar por excluir os objetos na origem como parte da transferência.
Depois de criar a conta, adicionar permissões e fazer o download do ID da chave de acesso e da chave de acesso secreta, armazene o ID e a chave em um local seguro.
Configurar as permissões do Google Cloud
Antes de criar uma transferência, você precisa configurar as permissões para as seguintes entidades:
A conta de usuário usada para criar a transferência. Essa é a conta com login no console do Google Cloud ou a conta especificada ao fazer a autenticação na CLI "gcloud". A conta de usuário pode ser uma conta de usuário comum ou uma conta de serviço gerenciado pelo usuário. | |
A conta serviço gerenciado pelo Google, também conhecida como agente de serviço, usada pelo Serviço de transferência do Cloud Storage. Essa conta geralmente é identificada pelo
endereço de e-mail, que usa o formato
project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com .
|
|
A conta de agente de transferência que fornece permissões do Google Cloud para agentes de transferência. As contas de agente de transferência usam as credenciais do usuário que as instala ou as credenciais de uma conta de serviço gerenciado pelo usuário para fazer a autenticação. |
Consulte Permissões de transferência baseadas em agente para ver instruções.
Opções de transferência
Os seguintes recursos do Serviço de transferência do Cloud Storage estão disponíveis para transferências do armazenamento compatível com S3 para o Cloud Storage:
- Transferir arquivos específicos usando um manifesto
- É possível transmitir uma lista de arquivos para o Serviço de transferência do Cloud Storage. Consulte Transferir arquivos ou objetos específicos usando um manifesto para saber mais.
- Especificar a classe de armazenamento
- É possível especificar a
classe de armazenamento do Cloud Storage a ser usada para os dados no bucket de destino. Consulte as opções
StorageClass
para detalhes do REST ou use a flag--custom-storage-class
com a Google Cloud CLI.Todas as configurações de classe de armazenamento são ignoradas se o bucket de destino tiver a Classe automática ativada. Se a classe automática estiver ativada, os objetos transferidos para o bucket serão inicialmente definidos como Standard Storage.
- Preservação de metadados
-
Ao transferir arquivos de armazenamento compatível com o S3, o Serviço de transferência do Cloud Storage pode preservar determinados atributos como metadados personalizados.
Consulte a seção Armazenamento do Amazon S3 ou compatível com o S3 para o Cloud Storage em Preservação de metadados para saber quais metadados podem ser preservados e como configurar a transferência.
- Geração de registros e monitoramento
- As transferências do armazenamento compatível com S3 podem ser visualizadas no Cloud Logging e no Cloud Monitoring. Consulte Cloud Logging para o Serviço de transferência do Cloud Storage e Monitorar jobs de transferência para mais detalhes. Também é possível configurar notificações do Pub/Sub.
Criar um pool de agentes
Para criar um pool de agentes:
Console do Google Cloud
No Console do Google Cloud, acesse a página Pools de agentes.
A página Pools de agente será exibida, listando os pools de agentes atuais.
Clique em Criar outro pool.
Dê um nome ao pool e, se quiser, descreva-o.
É possível definir um limite de largura de banda que será aplicado ao pool como um todo. A largura de banda especificada em MB/s será dividida entre todos os agentes no pool. Consulte Gerenciar largura de banda da rede para mais informações.
Clique em Criar.
API REST
Use projects.agentPools.create:
POST https://storagetransfer.googleapis.com/v1/projects/PROJECT_ID/agentPools?agent_pool_id=AGENT_POOL_ID
Em que:
PROJECT_ID
: o ID do projeto em que você está criando o pool de agentes.AGENT_POOL_ID
: o ID do pool de agentes que você está criando.
Se um pool de agentes ficar preso no estado Creating
por mais de 30 minutos,
recomendamos excluir o pool de agentes e criá-lo novamente.
Revogar as permissões necessárias do Serviço de transferência do Cloud Storage de um projeto enquanto
um pool de agentes está no estado Creating
leva a um comportamento de serviço incorreto.
CLI da gcloud
Para criar um pool de agentes com a ferramenta de linha de comando gcloud
, execute
[gcloud transfer agent-pools create
][agent-pools-create].
gcloud transfer agent-pools create AGENT_POOL
Quando as seguintes opções estiverem disponíveis:
AGENT_POOL é um identificador exclusivo e permanente desse pool.
--no-async
bloqueia outras tarefas no seu terminal até que o pool seja criado. Se não for incluído, a criação do pool será executada de forma assíncrona.--bandwidth-limit
define a largura de banda em MB/s a ser disponibilizada aos agentes deste pool. Um limite de largura de banda se aplica a todos os agentes em um pool e impede que a carga de trabalho de transferência do pool interrompa outras operações que compartilham a largura de banda. Por exemplo, digite "50" para definir um limite de largura de banda de 50 MB/s. Se a sinalização não for especificada, os agentes desse pool usarão toda a largura de banda disponível para eles.--display-name
é um nome modificável para ajudar você a identificar esse pool. É possível incluir detalhes que não se encaixam no nome completo exclusivo do recurso do pool.
Instalar os agentes de transferência
Os agentes de transferência são agentes de software que coordenam atividades de transferência da sua origem pelo Serviço de transferência do Cloud Storage. Eles precisam ser instalados em um sistema com acesso aos dados de origem.
CLI da gcloud
Para instalar agentes para usar com uma fonte compatível com S3 usando a CLI gcloud
,
use o comando transfer agents install
.
Forneça as credenciais da AWS como variáveis de ambiente como
os valores de AWS_ACCESS_KEY_ID
e AWS_SECRET_ACCESS_KEY
ou armazenadas como
credenciais padrão nos arquivos de configuração do sistema.
export AWS_ACCESS_KEY_ID=ID
export AWS_SECRET_ACCESS_KEY=SECRET
gcloud transfer agents install --pool=POOL_NAME
Para executar agentes usando uma
chave de conta de serviço, use
a opção --creds-file
:
gcloud transfer agents install --pool=POOL_NAME \
--creds-file=/relative/path/to/service-account-key.json
Criar um job de transferência
Console do Google Cloud
Siga estas etapas para criar uma transferência de uma origem compatível com S3 para um bucket do Cloud Storage.
Acesse a página Serviço de transferência do Cloud Storage no Console do Google Cloud.
Clique em Criar job de transferência. Será exibida a página Criar um job de transferência.
Selecione Armazenamento de objetos compatível com S3 como o Tipo de origem. O destino precisa ser o Google Cloud Storage.
Clique em Próxima etapa.
Configurar sua fonte
Especifique as informações necessárias para esta transferência:
Selecione o pool de agentes configurado para esta transferência.
Digite o Nome do bucket relativo ao endpoint. Por exemplo, se os dados estiverem em:
https://example.com/bucket_a
Insira:
bucket_a
Insira o endpoint. Não inclua o protocolo (
http://
ouhttps://
) nem o nome do bucket. Exemplo:example.com
Especifique os atributos opcionais para esta transferência:
Insira a Região de assinatura que será usada para assinar as solicitações.
Escolha o processo de assinatura para essa solicitação.
Selecione o Estilo de endereçamento. Isso determina se o nome do bucket é fornecido em estilo de caminho (por exemplo,
https://example.com/bucket-name/key-name
) ou em estilo virtual hospedado (por exemplo,https://bucket-name.example.com/key-name
). Para mais informações, leia Hospedagem virtual de buckets na documentação da Amazon.Selecione o Protocolo de rede.
Selecione a versão da API da ficha da empresa a ser usada. Consulte as documentações ListObjectsV2 e ListObjects para mais informações.
Clique em Próxima etapa.
Configurar o coletor
No campo Bucket ou pasta, insira o bucket de destino e, opcionalmente, o nome da pasta ou clique em Procurar para selecionar um bucket de uma lista de buckets no seu projeto atual. Para criar um novo intervalo, clique em Criar novo intervalo.
Clique em Próxima etapa.
Escolher configurações de transferência
No campo Descrição, insira uma descrição da transferência. Como prática recomendada, insira uma descrição significativa e exclusiva para que você possa distinguir os jobs.
Em Opções de metadados, use as opções padrão ou clique em Ver e selecionar opções para especificar valores a todos os metadados compatíveis. Consulte Preservação de metadados para mais detalhes.
Em Quando substituir, selecione uma destas opções:
Se diferente: substitui os arquivos de destino se o arquivo de origem com o mesmo nome tiver valores de ETags ou de soma de verificação diferentes.
Sempre: sempre grava arquivos de destino quando o arquivo de origem tem o mesmo nome, mesmo que sejam idênticos.
Em Quando excluir, selecione uma destas opções:
Nunca: nunca exclua arquivos da origem ou do destino.
Excluir o arquivo da origem após a transferência: exclua os arquivos da origem após a transferência para o destino.
Excluir arquivos do destino se eles não estiverem na origem: se os arquivos no bucket do Cloud Storage de destino também não estiverem na origem, exclua os arquivos do Cloud Storage. bucket.
Essa opção garante que o bucket de destino do Cloud Storage corresponda exatamente à sua origem.
Em Opções de notificação, selecione o tópico do Pub/Sub e os eventos a serem notificados. Consulte Notificações do Pub/Sub para mais detalhes.
Clique em Próxima etapa.
Programar a transferência
É possível programar a execução da transferência apenas uma vez ou configurar uma transferência recorrente.
Clique em Criar para criar o job de transferência.
CLI da gcloud
Antes de usar a CLI gcloud
para criar uma transferência, siga as instruções em
Configurar o acesso a um coletor do Cloud Storage.
Use a CLI gcloud
para criar uma transferência de uma fonte compatível com S3 para
um bucket do Cloud Storage. Use o seguinte comando.
gcloud transfer jobs create s3://SOURCE_BUCKET_NAME gs://SINK_BUCKET_NAME \
--source-agent-pool=POOL_NAME \
--source-endpoint=ENDPOINT \
--source-signing-region=REGION \
--source-auth-method=AWS_SIGNATURE_V2 | AWS_SIGNATURE_V4 \
--source-request-model=PATH_STYLE | VIRTUAL_HOSTED_STYLE \
--source-network-protocol=HTTP | HTTPS \
--source-list-api=LIST_OBJECTS | LIST_OBJECTS_V2
As sinalizações a seguir são necessárias:
--source-agent-pool
é o nome do pool de agentes a ser usado para esta transferência.--source-endpoint
especifica o endpoint do sistema de armazenamento. Por exemplo,s3.us-east.example.com
. Verifique com seu provedor a formatação correta. Não inclua o protocolo (por exemplo,https://
) ou o nome do bucket.
As sinalizações restantes são opcionais:
--source-signing-region
especifica uma região para assinar solicitações. Omita essa sinalização se o provedor de armazenamento não exigir uma região de assinatura.--source-auth-method
especifica o método de autenticação que será usado. Os valores válidos sãoAWS_SIGNATURE_V2
ouAWS_SIGNATURE_V4
. Consulte a documentação da Amazon SigV4 e SigV2 para mais informações.--source-request-model
especifica o estilo de endereçamento a ser usado. Os valores válidos sãoPATH_STYLE
ouVIRTUAL_HOSTED_STYLE
. O estilo do caminho usa o formatohttps://s3.REGION.example.com/BUCKET_NAME/KEY_NAME
. O estilo hospedado virtual usa o formato "https://BUCKET_NAME.s3.REGION.example.com/KEY_NAME".--source-network-protocol
especifica o protocolo de rede que os agentes precisam usar para esse job. Os valores válidos sãoHTTP
ouHTTPS
.--source-list-api
especifica a versão da API S3 de listagem que retorna objetos do bucket. Os valores válidos sãoLIST_OBJECTS
ouLIST_OBJECTS_V2
. Para mais informações, consulte a documentação de ListObjectsV2 e ListObjects da Amazon.
Para mais opções de job de transferência, execute gcloud transfer jobs create --help
ou consulte a documentação de referência gcloud
.
API REST
Antes de usar a API REST para criar uma transferência, siga as instruções em Configurar o acesso a um coletor do Cloud Storage.
Para criar uma transferência de uma fonte compatível com S3 usando a API REST, crie um objeto JSON semelhante ao exemplo a seguir.
POST https://storagetransfer.googleapis.com/v1/transferJobs
{
...
"transferSpec": {
"source_agent_pool_name":"POOL_NAME",
"awsS3CompatibleData": {
"region":"us-east-1",
"s3Metadata":{
"protocol": "NETWORK_PROTOCOL_HTTPS",
"requestModel": "REQUEST_MODEL_VIRTUAL_HOSTED_STYLE",
"authMethod": "AUTH_METHOD_AWS_SIGNATURE_V4"
},
"endpoint": "example.com",
"bucketName": "BUCKET_NAME",
"path": "PATH",
},
"gcsDataSink": {
"bucketName": "SINK_NAME",
"path": "SINK_PATH"
},
"transferOptions": {
"deleteObjectsFromSourceAfterTransfer": false
}
}
}
Consulte a referência da API AwsS3CompatibleData
para ver as descrições dos campos.
Bibliotecas de cliente
Antes de usar as bibliotecas de clientes para criar uma transferência, siga as instruções em Configurar o acesso a um coletor do Cloud Storage.
Go
Para saber como instalar e usar a biblioteca de cliente para o Serviço de transferência do Cloud Storage, consulte Bibliotecas de clientes do Serviço de transferência do Cloud Storage. Para mais informações, consulte a Documentação de referência da API Go do Serviço de transferência do Cloud Storage.
Para autenticar o Serviço de transferência do Cloud Storage, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Java
Para saber como instalar e usar a biblioteca de cliente do Serviço de transferência do Cloud Storage, consulte Bibliotecas de clientes do Serviço de transferência do Cloud Storage. Para mais informações, consulte a Documentação de referência da API Java do Serviço de transferência do Cloud Storage.
Para autenticar o Serviço de transferência do Cloud Storage, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Para saber como instalar e usar a biblioteca de cliente do Serviço de transferência do Cloud Storage, consulte Bibliotecas de clientes do Serviço de transferência do Cloud Storage. Para mais informações, consulte a Documentação de referência da API Node.js do Serviço de transferência do Cloud Storage.
Para autenticar o Serviço de transferência do Cloud Storage, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Para saber como instalar e usar a biblioteca de cliente do Serviço de transferência do Cloud Storage, consulte Bibliotecas de clientes do Serviço de transferência do Cloud Storage. Para mais informações, consulte a Documentação de referência da API Python do Serviço de transferência do Cloud Storage.
Para autenticar o Serviço de transferência do Cloud Storage, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Perguntas frequentes
A transferência do armazenamento compatível com S3 é cobrada?
As transferências do armazenamento compatível com S3 não geram a taxa de "Transferências de serviço de transferência do Storage que exigem agentes". Consulte Preços para ver outras taxas que possam ser incorridas. É possível que você também receba cobranças operacionais e de transferência de dados de saída do seu provedor de nuvem de origem.
O Cloud Logging é compatível com transferências de armazenamento compatíveis com S3?
Sim, é possível ativar o Cloud Logging para suas transferências seguindo as instruções em Cloud Logging para o Serviço de transferência do Cloud Storage.
É possível fazer transferências usando um manifesto?
Sim, os arquivos de manifesto são compatíveis com transferências compatíveis com S3.
Se eu adicionar um objeto ao bucket de origem após o início do job, ele será transferido?
O Serviço de transferência do Cloud Storage executa uma operação de lista no bucket de origem para calcular a diferença do destino. Se a operação de lista já tiver sido concluída quando o novo objeto for adicionado, esse objeto será ignorado até a próxima transferência.
O Serviço de transferência do Cloud Storage executa a correspondência de soma de verificação em fontes compatíveis com S3?
O Serviço de transferência do Cloud Storage depende dos dados de soma de verificação retornados pela origem. Para o armazenamento compatível com S3, o Serviço de transferência do Cloud Storage espera que a Etag do objeto seja o hash MD5 do objeto.
Mas os objetos que foram transferidos para o armazenamento compatível com S3 usando o upload de várias partes do S3 não têm ETags MD5. Nesse caso, o Serviço de transferência do Cloud Storage usa o tamanho do arquivo para validar o objeto transferido.
Qual capacidade de processamento pode ser alcançada para transferências do armazenamento compatível com S3?
A capacidade de transferência pode ser escalonada adicionando mais agentes de transferência. Recomendamos o uso de três agentes para tolerância a falhas e para preencher um pipeline com menos de 10 Gbps. Para aumentar o escalonamento, adicione mais agentes. É possível adicionar e remover agentes durante uma transferência em andamento.
Onde os agentes de transferência devem ser implantados para transferir dados do Amazon S3 para o Cloud Storage?
É possível instalar agentes no Amazon EC2 ou EKS na mesma região do seu bucket. Também é possível executar agentes no Google Cloud na região mais próxima.