O Storage Transfer Service pode ouvir notificações de eventos na AWS para transferir automaticamente dados que foram adicionados ou atualizados na localização de origem para um contentor do Cloud Storage. Saiba mais sobre as vantagens das transferências baseadas em eventos.
As transferências orientadas por eventos monitorizam as notificações de eventos do Amazon S3 enviadas para o Amazon SQS para saber quando os objetos no contentor de origem foram modificados ou adicionados. As eliminações de objetos não são detetadas. Se eliminar um objeto na origem, não elimina o objeto associado no contentor de destino.
As transferências baseadas em eventos usam sempre um contentor do Cloud Storage como destino.
Antes de começar
Siga as instruções para conceder as autorizações necessárias no contentor do Cloud Storage de destino:
Crie uma fila SQS
Na consola da AWS, aceda à página Simple Queue Service.
Clique em Criar fila.
Introduza um nome para esta fila.
Na secção Política de acesso, selecione Avançadas. É apresentado um objeto JSON:
{ "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 únicos para cada projeto.Copie os valores específicos de
AWS
eResource
do JSON apresentado para o seguinte fragmento 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 o seguinte formato:
- AWS é um valor numérico que representa o seu projeto dos Amazon Web Services. Por exemplo,
"aws:SourceAccount": "1234567890"
. - RESOURCE é um número de recurso da Amazon (ARN) que identifica esta fila. Por exemplo,
"Resource": "arn:aws:sqs:us-west-2:01234567890:test"
. - S3_BUCKET_ARN é um ARN que identifica o contentor de origem. Por
exemplo,
"aws:SourceArn": "arn:aws:s3:::example-aws-bucket"
. Pode encontrar o ARN de um contentor no separador Propriedades da página de detalhes do contentor na consola da AWS.
- AWS é um valor numérico que representa o seu projeto dos Amazon Web Services. Por exemplo,
Substitua o JSON apresentado na secção Política de acesso pelo JSON atualizado acima.
Clique em Criar fila.
Quando terminar, tome nota do Nome do recurso da Amazon (ARN) da fila. O ARN tem o seguinte formato:
arn:aws:sqs:us-east-1:1234567890:event-queue"
Ative as notificações no seu contentor S3
Na consola do AWS, aceda à página S3.
Na lista Recipientes, selecione o recipiente de origem.
Selecione o separador Propriedades.
Na secção Notificações de eventos, clique em Criar notificação de evento.
Especifique um nome para este evento.
Na secção Tipos de eventos, selecione Todos os eventos de criação de objetos.
Como Destino, selecione Fila SQS e selecione a fila que criou para esta transferência.
Clique em Guardar alterações.
Configure autorizações
Siga as instruções em Configure o acesso a uma origem: Amazon S3 para criar um ID da chave de acesso e uma chave secreta, ou uma função de identidade federada.
Substitua o JSON de autorizaçõ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" ] } ] }
Depois de criado, anote as seguintes informações:
- Para um utilizador, anote o ID da chave de acesso e a chave secreta.
- Para uma função de identidade federada, tenha em atenção o nome de recurso da Amazon (ARN),
que tem o formato
arn:aws:iam::AWS_ACCOUNT:role/ROLE_NAME
.
Crie uma tarefa de transferência
Pode usar a API REST ou a Google Cloud consola para criar uma tarefa de transferência baseada em eventos.
Cloud Console
Aceda à página Criar tarefa de transferência na Google Cloud consola.
Selecione Amazon S3 como o tipo de origem e armazenamento na nuvem como o destino.
No Modo de agendamento, selecione Orientado por eventos e clique em Passo seguinte.
Introduza o nome do contentor do S3. O nome do contentor é o nome apresentado na AWS Management Console. Por exemplo,
my-aws-bucket
.Selecione o seu método de autenticação e introduza as informações pedidas, que criou e anotou na secção anterior.
Introduza o ARN da fila do Amazon SQS que criou anteriormente. Usa o seguinte formato:
arn:aws:sqs:us-east-1:1234567890:event-queue"
Opcionalmente, defina filtros e, de seguida, clique em Passo seguinte.
Selecione o contentor do Cloud Storage de destino e, opcionalmente, o caminho.
Opcionalmente, introduza uma hora de início e fim para a transferência. Se não especificar uma hora, a transferência começa imediatamente e é executada até ser interrompida manualmente.
Especifique as opções de transferência. Estão disponíveis mais informações na página Crie transferências.
Clique em Criar.
Depois de criado, o trabalho de transferência começa a ser executado e um ouvinte de eventos aguarda notificações na fila SQS. A página de detalhes do trabalho mostra uma operação por hora e inclui detalhes sobre os dados transferidos para cada trabalho.
REST
Para criar uma transferência orientada por eventos através da API REST, envie o seguinte objeto JSON para o ponto final 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 a hora de início for omitida, a transferência começa imediatamente. Se a hora de fim for omitida, a transferência continua até ser interrompida manualmente.
Bibliotecas cliente
Go
Para saber como instalar e usar a biblioteca cliente do Serviço de transferência de armazenamento, consulte o artigo Bibliotecas cliente do Serviço de transferência de armazenamento. Para mais informações, consulte a documentação de referência da API Go do Storage Transfer Service.
Para se autenticar no serviço de transferência de armazenamento, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Java
Para saber como instalar e usar a biblioteca cliente do Serviço de transferência de armazenamento, consulte o artigo Bibliotecas cliente do Serviço de transferência de armazenamento. Para mais informações, consulte a documentação de referência da API Java do Storage Transfer Service.
Para se autenticar no serviço de transferência de armazenamento, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Node.js
Para saber como instalar e usar a biblioteca cliente do Serviço de transferência de armazenamento, consulte o artigo Bibliotecas cliente do Serviço de transferência de armazenamento. Para mais informações, consulte a documentação de referência da API Node.js do Storage Transfer Service.
Para se autenticar no serviço de transferência de armazenamento, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.
Python
Para saber como instalar e usar a biblioteca cliente do Serviço de transferência de armazenamento, consulte o artigo Bibliotecas cliente do Serviço de transferência de armazenamento. Para mais informações, consulte a documentação de referência da API Python do Storage Transfer Service.
Para se autenticar no serviço de transferência de armazenamento, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para um ambiente de desenvolvimento local.