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 baseadas em 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. A exclusão de um objeto na origem não exclui o objeto associado no bucket de destino.
As transferências baseadas em eventos sempre usam um bucket do Cloud Storage como destino.
Antes de começar
Siga as instruções para conceder as permissões necessárias no bucket do Cloud Storage 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.
Regiões padrão da AWS
{ "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" } ] }
Regiões da AWS GovCloud
{ "Version": "2008-10-17", "Id": "\_\_default\_policy\_ID", "Statement": [ { "Sid": "\_\_owner\_statement", "Effect": "Allow", "Principal": { "AWS": "01234567890" }, "Action": [ "SQS:*" ], "Resource": "arn:aws-us-gov:sqs:us-gov-west-1:01234567890:test" } ] }
Copie os valores de
AWSeResource. Eles são exclusivos para cada projeto.Cole os valores específicos de
AWSeResourceda etapa anterior no snippet JSON a seguir:Regiões padrão da AWS
{ "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": "arn:aws:s3:::S3_BUCKET_NAME" } } } ] }
Regiões da AWS GovCloud
{ "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": "arn:aws-us-gov:s3:::S3_BUCKET_NAME" } } } ] }
Substitua S3_BUCKET_NAME pelo nome do bucket de origem do S3.
Copie esse snippet JSON concluído e use-o para substituir o JSON exibido na seção Política de acesso.
Clique em Criar fila.
Quando for concluído, anote o nome de recurso da Amazon (ARN) na fila.
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.
Ao seguir as instruções, use o JSON a seguir quando for solicitado a especificar um papel personalizado ou uma política de confiança personalizada:
Regiões padrão da AWS
{ "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 seguinte formato:
arn:aws:iam::AWS_ACCOUNT:role/AWS_ROLE_NAME
Regiões da AWS GovCloud
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sqs:DeleteMessage", "sqs:ChangeMessageVisibility", "sqs:ReceiveMessage", "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws-us-gov:s3:::S3_BUCKET_NAME", "arn:aws-us-gov: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 seguinte formato:
arn:aws-us-gov:iam::AWS_ACCOUNT:role/AWS_ROLE_NAME
Criar um job de transferência
Use a API REST ou o Google Cloud console do Cloud para criar um job de transferência baseado em eventos.
Console do Cloud
Acesse a página Criar job de transferência no Google Cloud console do 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 um dos seguintes formatos:
- Para regiões padrão da AWS:
arn:aws:sqs:AWS_REGION:AWS_ACCOUNT:AWS_QUEUE_NAME - Para regiões da AWS GovCloud:
arn:aws-us-gov:sqs:AWS_REGION:AWS_ACCOUNT:AWS_QUEUE_NAME
- Para regiões padrão da AWS:
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 transferJobs.create:
{ "description": "DESCRIPTION", "status": "ENABLED", "projectId": "PROJECT_ID", "transferSpec": { "awsS3DataSource": { "bucketName": "S3_BUCKET_NAME", "roleArn": "AWS_ROLE_ARN" }, "gcsDataSink": { "bucketName": "GCS_BUCKET_NAME" } }, "eventStream": { "name": "AWS_QUEUE_ARN", "eventStreamStartTime": "2022-12-02T01:00:00+00:00", "eventStreamExpirationTime": "2023-01-31T01:00:00+00:00" } }
Os marcadores de posição no JSON anterior usam os seguintes valores:
- DESCRIPTION é uma descrição do job de transferência.
- PROJECT_ID é o ID do projeto na nuvem do Google Cloud em que o job de transferência é criado.
- S3_BUCKET_NAME é o nome do bucket de origem do Amazon S3.
- AWS_ROLE_ARN é o ARN do papel de identidade federada que você
criou. Por exemplo,
arn:aws:iam::1234567891011:role/aws-role-namepara regiões padrão da AWS ouarn:aws-us-gov:iam::1234567891011:role/aws-role-namepara regiões da AWS GovCloud. - GCS_BUCKET_NAME é o nome do bucket de destino do Cloud Storage.
- AWS_QUEUE_ARN é o ARN da fila do SQS. Por exemplo,
arn:aws:sqs:us-east-1:1234567891011:s3-notification-queuepara regiões padrão da AWS ouarn:aws-us-gov:sqs:us-gov-east-1:1234567890:event-queuepara regiões da AWS GovCloud.
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.