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 a Pub/Sub.
Beneficios de las transferencias centradas en 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. El Servicio de transferencia de almacenamiento no necesita ejecutar una operación de lista en la fuente, lo que ahorra tiempo y dinero.
En los casos de uso, se incluye lo siguiente:
Análisis basado en eventos: Replica los datos de AWS en 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 objetos de la fuente al destino de copia de seguridad en orden de minutos:
- Copia de seguridad multinube: 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 controlada por eventos puede impulsar la migración con un tiempo de inactividad bajo, en el orden de los minutos de tiempo de inactividad, como un paso de seguimiento a un lote migración de sistemas.
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 proyecto del bucket de origen.
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 que se indican en Controla el acceso a través de la consola de Google Cloud para otorgar el rol
Pub/Sub Subscriber
al servicio de Servicio de transferencia de almacenamiento. El rol se puede otorgar a nivel del tema, la suscripción o el proyecto.gcloud
CLISigue las instrucciones que se indican en Cómo configurar una política para agregar 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 un trabajo de transferencia basado en eventos.
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 la fuente 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 Event stream, 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 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 suscripción a Pub/Sub. 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" { "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. 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.
Configura transferencias basadas en eventos desde AWS S3
Las transferencias basadas en eventos de AWS S3 usan notificaciones de Amazon Simple Queue Service (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 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 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 los siguientes valores: 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 busca 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 la versión actualizada. JSON anterior.
Haz clic en Crear fila.
Cuando termines, toma nota del Amazon Resource Name (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 el 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 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 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 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. Usa 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 de 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 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 cada 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
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
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. 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. 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.