El Servicio de transferencia de almacenamiento puede escuchar las notificaciones de eventos en AWS para transferir automáticamente los datos que se agregaron o actualizaron en la ubicación de origen a un bucket de Cloud Storage. Obtén más información sobre los beneficios de las transferencias centradas en eventos.
Las transferencias basadas en eventos escuchan las notificaciones de eventos de Amazon S3 que se envían a Amazon SQS para saber cuándo se modificaron o agregaron objetos en el bucket de origen. No se detectan las eliminaciones de objetos. Si se borra un objeto en el origen, no se borra el objeto asociado en el bucket de destino.
Las transferencias controladas por eventos siempre usan un bucket de Cloud Storage como destino.
Antes de comenzar
Sigue las instrucciones para otorgar los permisos necesarios en tu bucket de Cloud Storage de destino:
Crea una cola de SQS
En la consola de AWS, ve a la página Simple Queue Service.
Haz clic en Crear fila.
Ingresa un Nombre para esta fila.
En la sección Política de acceso, selecciona Avanzada. 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 tus valores específicos de
AWS
yResource
del JSON que se muestra en el siguiente fragmento de código 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 en el 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 fila. 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 bucket en la pestaña Propiedades de la página de detalles del bucket en la consola de AWS.
- AWS es un valor numérico que representa tu proyecto de Amazon Web Services. Por ejemplo,
Reemplaza el código JSON que se muestra en la sección Política de acceso por el código JSON actualizado que se muestra arriba.
Haz clic en Crear fila.
Una vez que se complete, anota el Amazon Resource Name (ARN) de la fila. El ARN tiene el siguiente formato:
arn:aws:sqs:us-east-1:1234567890:event-queue"
Habilita las notificaciones en tu bucket de S3
En la consola de AWS, ve a la página S3.
En la lista Buckets, selecciona tu bucket de origen.
Selecciona la pestaña Propiedades.
En la sección Notificaciones de eventos, haz clic en Crear notificación de eventos.
Especifica un nombre para este evento.
En la sección Tipos de eventos, selecciona Todos los eventos de creación de objetos.
Como Destino, selecciona Cola de SQS y elige la cola que creaste para esta transferencia.
Haz clic en Guardar cambios.
Configura permisos
Sigue las instrucciones en Configura 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.
Reemplaza 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 que se cree, anota la siguiente información:
- En el caso de un usuario, anota el ID de la 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 un trabajo de transferencia
Puedes usar la API de REST o la consola de Google Cloud para crear un trabajo de transferencia basado en eventos.
Consola de Cloud
Ve a la página Crear trabajo de transferencia en la Google Cloud consola.
Selecciona Amazon S3 como el tipo de fuente y Cloud Storage como el destino.
En Modo de programación, selecciona Controlado por eventos y haz clic en Siguiente paso.
Ingresa el nombre de tu bucket de S3. El nombre del depósito es el nombre que aparece en la consola de administración de AWS. Por ejemplo,
my-aws-bucket
.Selecciona tu método de autenticación y, luego, ingresa la información solicitada que creaste y anotaste en la sección anterior.
Ingresa el ARN de la cola de Amazon SQS que creaste anteriormente. Usa el siguiente formato:
arn:aws:sqs:us-east-1:1234567890:event-queue"
De manera opcional, define los filtros que desees y, luego, haz clic en Siguiente paso.
Selecciona el bucket de destino de Cloud Storage y, de manera opcional, la ruta de acceso.
De manera opcional, ingresa una hora de inicio y finalización para la transferencia. Si no especificas una hora, la transferencia comenzará de inmediato y se ejecutará hasta que la detengas manualmente.
Especifica las opciones de transferencia. Puedes obtener más información en la página Crea transferencias.
Haz clic en Create.
Una vez creado, el trabajo de transferencia comienza a ejecutarse y un objeto de escucha de eventos espera notificaciones en la cola de SQS. La página de detalles del trabajo muestra una operación por hora y, además, incluye detalles sobre los datos transferidos para cada trabajo.
REST
Para crear una transferencia basada en eventos con la API de REST, envía el siguiente objeto JSON al extremo 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 parámetros eventStreamStartTime
y eventStreamExpirationTime
son opcionales.
Si se omite la hora de inicio, la transferencia comienza de inmediato. Si se omite la hora de finalización, la transferencia continúa hasta que se detiene manualmente.
Bibliotecas cliente
Go
Para obtener información sobre cómo instalar y usar la biblioteca cliente del Servicio de transferencia de almacenamiento, consulta las bibliotecas cliente del Servicio de transferencia de almacenamiento. Si deseas obtener más información, consulta la documentación de referencia de la API de Storage Transfer Service Go.
Para autenticarte en el Servicio de transferencia de almacenamiento, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Java
Para obtener información sobre cómo instalar y usar la biblioteca cliente del Servicio de transferencia de almacenamiento, consulta las bibliotecas cliente del Servicio de transferencia de almacenamiento. Si deseas obtener más información, consulta la documentación de referencia de la API de Storage Transfer Service Java.
Para autenticarte en el Servicio de transferencia de almacenamiento, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Node.js
Para obtener información sobre cómo instalar y usar la biblioteca cliente del Servicio de transferencia de almacenamiento, consulta las bibliotecas cliente del Servicio de transferencia de almacenamiento. Si deseas obtener más información, consulta la documentación de referencia de la API de Storage Transfer Service Node.js.
Para autenticarte en el Servicio de transferencia de almacenamiento, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Python
Para obtener información sobre cómo instalar y usar la biblioteca cliente del Servicio de transferencia de almacenamiento, consulta las bibliotecas cliente del Servicio de transferencia de almacenamiento. Si deseas obtener más información, consulta la documentación de referencia de la API de Storage Transfer Service Python.
Para autenticarte en el Servicio de transferencia de almacenamiento, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.