El Servicio de transferencia de almacenamiento puede escuchar las notificaciones de eventos en Google Cloud para transferir automáticamente los datos que se agregaron o actualizaron en un bucket de Cloud Storage. Obtén más información sobre los beneficios de las transferencias centradas en eventos.
Las transferencias centradas en eventos desde Cloud Storage usan notificaciones de Pub/Sub 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 centradas en eventos siempre usan un bucket de Cloud Storage como destino.
Configura permisos
Además de los
permisos necesarios para todos los trabajos de transferencia,
las transferencias centradas en eventos requieren el rol Pub/Sub Subscriber.
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 solicitud, ingresa 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 Subscriberal 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 Google Cloud consola para otorgar el
Pub/Sub Subscriberrol al Servicio de transferencia de almacenamiento. El rol se puede otorgar a nivel del tema, la suscripción o el proyecto.CLI de
gcloudSigue las instrucciones que se indican en Establece 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 haber cumplido con los requisitos previos para usar Pub/Sub con Cloud Storage.
Crea una notificación de Pub/Sub para el bucket de Cloud Storage de origen.
No puedes administrar notificaciones de Pub/Sub con la Google Cloud consola. En su lugar, usa gcloud CLI o una de las bibliotecas cliente disponibles.
gcloud storage buckets notifications create gs://SOURCE_BUCKET_NAME --topic=TOPIC_NAME
Crea una suscripción de extracción para el tema. Debes crear una suscripción independiente para cada trabajo de transferencia.
En el siguiente ejemplo, se muestra el comando de Google Cloud CLI para crear una suscripción de extracción. Para obtener instrucciones de la consola y código de la biblioteca cliente, consulta Crea una suscripción de extracción.
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 Google Cloud consola para crear un trabajo de transferencia basado en eventos.
No incluyas información sensible, como información de identificación personal (PII) ni datos de seguridad en el nombre de tu trabajo de transferencia. Los nombres de los recursos se pueden propagar a los nombres de otros recursos de Google Cloud y pueden exponerse a sistemas internos de Google fuera de tu proyecto.
Consola de Cloud
Ve a la página Crear trabajo de transferencia en la Google Cloud consola.
Selecciona Cloud Storage como origen y destino.
Como Modo de programación , selecciona Centrado en eventos y haz clic en Siguiente paso.
Selecciona el bucket de origen para esta transferencia.
En la sección Flujo de eventos, ingresa el nombre de la suscripción:
projects/PROJECT_NAME/subscriptions/SUBSCRIPTION_IDDe manera opcional, define los filtros y, luego, haz clic en Siguiente paso.
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 una hora, 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 Crear transferencias.
Haz clic en Crear.
Una vez creado, el trabajo de transferencia comienza a ejecutarse y un objeto de escucha de eventos espera las notificaciones en la suscripción de Pub/Sub. La página de detalles del trabajo muestra una operación por hora e incluye detalles sobre los datos transferidos para cada trabajo.
REST
Para crear una transferencia centrada en eventos con la API de REST, envía el siguiente objeto JSON al 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 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.
Supervisa una transferencia centrada en eventos
Cuando creas una transferencia centrada en eventos, el Servicio de transferencia de almacenamiento crea un trabajo de transferencia. Una vez que se alcanza la hora de inicio, comienza a ejecutarse una operación de transferencia y un objeto de escucha de eventos espera las notificaciones de la cola de Pub/Sub.
La operación de transferencia se ejecuta, con un estado de in progress, durante aproximadamente 24 horas. Después de 24 horas, la operación finaliza y comienza una nueva.
Se crea una operación nueva cada 24 horas hasta que se alcanza la hora de finalización del trabajo de transferencia o hasta que se detiene de forma manual.
Si una transferencia de archivos está en curso cuando se programa la finalización de la operación, la operación actual permanece en curso hasta que el archivo se haya transferido por completo. Se inicia una operación nueva y las dos operaciones se ejecutan de forma simultánea hasta que finaliza la operación anterior. La operación nueva controla todos los eventos que se detectan durante este período.
Para ver la operación actual y las operaciones completadas, sigue estos pasos:
Google Cloud Consola de
Ve a la página Servicio de transferencia de almacenamiento en la Google Cloud consola.
En la lista de trabajos, selecciona la pestaña Todo o De nube a nube.
Haz clic en el ID del trabajo de tu transferencia. La columna Modo de programación identifica todas las transferencias centradas en eventos en comparación con las transferencias por lotes.
Selecciona la pestaña Operaciones. Se muestran los detalles de la operación actual y las operaciones completadas se enumeran en la tabla Historial de ejecución. Haz clic en cualquier operación completada para obtener detalles adicionales.
gcloud
Para supervisar el progreso de un trabajo en tiempo real, usa gcloud transfer jobs monitor. La respuesta muestra la operación actual, la hora de inicio del trabajo, la cantidad de datos transferidos, los bytes omitidos y los recuentos de errores.
gcloud transfer jobs monitor JOB_NAME
Para recuperar el nombre de la operación actual:
gcloud transfer jobs describe JOB_NAME --format="value(latestOperationName)"
Para enumerar las operaciones actuales y completadas:
gcloud transfer operations list --job-names=JOB_NAME
Para ver los detalles de una operación, sigue este ejemplo:
gcloud transfer operations describe OPERATION_NAME