O Serviço de transferência do Cloud Storage pode detectar notificações de eventos na AWS para transferir automaticamente dados que foram adicionados ou atualizados no local de origem para um bucket do Cloud Storage. Saiba mais sobre os benefícios das transferências baseadas em eventos.
As transferências orientadas por eventos detectam notificações de eventos do Amazon S3 enviadas ao Amazon SQS para saber quando os objetos no bucket de origem foram modificados ou adicionados. As exclusões de objetos não são detectadas. Excluir um objeto na origem não exclui o objeto associado no bucket de destino.
Criar uma fila do SQS
No console da AWS, acesse a página Simple Queue Service.
Clique em Criar fila.
Insira um Nome para essa fila.
Na seção Política de acesso, selecione Avançado. Um objeto JSON é exibido:
{ "Version": "2008-10-17", "Id": "__default_policy_ID", "Statement": [ { "Sid": "__owner_statement", "Effect": "Allow", "Principal": { "AWS": "01234567890" }, "Action": [ "SQS:*" ], "Resource": "arn:aws:sqs:us-west-2:01234567890:test" } ] }
Os valores de
AWS
eResource
são exclusivos para cada projeto.Copie os valores específicos de
AWS
eResource
do JSON exibido para o seguinte snippet JSON:{ "Version": "2012-10-17", "Id": "example-ID", "Statement": [ { "Sid": "example-statement-ID", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "SQS:SendMessage", "Resource": "RESOURCE", "Condition": { "StringEquals": { "aws:SourceAccount": "AWS" }, "ArnLike": { "aws:SourceArn": "S3_BUCKET_ARN" } } } ] }
Os valores dos marcadores de posição no JSON anterior usam este formato:
- AWS é um valor numérico que representa o projeto do Amazon Web Services. Por exemplo,
"aws:SourceAccount": "1234567890"
. - RESOURCE é um Número de Recurso da Amazon (ARN) que identifica
essa fila. Por exemplo,
"Resource": "arn:aws:sqs:us-west-2:01234567890:test"
. - S3_BUCKET_ARN é um ARN que identifica o bucket de origem. Por exemplo,
"aws:SourceArn": "arn:aws:s3:::example-aws-bucket"
. É possível encontrar o ARN de um bucket na guia Propriedades da página de detalhes do bucket no console da AWS.
- AWS é um valor numérico que representa o projeto do Amazon Web Services. Por exemplo,
Substitua o JSON exibido na seção Política de acesso pelo JSON atualizado acima.
Clique em Criar fila.
Quando for concluído, anote o nome de recurso da Amazon (ARN) na fila. O ARN tem o seguinte formato:
arn:aws:sqs:us-east-1:1234567890:event-queue"
Ativar notificações no bucket S3
No console da AWS, acesse a página S3.
Na lista Buckets, selecione o bucket de origem.
Selecione a guia Propriedades.
Na seção Notificações de eventos, clique em Criar notificações de eventos.
Especifique um nome para esse evento.
Na seção Tipos de evento, selecione Todos os eventos de criação de objeto.
Em Destino, selecione Fila SQS e selecione a fila criada para essa transferência.
Clique em Salvar alterações.
Configurar permissões
Siga as instruções em Configurar o acesso a uma origem: Amazon S3 para criar um ID de chave de acesso e uma chave secreta, ou um papel de identidade federada.
Substitua o JSON de permissões personalizadas pelo seguinte:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sqs:DeleteMessage", "sqs:ChangeMessageVisibility", "sqs:ReceiveMessage", "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::S3_BUCKET_NAME", "arn:aws:s3:::S3_BUCKET_NAME/*", "AWS_QUEUE_ARN" ] } ] }
Após a criação, observe as seguintes informações:
- Para um usuário, anote o ID da chave de acesso e a chave secreta.
- Para um papel de identidade federada, anote o Amazon Resource Name (ARN),
que tem o formato
arn:aws:iam::AWS_ACCOUNT:role/ROLE_NAME
.
Criar um job de transferência
Use a API REST ou o console do Google Cloud para criar um job de transferência baseado em eventos.
console do Cloud
Acesse a página Criar job de transferência no console do Google Cloud.
Selecione Amazon S3 como o tipo de origem e Cloud Storage como destino.
No Modo de programação, selecione Baseado em eventos e clique em Próxima etapa.
Insira o nome do bucket S3. O nome do bucket é o nome exibido no AWS Management Console. Por exemplo,
my-aws-bucket
.Selecione seu método de autenticação e insira as informações solicitadas, que você criou e anotou na seção anterior.
Digite o ARN da fila do Amazon SQS que você criou anteriormente. Ele usa o seguinte formato:
arn:aws:sqs:us-east-1:1234567890:event-queue"
Se quiser, defina qualquer filtro e clique em Próxima etapa.
Selecione o bucket de destino do Cloud Storage e, opcionalmente, o caminho.
Também é possível digitar um horário de início e de término para a transferência. Se você não especificar um horário, a transferência será iniciada imediatamente e será executada até ser interrompida manualmente.
Especifique as opções de transferência. Veja mais informações na página Criar transferências.
Clique em Criar.
Depois de criado, o job de transferência começa a ser executado e um listener de eventos aguarda notificações na fila do SQS. A página de detalhes do job mostra uma operação a cada hora e inclui detalhes sobre os dados transferidos para cada job.
REST
Para criar uma transferência baseada em eventos usando a API REST, envie o seguinte objeto JSON para o endpoint transferJobs.create:
transfer_job { "description": "YOUR DESCRIPTION", "status": "ENABLED", "projectId": "PROJECT_ID", "transferSpec" { "awsS3DataSource" { "bucketName": "AWS_SOURCE_NAME", "roleArn": "arn:aws:iam::1234567891011:role/role_for_federated_auth" }, "gcsDataSink": { "bucketName": "GCS_SINK_NAME" } } "eventStream" { "name": "arn:aws:sqs:us-east-1:1234567891011:s3-notification-queue", "eventStreamStartTime": "2022-12-02T01:00:00+00:00", "eventStreamExpirationTime": "2023-01-31T01:00:00+00:00" } }
O eventStreamStartTime
e o eventStreamExpirationTime
são opcionais.
Se o horário de início for omitido, a transferência começará imediatamente. Se o horário de
término for omitido, a transferência continuará até que seja interrompida manualmente.
Bibliotecas de cliente
Go
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 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.