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 basadas en 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.
Regiones estándar de 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" } ] }
Regiones de 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" } ] }
Copia los valores de
AWSyResource. Estos son únicos para cada proyecto.Pega tus valores específicos de
AWSyResourcedel paso anterior en el siguiente fragmento de código JSON:Regiones estándar de 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" } } } ] }
Regiones de 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" } } } ] }
Reemplaza S3_BUCKET_NAME por el nombre del bucket de origen de S3.
Copia este fragmento de código JSON completo y úsalo para reemplazar el código JSON que se muestra en la sección Política de acceso.
Haz clic en Crear fila.
Una vez que se complete, anota el Amazon Resource Name (ARN) de la fila.
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 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 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.
Mientras sigues las instrucciones, usa el siguiente JSON cuando se te indique que especifiques un rol personalizado o una política de confianza personalizada:
Regiones estándar de 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" ] } ] }
Una vez que lo crees, ten en cuenta la siguiente información:
- En el caso de un usuario, anota el ID de la clave de acceso y la clave secreta.
- Para un rol de identidad federada, anota el nombre de recurso de Amazon (ARN), que tiene el siguiente formato:
arn:aws:iam::AWS_ACCOUNT:role/AWS_ROLE_NAME
Regiones de 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" ] } ] }
Una vez que lo crees, ten en cuenta la siguiente información:
- En el caso de un usuario, anota el ID de la clave de acceso y la clave secreta.
- Para un rol de identidad federada, anota el nombre de recurso de Amazon (ARN), que tiene el siguiente formato:
arn:aws-us-gov:iam::AWS_ACCOUNT:role/AWS_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.
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 antes. Usa uno de los siguientes formatos:
- Para las regiones estándar de AWS:
arn:aws:sqs:AWS_REGION:AWS_ACCOUNT:AWS_QUEUE_NAME - Para las regiones de AWS GovCloud:
arn:aws-us-gov:sqs:AWS_REGION:AWS_ACCOUNT:AWS_QUEUE_NAME
- Para las regiones estándar de AWS:
De manera opcional, define los filtros que desees y, luego, haz clic en Siguiente paso.
Selecciona el bucket de Cloud Storage de destino 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 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:
{ "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" } }
Los marcadores de posición del JSON anterior usan los siguientes valores:
- DESCRIPTION es una descripción del trabajo de transferencia.
- PROJECT_ID es el ID del proyecto de Google Cloud en el que se crea el trabajo de transferencia.
- S3_BUCKET_NAME es el nombre del bucket de origen de Amazon S3.
- AWS_ROLE_ARN es el ARN del rol de identidad federada que creaste. Por ejemplo,
arn:aws:iam::1234567891011:role/aws-role-namepara las regiones estándar de AWS oarn:aws-us-gov:iam::1234567891011:role/aws-role-namepara las regiones de AWS GovCloud. - GCS_BUCKET_NAME es el nombre del bucket de destino de Cloud Storage.
- AWS_QUEUE_ARN es el ARN de la cola de SQS. Por ejemplo,
arn:aws:sqs:us-east-1:1234567891011:s3-notification-queuepara las regiones estándar de AWS oarn:aws-us-gov:sqs:us-gov-east-1:1234567890:event-queuepara las regiones de AWS GovCloud.
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 Servicio de transferencia de almacenamiento Go.
Para autenticarte en el Servicio de transferencia de almacenamiento, configura las credenciales predeterminadas de la aplicación. Para 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 Servicio de transferencia de almacenamiento Java.
Para autenticarte en el Servicio de transferencia de almacenamiento, configura las credenciales predeterminadas de la aplicación. Para 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 Servicio de transferencia de almacenamiento Node.js.
Para autenticarte en el Servicio de transferencia de almacenamiento, configura las credenciales predeterminadas de la aplicación. Para 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 Servicio de transferencia de almacenamiento Python.
Para autenticarte en el Servicio de transferencia de almacenamiento, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.