En esta página se describe cómo configurar y ver los registros de operaciones por lotes de almacenamiento mediante Cloud Logging. Un trabajo de operaciones por lotes de almacenamiento se puede configurar para generar entradas de registro de Cloud Logging para cada trabajo de transformación. Cada entrada de registro corresponde a la transformación intentada de un objeto.
Las operaciones por lotes de almacenamiento admiten el registro tanto en Cloud Logging como en los registros de auditoría de Cloud de Cloud Storage. Aunque ambas opciones registran las acciones de las operaciones por lotes de almacenamiento, le recomendamos que utilice Cloud Logging. Cloud Logging proporciona una plataforma centralizada para el análisis de registros, la monitorización en tiempo real y el filtrado avanzado, lo que ofrece una solución sólida para gestionar y comprender la actividad de las operaciones por lotes.
Antes de empezar
Verifica que tienes acceso a Cloud Logging. Para usar Cloud Logging, te recomendamos que concedas el rol de Logs Viewer (roles/logging.viewer) Gestión de Identidades y Accesos. El rol Logs Viewer (roles/logging.viewer) Gestión de Identidades y Accesos proporciona los permisos de Gestión de Identidades y Accesos necesarios para ver tus datos de Cloud Logging.
Para obtener más información sobre los permisos de acceso de Logging, consulta Control de acceso con IAM.
Para verificar y conceder los permisos de gestión de identidades y accesos, sigue estos pasos:
- Ver acceso actual para verificar el acceso que tiene cada principal.
- Concede un rol a los principales correspondientes de tu proyecto.
Interpretar los detalles de los registros
Cuando el registro está habilitado, las operaciones por lotes de almacenamiento registran los siguientes detalles:
Acción registrable: el valor de la acción registrable siempre es
transform.Estados registrables: en cada acción, puedes registrar uno o ambos de los siguientes estados:
SUCCEEDED: la acción se ha realizado correctamente.FAILED: no se ha podido realizar la acción.
Activar el almacenamiento de registros
Para habilitar el registro, especifica las acciones y los estados que se deben registrar.
Línea de comandos
Cuando crees una tarea de operaciones por lotes de almacenamiento con gcloud
storage batch-operations jobs create, usa las marcas --log-actions y --log-action-states para habilitar el registro.
gcloud storage batch-operations jobs create JOB_NAME \ --manifest-location=MANIFEST_LOCATION \ --delete-object \ --log-actions=transform \ --log-action-states=LOG_ACTION_STATES
Donde:
JOB_NAMEes el nombre que quieres dar al trabajo. Por ejemplo,my-job.MANIFEST_LOCATIONes la ubicación de tu manifiesto. Por ejemplo,gs://my-bucket/manifest.csv.LOG_ACTION_STATESes una lista separada por comas de estados que se van a registrar. Por ejemplo,succeeded,failed.
API REST
Create a storage batch operations
job
con un
LoggingConfig.
{ "loggingConfig": { "logActions": ["TRANSFORM"], "logActionStates": ["LOG_ACTION_STATES"], } }
Donde:
LOG_ACTION_STATES es una lista de estados separada por comas que se registrará. Por ejemplo, "SUCCEEDED","FAILED".
Ver registros
Para ver los registros de las operaciones por lotes de almacenamiento, sigue estos pasos:
Consola
Ve al Google Cloud menú de navegación menu y selecciona Registro > Explorador de registros :<br\></br\>
Selecciona un Google Cloud proyecto.
En el menú Actualizar, cambia de Visualizador de registros antiguo a Explorador de registros.
Para filtrar los registros y mostrar solo las entradas de operaciones por lotes de almacenamiento, escribe
storage_batch_operations_joben el campo de consulta y haz clic en Ejecutar consulta.En el panel Resultados de la consulta, haga clic en Editar periodo para cambiar el periodo del que quiere obtener resultados.
Para obtener más información sobre cómo usar el Explorador de registros, consulta el artículo Usar el Explorador de registros.
Línea de comandos
Para usar la CLI de gcloud y buscar registros de operaciones por lotes de almacenamiento, usa el comando gcloud logging read.
Especifica un filtro para limitar los resultados a los registros de operaciones por lotes de almacenamiento.
gcloud logging read "resource.type=storage_batch_operations_job"
API REST
Usa el método de la API entries.list
Cloud Logging.
Para filtrar los resultados e incluir solo las entradas relacionadas con operaciones por lotes de almacenamiento, usa el campo filter. A continuación se muestra un objeto de solicitud JSON de ejemplo:
{
"resourceNames":
[
"projects/my-project-name"
],
"orderBy": "timestamp desc",
"filter": "resource.type=\"storage_batch_operations_job\""
}
Donde:
my-project-name es el nombre de tu proyecto.
Formato de registro de operaciones por lotes de almacenamiento
Todos los campos específicos de las operaciones por lotes de almacenamiento se encuentran en un objeto jsonPayload. Aunque el contenido exacto de jsonPayload varía en función del tipo de trabajo, hay una estructura común en todas las entradas de TransformActivityLog. En esta sección se describen los campos de registro comunes y, a continuación, se detallan los campos específicos de cada operación.
Campos de registro habituales
Los siguientes campos aparecen en todos los registros:
jsonPayload: { "@type": "type.googleapis.com/google.cloud.storagebatchoperations.logging.TransformActivityLog", "completeTime": "YYYY-MM-DDTHH:MM:SS.SSSSSSSSSZ", "status": { "errorMessage": "String indicating error", "errorType": "ENUM_VALUE", "statusCode": "ENUM_VALUE" }, "logName": "projects/PROJECT_ID/logs/storagebatchoperations.googleapis.com%2Ftransform_activity", "receiveTimestamp": "YYYY-MM-DDTHH:MM:SS.SSSSSSSSSZ", "resource": { "labels": { "location":"us-central1", "job_id": "BATCH_JOB_ID", "resource_container": "RESOURCE_CONTAINER", // ... other labels }, "type": "storagebatchoperations.googleapis.com/Job" }, // Operation-specific details will be nested here (for example, // "DeleteObject", "PutObjectHold", "RewriteObject", "PutMetadata") // Each operation-specific object will also contain the following // object: "objectMetadataBefore": { // "gcsObject": { // "bucket": "BUCKET_NAME", // "generation": "GENERATION_NUMBER", // "objectKey": "OBJECT_PATH" // } // } }En la siguiente tabla se describen los campos de registro habituales:
Campos de registro comunes Tipo Descripción @typeCadena Especifica el tipo de carga útil de la entrada de registro e indica que el registro representa un TransformActivityLogpara las operaciones por lotes de almacenamiento.completeTimeMarca de tiempo Marca de tiempo conforme a ISO 8601 en la que se completó la operación. statusObjeto Proporciona información sobre el resultado de la actividad de la operación por lotes. status.errorMessageCadena Un mensaje de error si la operación falla. El mensaje de error solo aparece si el valor de status.statusCodeno esOK.status.errorTypeCadena El tipo de error. El tipo de error solo aparece si el valor de status.statusCodeno esOK.status.statusCodeCadena El código de estado de la operación. La operación se realiza correctamente si el valor es OK. Cualquier otro valor indica que se ha producido un error.logNameCadena Nombre de recurso completo del registro, que indica el proyecto y el flujo de registro. receiveTimestampMarca de tiempo Marca de tiempo en la que el sistema de registro recibió la entrada de registro. resourceObjeto Información sobre el recurso que ha generado la entrada de registro. resource.labelsObjeto Pares clave-valor que proporcionan información de identificación adicional sobre el recurso. resource.typeCadena El tipo de recurso que ha generado el registro. objectMetadataBeforeObjeto Contiene los metadatos del objeto antes de que se intentara realizar la operación por lotes. objectMetadataBefore.gcsObjectObjeto Detalles sobre el objeto. objectMetadataBefore.gcsObject.bucketCadena Nombre del segmento en el que se encuentra el objeto. objectMetadataBefore.gcsObject.generationCadena Número de generación del objeto antes de la operación. objectMetadataBefore.gcsObject.objectKeyCadena Ruta completa del objeto en el segmento. Contenido
jsonPayloadespecífico de la operaciónLa diferencia entre las entradas de registro de las distintas operaciones por lotes radica en el objeto de nivel superior anidado en
jsonPayload. En una entrada de registro determinada solo está disponible uno de los siguientes objetos, que corresponde a la operación por lotes específica que se ha realizado:Eliminar objeto (
DeleteObject)jsonPayload: { "DeleteObject": { "objectMetadataBefore": { "gcsObject": { "bucket": "test-bucket", "generation": "1678912345678901", "objectKey": "test_object.txt" } } } }Retención de objeto (
PutObjectHold)jsonPayload: { "PutObjectHold": { "objectMetadataBefore": { "gcsObject": { "bucket": "test-bucket", "generation": "1678912345678901", "objectKey": "test_object.txt" } }, "temporaryHoldAfter": True, "eventBasedHoldAfter": True } }Objeto de reescritura (
RewriteObject)jsonPayload: { "RewriteObject": { "objectMetadataBefore": { "gcsObject": { "bucket": "test-bucket", "generation": "1678912345678901", "objectKey": "test_object.txt" } }, "kmsKeyVersionAfter": "projects/my-gcp-project/locations/us-central1/keyRings/my-keyring-01/cryptoKeys/my-encryption-key/cryptoKeyVersions/1" } }Poner metadatos (
PutMetadata)jsonPayload: { "PutMetadata": { "objectMetadataBefore": { "gcsObject": { "bucket": "test-bucket", "generation": "1678912345678901", "objectKey": "test_object.txt" } }, "content_disposition_after": "attachment; filename=\"report_final.pdf\"", "content_encoding_after": "gzip", "content_language_after": "en-US", "content_type_after": "application/pdf", "cache_control_after": "public, max-age=3600", "custom_time_after": "2025-06-27T10:00:00Z", "custom_metadata_after": { "project": "marketing", "version": "2.0", "approvedBy": "Admin" } } }
En la siguiente tabla se describen los campos de registro específicos de la operación:
Campos de registro específicos de la operación Tipo Descripción PutObjectHoldObjeto Indica una operación de retención en un objeto. PutObjectHold.temporaryHoldAfterBooleano Si el valor es True, indica que se ha aplicado una retención temporal al objeto después de que se haya completado el trabajo de operaciones por lotes de almacenamiento. Los valores válidos sonTrueyFalse.PutObjectHold.eventBasedHoldAfterBooleano Si el valor es True, indica que se ha aplicado una retención basada en eventos al objeto después de que se haya completado el trabajo de operaciones por lotes de almacenamiento. Los valores válidos sonTrueyFalse.RewriteObjectObjeto Indica una operación de reescritura en un objeto. RewriteObject.kmsKeyVersionAfterCadena Versión de la clave de Cloud Key Management Service utilizada después del trabajo de reescritura. El campo kmsKeyVersionAfterse rellena si la clave de cifrado del objeto ha cambiado como resultado de la reescritura. Es un campo opcional, lo que significa que puede que no esté presente si la versión de la clave de Cloud KMS no ha cambiado después de la reescritura.PutMetadataObjeto Indica una operación de actualización de metadatos en un objeto. PutMetadata.content_disposition_afterCadena Especifica el valor del encabezado Content-Dispositionuna vez completada la tareaPutMetadata. Es un campo opcional que solo se rellena si se ha definido o modificado la disposición del contenido.PutMetadata.content_encoding_afterCadena Especifica el valor del encabezado Content-Encodinguna vez completada la tareaPutMetadata. Es un campo opcional que solo se rellena si se ha definido o modificado la codificación del contenido.PutMetadata.content_language_afterCadena Especifica el valor del encabezado Content-Languageuna vez completada la tareaPutMetadata. Es un campo opcional que solo se rellena si se ha definido o modificado el idioma del contenido.PutMetadata.content_type_afterCadena Especifica el valor del encabezado Content-Typeuna vez completada la tareaPutMetadata. Es un campo opcional que solo se rellena si se ha definido o modificado el tipo de contenido.PutMetadata.cache_control_afterCadena Especifica el valor del encabezado Cache-Controldespués de completar la tareaPutMetadata. Es un campo opcional y solo se rellena si se ha definido o modificado el control de caché.PutMetadata.custom_time_afterCadena Especifica el valor del encabezado Custom-Timedespués de completar la tareaPutMetadata. Es un campo opcional y solo se rellena si se ha definido o modificado la hora personalizada.PutMetadata.custom_metadata_afterMap (clave: cadena, valor: cadena) Contiene un mapa de pares clave-valor Custom- Metadatadespués de la transformación. Este campo incluye los metadatos definidos por el usuario que se hayan definido o modificado en el objeto. Permite almacenar metadatos adicionales de forma flexible.