El Servicio de transferencia de almacenamiento puede escuchar 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 borras un objeto en la fuente, no se borrará el objeto asociado en el bucket de destino.
Crea una cola de SQS
En la consola de AWS, ve a la página Servicio de filas simples.
Haz clic en Crear fila.
Ingresa 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 tus 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 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 JSON que se muestra en la sección Política de acceso por el JSON actualizado que se muestra arriba.
Haz clic en Crear fila.
Cuando termines, toma nota del Amazon Resource Name (ARN) de la cola. 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 el bucket de origen.
Selecciona la pestaña Properties.
En la sección Notificaciones de eventos, haz clic en Crear notificación de evento.
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 que se indican 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 creada, ten en cuenta la siguiente información:
- Para un usuario, anota el ID de la clave de acceso y la clave secreta.
- Para un rol de identidad federada, toma nota del 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 consola de Google Cloud.
Selecciona Amazon S3 como el tipo de fuente y Cloud Storage como el destino.
Como Modo de programación, selecciona Basado en 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 antes. Usa el siguiente formato:
arn:aws:sqs:us-east-1:1234567890:event-queue"
De manera opcional, define los filtros y, luego, haz clic en Paso siguiente.
Selecciona el bucket de Cloud Storage de destino y, de forma opcional, la ruta de acceso.
De manera opcional, ingresa una hora de inicio y finalización para la transferencia. Si no especificas un horario, la transferencia comenzará de inmediato y se ejecutará hasta que se detenga de forma manual.
Especifica las opciones de transferencia. Puedes obtener más información en la página Crea transferencias.
Haz clic en Crear.
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" } }
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 de forma manual.
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 Go del Servicio de transferencia de almacenamiento.
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 Java del Servicio de transferencia de almacenamiento.
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 Node.js del Servicio de transferencia de almacenamiento.
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 Python del Servicio de transferencia de almacenamiento.
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.