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 controladas por eventos.
Las transferencias controladas por 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 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 cola.
Ingresa un Nombre para esta cola.
En la sección Política de acceso, selecciona Avanzado. 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 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 JSON completado y úsalo para reemplazar el JSON que se muestra en la sección Política de acceso.
Haz clic en Crear cola.
Una vez que se complete, anota el Amazon Resource Name (ARN) de la cola.
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 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 creado, anota la siguiente información:
- Para un usuario, anota el ID de clave de acceso y la clave secreta.
- Para un rol de identidad federada, anota el Amazon Resource Name (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 creado, anota la siguiente información:
- Para un usuario, anota el ID de clave de acceso y la clave secreta.
- Para un rol de identidad federada, anota el Amazon Resource Name (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 Google Cloud consola, Google Cloud CLI o la API de REST 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.
Como 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 bucket 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 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 se detenga de forma manual.
Especifica las opciones de transferencia. Hay más información disponible en la página Crear 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. En la página de detalles del trabajo, se muestra una operación por hora y se incluyen detalles sobre los datos transferidos para cada trabajo.
gcloud
Para crear un trabajo de transferencia controlado por eventos con Google Cloud CLI, usa el comando gcloud transfer jobs create con la marca --event-stream-name:
gcloud transfer jobs create \
s3://S3_BUCKET_NAME \
gs://GCS_BUCKET_NAME \
--source-creds-file=SOURCE_CREDS_FILE \
--event-stream-name=AWS_QUEUE_ARN \
--event-stream-starts=EVENT_STREAM_STARTS \
--event-stream-expires=EVENT_STREAM_EXPIRES
Reemplaza los marcadores de posición por tus valores reales:
- S3_BUCKET_NAME: El nombre de tu bucket de origen de Amazon S3.
- GCS_BUCKET_NAME: Tu bucket de destino de Cloud Storage.
- SOURCE_CREDS_FILE: La ruta de acceso relativa a un archivo local en tu máquina que contiene tus credenciales de AWS. Según tu método de autenticación, este archivo debe contener el ID de clave de acceso y la clave secreta, o el ARN del rol de identidad federada. Para obtener más información, consulta Configura el acceso a una fuente: Amazon S3.
- AWS_QUEUE_ARN: El ARN de tu cola de Amazon SQS. Por ejemplo,
arn:aws:sqs:us-east-1:123456789012:my-queuepara las regiones estándar de AWS oarn:aws-us-gov:sqs:us-gov-west-1:123456789012:my-gov-queuepara las regiones de AWS GovCloud. - EVENT_STREAM_STARTS: Cuándo comenzar a escuchar eventos
con el formato de fecha y hora %Y-%m-%dT%H:%M:%S%z (p.ej.,
2020-04-12T06:42:12+04:00). Si no se configura, el trabajo comienza a ejecutarse y a escuchar eventos cuando se envía correctamente el comando de creación del trabajo. - EVENT_STREAM_EXPIRES: Cuándo dejar de escuchar eventos. Si no se configura, el trabajo continúa hasta que se detiene de forma manual.
Para obtener una lista completa de los campos admitidos, consulta la
gcloud transfer jobs create referencia.
REST
Para crear una transferencia controlada por eventos con la API de REST, envía el siguiente objeto JSON al 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 en el 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.
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
Si deseas obtener información para instalar y usar la biblioteca cliente del Servicio de transferencia de almacenamiento, consulta las Bibliotecas cliente del Servicio de transferencia de almacenamiento. Para obtener más información, consulta la documentación de referencia de la APIGo de Servicio de transferencia de almacenamiento.
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
Si deseas obtener información para instalar y usar la biblioteca cliente del Servicio de transferencia de almacenamiento, consulta las Bibliotecas cliente del Servicio de transferencia de almacenamiento. Para obtener más información, consulta la documentación de referencia de la APIJava del Servicio de transferencia de almacenamiento.
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
Si deseas obtener información para instalar y usar la biblioteca cliente del Servicio de transferencia de almacenamiento, consulta las Bibliotecas cliente del Servicio de transferencia de almacenamiento. Para obtener más información, consulta la documentación de referencia de la API 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. Para obtener más información, consulta Configura la autenticación para un entorno de desarrollo local.
Python
Si deseas obtener información para instalar y usar la biblioteca cliente del Servicio de transferencia de almacenamiento, consulta las Bibliotecas cliente del Servicio de transferencia de almacenamiento. Para obtener más información, consulta la documentación de referencia de la API del 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.