Storage Transfer Service puede monitorizar las notificaciones de eventos en Google Cloudpara transferir automáticamente los datos que se hayan añadido o actualizado en un segmento de Cloud Storage. Más información sobre las ventajas de las transferencias basadas en eventos
Las transferencias basadas en eventos de Cloud Storage usan notificaciones de Pub/Sub para saber cuándo se han modificado o añadido objetos en el segmento de origen. No se detectan las eliminaciones de objetos. Si se elimina un objeto en el origen, no se elimina el objeto asociado en el segmento de destino.
Las transferencias basadas en eventos siempre usan un segmento de Cloud Storage como destino.
Configurar permisos
Además de los permisos necesarios para todos los trabajos de transferencia, las transferencias basadas en eventos requieren el rol Pub/Sub Subscriber
.
Busca el nombre del agente de servicio del Servicio de transferencia de Storage de tu proyecto:
Ve a la página de referencia de
googleServiceAccounts.get
.Se abrirá un panel interactivo titulado Prueba este método.
En el panel, en Parámetros de solicitud, introduce tu ID de proyecto. El proyecto que especifiques aquí debe ser el que utilices para gestionar el Servicio de transferencia de Storage, que puede ser diferente del proyecto del segmento de origen.
Haz clic en la opción para ejecutar.
La dirección de correo de tu agente de asistencia se devuelve como el valor de
accountEmail
. Copia este valor.El correo del agente de servicio utiliza el formato
project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com
.Asigna el rol
Pub/Sub Subscriber
al agente de servicio del Servicio de transferencia de Storage.consola de Cloud
Sigue las instrucciones de Controlar el acceso a través de la consola Google Cloud para conceder el rol
Pub/Sub Subscriber
al servicio Storage Transfer Service. El rol se puede conceder a nivel de tema, suscripción o proyecto.gcloud
CLISigue las instrucciones de Definir una política para añadir la siguiente vinculación:
{ "role": "roles/pubsub.subscriber", "members": [ "serviceAccount:project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com" }
Configurar Pub/Sub
Asegúrate de que cumples los requisitos previos para usar Pub/Sub con Cloud Storage.
Crea una notificación de Pub/Sub para el segmento de Cloud Storage de origen.
No puedes gestionar las notificaciones de Pub/Sub con la Google Cloud consola. Usa gcloud CLI o una de las bibliotecas de cliente disponibles.
gcloud storage buckets notifications create gs://SOURCE_BUCKET_NAME --topic=TOPIC_NAME
Crea una suscripción de extracción para el tema. Debe 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 sobre la consola y el código de la biblioteca de cliente, consulta Crear una suscripción pull.
gcloud pubsub subscriptions create SUBSCRIPTION_ID --topic=TOPIC_NAME --ack-deadline=300
Crear una tarea de transferencia
Puedes usar la API REST o la Google Cloud consola para crear un trabajo de transferencia basado en eventos.
No incluyas información sensible, como información personal identificable (IPI) o datos de seguridad, en el nombre del trabajo de transferencia. Los nombres de recursos pueden propagarse 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 tarea de transferencia de la Google Cloud consola.
Selecciona Cloud Storage como origen y destino.
En Modo de programación, selecciona Basado en eventos y haz clic en Siguiente paso.
Seleccione el segmento de origen de esta transferencia.
En la sección Secuencia de eventos, introduzca el nombre de la suscripción:
projects/PROJECT_NAME/subscriptions/SUBSCRIPTION_ID
Si quieres, define los filtros que quieras y, a continuación, haz clic en Paso siguiente.
Seleccione el contenedor de destino de esta transferencia.
Si quiere, puede introducir una hora de inicio y de finalización para la transferencia. Si no especificas una hora, la transferencia se iniciará inmediatamente y se ejecutará hasta que se detenga manualmente.
Especifica las opciones de transferencia que quieras. Para obtener más información, consulta la página Crear transferencias.
Haz clic en Crear.
Una vez creado, el trabajo de transferencia empieza a ejecutarse y un listener de eventos espera las notificaciones de la suscripción de Pub/Sub. En la página de detalles del trabajo se muestra una operación por hora y se incluyen detalles sobre los datos transferidos de cada trabajo.
REST
Para crear una transferencia basada en eventos mediante la API REST, envía el siguiente objeto JSON al endpoint 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" } }
Los elementos eventStreamStartTime
y eventStreamExpirationTime
son opcionales.
Si se omite la hora de inicio, la transferencia comenzará inmediatamente. Si se omite la hora de finalización, la transferencia continuará hasta que se detenga manualmente.
Bibliotecas de cliente
Go
Para saber cómo instalar y usar la biblioteca de cliente de Servicio de transferencia de Storage, consulta Bibliotecas de cliente de Servicio de transferencia de Storage. Para obtener más información, consulta la documentación de referencia de la API Go del Servicio de transferencia de Storage.
Para autenticarte en el Servicio de transferencia de Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Java
Para saber cómo instalar y usar la biblioteca de cliente de Servicio de transferencia de Storage, consulta Bibliotecas de cliente de Servicio de transferencia de Storage. Para obtener más información, consulta la documentación de referencia de la API Java del Servicio de transferencia de Storage.
Para autenticarte en el Servicio de transferencia de Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Node.js
Para saber cómo instalar y usar la biblioteca de cliente de Servicio de transferencia de Storage, consulta Bibliotecas de cliente de Servicio de transferencia de Storage. Para obtener más información, consulta la documentación de referencia de la API Node.js del Servicio de transferencia de Storage.
Para autenticarte en el Servicio de transferencia de Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Python
Para saber cómo instalar y usar la biblioteca de cliente de Servicio de transferencia de Storage, consulta Bibliotecas de cliente de Servicio de transferencia de Storage. Para obtener más información, consulta la documentación de referencia de la API Python del Servicio de transferencia de Storage.
Para autenticarte en el Servicio de transferencia de Storage, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación en un entorno de desarrollo local.
Monitorizar una transferencia basada en eventos
Cuando crea una transferencia basada en eventos, el Servicio de transferencia de Storage crea un trabajo de transferencia. Cuando se alcanza la hora de inicio, se empieza a ejecutar una operación de transferencia y un listener de eventos espera las notificaciones de la cola de Pub/Sub.
La operación de transferencia se ejecuta con el estado in progress
durante aproximadamente 24 horas. Transcurridas 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 de la tarea de transferencia o hasta que se detiene manualmente.
Si se está transfiriendo un archivo cuando se programa la finalización de la operación, esta seguirá en curso hasta que el archivo se haya transferido por completo. Se inicia una nueva operación y las dos se ejecutan simultáneamente hasta que finaliza la antigua. La nueva operación gestionará los eventos que se detecten durante este periodo.
Para ver la operación actual y las operaciones completadas, sigue estos pasos:
Google Cloud consola
Ve a la página Storage Transfer Service de la Google Cloud consola.
En la lista de tareas, selecciona la pestaña Todas o De nube a nube.
Haz clic en el ID de la tarea de transferencia. La columna Modo de programación identifica todas las transferencias basadas en eventos frente a las transferencias por lotes.
Selecciona la pestaña Operaciones. Se muestran los detalles de la operación actual y las operaciones completadas se indican en la tabla Historial de ejecuciones. Haz clic en cualquier operación completada para ver más detalles.
gcloud
Para monitorizar 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 el número de errores.
gcloud transfer jobs monitor JOB_NAME
Para obtener el nombre de la operación actual, haz lo siguiente:
gcloud transfer jobs describe JOB_NAME --format="value(latestOperationName)"
Para enumerar las operaciones actuales y completadas, haz lo siguiente:
gcloud transfer operations list --job-names=JOB_NAME
Para ver los detalles de una operación, sigue estos pasos:
gcloud transfer operations describe OPERATION_NAME