El Servicio de transferencia de almacenamiento puede escuchar notificaciones de eventos en AWS o Google Cloud para transferir automáticamente los datos que se agregaron o actualizaron en la fuente ubicación. Las transferencias controladas por eventos son compatibles con AWS S3 o Cloud Storage a Cloud Storage.
Las transferencias controladas por eventos escuchan las notificaciones de eventos de Amazon S3 enviados a Amazon SQS para fuentes de AWS S3. Las fuentes de Cloud Storage envían notificaciones a una suscripción de Pub/Sub.
Beneficios de las transferencias controladas por eventos
Debido a que las transferencias controladas por eventos detectan cambios en el bucket de origen, las actualizaciones se copian en el destino casi en tiempo real. Servicio de transferencia de almacenamientoo no necesita para ejecutar una operación de lista con la fuente, lo que ahorra tiempo y dinero.
En los casos de uso, se incluye lo siguiente:
Análisis basados en eventos: Replica los datos de AWS a Cloud Storage para realizar análisis y procesamiento.
Replicación de Cloud Storage: Habilita objetos asíncronos y automáticos entre buckets de Cloud Storage.
Las transferencias controladas por eventos con el Servicio de transferencia de almacenamiento difieren de replicación típica de Cloud Storage a través de la creación una copia de tus datos en un bucket diferente.
Esto proporciona beneficios como los siguientes:
- Mantener los datos de desarrollo y producción en espacios de nombres separados
- Compartir datos sin proporcionar acceso al bucket original
- Crear una copia de seguridad en un continente diferente o en un área que no está cubierta por el almacenamiento dual y multirregional
Configuración de DR/HA: Replica los objetos de la fuente al destino de la copia de seguridad en orden. minutos:
- Copia de seguridad entre nubes: Crea una copia de la copia de seguridad de AWS S3 en Cloud Storage.
- Copia de seguridad entre regiones o entre proyectos: Crea una copia de Cloud Storage bucket en una región o proyecto diferente.
Migración en vivo: La transferencia basada en eventos puede potenciar la migración con poco tiempo de inactividad, del orden de minutos, como un paso de seguimiento de la migración por lotes única.
Configura transferencias controladas por eventos desde Cloud Storage
Las transferencias controladas por eventos desde Cloud Storage usan notificaciones de Pub/Sub saber cuándo se modificaron o agregado. No se detectan las eliminaciones de objetos. borrar un objeto en la fuente no borra el objeto asociado en el bucket de destino.
Configura permisos
Busca el nombre del agente de servicio del Servicio de transferencia de almacenamiento para tu proyecto:
Ve a la página de referencia de
googleServiceAccounts.get
.Se abrirá un panel interactivo con el título Prueba este método.
En el panel, en Parámetros de la solicitud, ingresa tu el ID del proyecto. El proyecto que especifiques aquí debe ser el proyecto que usas para administrar el Servicio de transferencia de almacenamiento, que puede ser diferente del en el proyecto del bucket.
Haz clic en Ejecutar.
El correo electrónico del agente de servicio se muestra como el valor de
accountEmail
. Copia este valor.El correo electrónico del agente de servicio usa el formato
project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com
.Otorga el rol
Pub/Sub Subscriber
al agente de servicio del Servicio de transferencia de almacenamiento.Consola de Cloud
Sigue las instrucciones en Cómo controlar el acceso a través de la consola de Google Cloud para otorgar el rol
Pub/Sub Subscriber
al servicio de Storage Transfer Service. El rol se puede otorgar a nivel de tema, suscripción o proyecto.gcloud
CLISigue las instrucciones que se indican en Establecer una política como agrega la siguiente vinculación:
{ "role": "roles/pubsub.subscriber", "members": [ "serviceAccount:project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com" }
Configura Pub/Sub
Asegúrate de cumplir con los Requisitos previos para usar Pub/Sub con Cloud Storage.
Configura la notificación de Pub/Sub para Cloud Storage:
gcloud storage buckets notifications create gs://BUCKET_NAME --topic=TOPIC_NAME
Crea una suscripción de extracción para el tema:
gcloud pubsub subscriptions create SUBSCRIPTION_ID --topic=TOPIC_NAME --ack-deadline=300
Crear un trabajo de transferencia
Puedes usar la API de REST o la consola de Google Cloud para crear una base de datos de transferencia de datos.
No incluyas información sensible, como información de identificación personal (PII) o datos de seguridad en el nombre del trabajo de transferencia. Los nombres de recursos pueden ser se propagan a los nombres de otros recursos de Google Cloud y pueden exponerse a los sistemas internos de Google fuera de tu proyecto.
Consola de Cloud
Ve a la página Crear trabajo de transferencia en la consola de Google Cloud.
Selecciona Cloud Storage como el origen y el destino.
En Modo de programación, selecciona Basado en eventos y haz clic en Paso siguiente.
Selecciona el bucket de origen para esta transferencia.
En la sección Transmisión del evento, ingresa el nombre de la suscripción:
projects/PROJECT_NAME/subscriptions/SUBSCRIPTION_ID
De manera opcional, define los filtros y, luego, haz clic en Paso siguiente.
Selecciona el bucket de destino para esta transferencia.
De manera opcional, ingresa una hora de inicio y de 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 el 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 suscripción a Pub/Sub. En la página de detalles del trabajo, se 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" { "gcsDataSource" { "bucketName": "GCS_SOURCE_NAME" }, "gcsDataSink": { "bucketName": "GCS_SINK_NAME" } } "eventStream" { "name": "projects/PROJECT_NAME/subscriptions/SUBSCRIPTION_ID", "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 el final
se omite el tiempo de transferencia, la transferencia continúa hasta que se detiene manualmente.
Bibliotecas cliente
Go
Si deseas obtener información sobre cómo instalar y usar la biblioteca cliente para el Servicio de transferencia de almacenamiento, consulta 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
Si deseas obtener información sobre cómo instalar y usar la biblioteca cliente para el Servicio de transferencia de almacenamiento, consulta Bibliotecas cliente del Servicio de transferencia de almacenamiento. Para obtener más información, consulta la API del Servicio de transferencia de almacenamiento Java documentación de referencia.
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
Si deseas obtener información sobre cómo instalar y usar la biblioteca cliente para el Servicio de transferencia de almacenamiento, consulta 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
Si deseas obtener información sobre cómo instalar y usar la biblioteca cliente para el Servicio de transferencia de almacenamiento, consulta Bibliotecas cliente del Servicio de transferencia de almacenamiento. Para obtener más información, consulta la API del Servicio de transferencia de almacenamiento Python documentación de referencia.
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.
Configura transferencias controladas por eventos desde AWS S3
Las transferencias controladas por eventos desde AWS S3 usan notificaciones de Amazon Simple Queue Service (SQS) para saber cuándo se modificaron o agregado. 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.
Crear una cola de SQS
En la consola de AWS, ve a la página Servicio de cola simple.
Haz clic en Crear cola.
Ingresa un Nombre para esta cola.
En la sección Política de acceso, selecciona Avanzada. Un objeto JSON es se muestra:
{ "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 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 tus servicios web de Amazon.
en un proyecto final. 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 Properties de la página de detalles del bucket en la consola de AWS.
- AWS es un valor numérico que representa tus servicios web de Amazon.
en un proyecto final. Por ejemplo,
Reemplaza el JSON que se muestra en la sección Política de acceso por la versión actualizada. JSON anterior.
Haz clic en Crear cola.
Cuando se complete, anota el nombre de recurso de Amazon (ARN) de la cola. El ARN tiene el con 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 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 objetos crean eventos.
En 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 una identidad en el área de la seguridad en la nube.
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:::AWS_BUCKET_NAME", "arn:aws:s3:::AWS_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 de los nombres de recursos 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 una base de datos de transferencia de datos.
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 el destino.
En Modo de programación, selecciona Basado en eventos y haz clic en Paso siguiente.
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. Utiliza el con el siguiente formato:
arn:aws:sqs:us-east-1:1234567890:event-queue"
De manera opcional, define 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 especificar una hora, la transferencia comenzará de inmediato y se ejecutará hasta que se detuvieron manualmente.
Especifica las opciones de transferencia. Puedes obtener más información en el 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. La página de detalles del trabajo muestra una operación cada hora y, además, incluye detalles sobre los datos transferidos para cada trabajo.
REST
Para crear una transferencia controlada por eventos con la API de REST, envía el siguiente 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 el final
se omite el tiempo de transferencia, la transferencia continúa hasta que se detiene manualmente.
Bibliotecas cliente
Go
Si deseas obtener información sobre cómo instalar y usar la biblioteca cliente para el Servicio de transferencia de almacenamiento, consulta 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
Si deseas obtener información sobre cómo instalar y usar la biblioteca cliente para el Servicio de transferencia de almacenamiento, consulta Bibliotecas cliente del Servicio de transferencia de almacenamiento. Para obtener más información, consulta la API del Servicio de transferencia de almacenamiento Java documentación de referencia.
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
Si deseas obtener información sobre cómo instalar y usar la biblioteca cliente para el Servicio de transferencia de almacenamiento, consulta Bibliotecas cliente del Servicio de transferencia de almacenamiento. Para obtener más información, consulta la API del Servicio de transferencia de almacenamiento Node.js documentación de referencia.
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
Si deseas obtener información sobre cómo instalar y usar la biblioteca cliente para el Servicio de transferencia de almacenamiento, consulta Bibliotecas cliente del Servicio de transferencia de almacenamiento. Para obtener más información, consulta la API del Servicio de transferencia de almacenamiento Python documentación de referencia.
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.