Storage Transfer Service puede monitorizar las notificaciones de eventos en AWS para transferir automáticamente los datos que se hayan añadido o actualizado en la ubicación de origen a un segmento de Cloud Storage. Más información sobre las ventajas de las transferencias basadas en eventos
Las transferencias basadas en eventos monitorizan las notificaciones de eventos de Amazon S3 que se envían a Amazon SQS para saber cuándo se han modificado o añadido objetos en el segmento de origen. No se detectan las eliminaciones de objetos. Si se elimina un objeto en el origen, no se elimina el objeto asociado en el segmento de destino.
Las transferencias basadas en eventos siempre usan un segmento de Cloud Storage como destino.
Antes de empezar
Sigue las instrucciones para conceder los permisos necesarios en el segmento de Cloud Storage de destino:
Crear una cola de SQS
En la consola de AWS, ve a la página Simple Queue Service.
Haz clic en Crear cola.
Introduce un nombre para esta cola.
En la sección Política de acceso, selecciona Avanzado. Se muestra un 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" } ] }
Los valores de
AWS
yResource
son únicos para cada proyecto.Copia los valores específicos de
AWS
yResource
del JSON que se muestra en el siguiente fragmento de 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" } } } ] }
Los valores de los marcadores de posición del JSON anterior usan el siguiente formato:
- AWS es un valor numérico que representa tu proyecto de Amazon Web Services. Por ejemplo,
"aws:SourceAccount": "1234567890"
. - RESOURCE es un número de recurso de Amazon (ARN) que identifica esta cola. Por ejemplo,
"Resource": "arn:aws:sqs:us-west-2:01234567890:test"
. - S3_BUCKET_ARN es un ARN que identifica el bucket de origen. Por ejemplo,
"aws:SourceArn": "arn:aws:s3:::example-aws-bucket"
. Puedes encontrar el ARN de un segmento en la pestaña Propiedades de la página de detalles del segmento en la consola de AWS.
- AWS es un valor numérico que representa tu proyecto de Amazon Web Services. Por ejemplo,
Sustituye el JSON que se muestra en la sección Política de acceso por el JSON actualizado que aparece arriba.
Haz clic en Crear cola.
Cuando se haya completado, anota el nombre de recurso de Amazon (ARN) de la cola. El ARN tiene el siguiente formato:
arn:aws:sqs:us-east-1:1234567890:event-queue"
Habilita las notificaciones en tu contenedor de S3
En la consola de AWS, ve a la página S3.
En la lista Segmentos, selecciona el segmento de origen.
Selecciona la pestaña Propiedades.
En la sección Notificaciones de eventos, haz clic en Crear notificación de evento.
Especifique un nombre para este evento.
En la sección Tipos de evento, selecciona Todos los eventos de creación de objetos.
En Destino, seleccione Cola de SQS y elija la cola que ha creado para esta transferencia.
Haz clic en Guardar cambios.
Configurar permisos
Sigue las instrucciones de Configurar el acceso a una fuente: Amazon S3 para crear un ID de clave de acceso y una clave secreta, o un rol de identidad federada.
Sustituye el JSON de permisos personalizados por el siguiente:
{ "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" ] } ] }
Una vez creado, anota la siguiente información:
- En el caso de un usuario, anota el ID de clave de acceso y la clave secreta.
- En el caso de un rol de identidad federada, anota el nombre de recurso de Amazon (ARN),
que tiene el formato
arn:aws:iam::AWS_ACCOUNT:role/ROLE_NAME
.
Crear una tarea de transferencia
Puedes usar la API REST o la Google Cloud consola para crear un trabajo de transferencia basado en eventos.
consola de Cloud
Ve a la página Crear tarea de transferencia de la Google Cloud consola.
Selecciona Amazon S3 como tipo de fuente y Cloud Storage como destino.
En Modo de programación, selecciona Basado en eventos y haz clic en Siguiente paso.
Introduce el nombre del segmento de S3. El nombre del contenedor es el nombre tal como aparece en la consola de administración de AWS. Por ejemplo,
my-aws-bucket
.Selecciona el método de autenticación e introduce la información solicitada, que has creado y anotado en la sección anterior.
Introduce el ARN de la cola de Amazon SQS que has creado anteriormente. Utiliza el siguiente formato:
arn:aws:sqs:us-east-1:1234567890:event-queue"
Si quieres, define los filtros que quieras y, a continuación, haz clic en Paso siguiente.
Selecciona el segmento de Cloud Storage de destino y, opcionalmente, la ruta.
Si quiere, puede introducir una hora de inicio y de finalización para la transferencia. Si no especificas una hora, la transferencia se iniciará inmediatamente y se ejecutará hasta que la detengas manualmente.
Especifica las opciones de transferencia que quieras. Para obtener más información, consulta la página Crear transferencias.
Haz clic en Crear.
Una vez creada, la tarea de transferencia empieza a ejecutarse y un receptor de eventos espera las notificaciones en la cola de SQS. La página de detalles del trabajo muestra una operación cada hora e incluye información sobre los datos transferidos de cada trabajo.
REST
Para crear una transferencia basada en eventos mediante la API REST, envía el siguiente objeto JSON al 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" } }
Los elementos eventStreamStartTime
y eventStreamExpirationTime
son opcionales.
Si se omite la hora de inicio, la transferencia comenzará inmediatamente. Si se omite la hora de finalización, la transferencia continuará hasta que se detenga manualmente.
Bibliotecas de cliente
Go
Para saber cómo instalar y usar la biblioteca de cliente de Servicio de transferencia de Storage, consulta Bibliotecas de cliente de Servicio de transferencia de Storage. Para obtener más información, consulta la documentación de referencia de la API Go del Servicio de transferencia de Storage.
Para autenticarte en el Servicio de transferencia de Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Java
Para saber cómo instalar y usar la biblioteca de cliente de Servicio de transferencia de Storage, consulta Bibliotecas de cliente de Servicio de transferencia de Storage. Para obtener más información, consulta la documentación de referencia de la API Java del Servicio de transferencia de Storage.
Para autenticarte en el Servicio de transferencia de Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Node.js
Para saber cómo instalar y usar la biblioteca de cliente de Servicio de transferencia de Storage, consulta Bibliotecas de cliente de Servicio de transferencia de Storage. Para obtener más información, consulta la documentación de referencia de la API Node.js del Servicio de transferencia de Storage.
Para autenticarte en el Servicio de transferencia de Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Python
Para saber cómo instalar y usar la biblioteca de cliente de Servicio de transferencia de Storage, consulta Bibliotecas de cliente de Servicio de transferencia de Storage. Para obtener más información, consulta la documentación de referencia de la API Python del Servicio de transferencia de Storage.
Para autenticarte en el Servicio de transferencia de Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.