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 gestión de identidades y accesos.
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_NAME
es el nombre que quieres dar al trabajo. Por ejemplo,my-job
.MANIFEST_LOCATION
es la ubicación de tu manifiesto. Por ejemplo,gs://my-bucket/manifest.csv
.LOG_ACTION_STATES
es 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_job
en el campo de consulta y haz clic en Ejecutar consulta.En el panel Resultados de la consulta, haga clic en Editar hora 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 a 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 @type
Cadena Especifica el tipo de carga útil de la entrada de registro e indica que el registro representa un TransformActivityLog
para las operaciones por lotes de almacenamiento.completeTime
Marca de tiempo Marca de tiempo conforme a ISO 8601 en la que se completó la operación. status
Objeto Proporciona información sobre el resultado de la actividad de la operación por lotes. status.errorMessage
Cadena Un mensaje de error si la operación falla. El mensaje de error solo aparece si el valor de status.statusCode
no esOK
.status.errorType
Cadena El tipo de error. El tipo de error solo aparece si el valor de status.statusCode
no esOK
.status.statusCode
Cadena 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.logName
Cadena Nombre de recurso completo del registro, que indica el proyecto y el flujo de registro. receiveTimestamp
Marca de tiempo Marca de tiempo que indica cuándo recibió el sistema de registro la entrada de registro. resource
Objeto Información sobre el recurso que ha generado la entrada de registro. resource.labels
Objeto Pares clave-valor que proporcionan información de identificación adicional sobre el recurso. resource.type
Cadena El tipo de recurso que ha generado el registro. objectMetadataBefore
Objeto Contiene los metadatos del objeto antes de que se intentara realizar la operación por lotes. objectMetadataBefore.gcsObject
Objeto Detalles sobre el objeto. objectMetadataBefore.gcsObject.bucket
Cadena Nombre del segmento en el que se encuentra el objeto. objectMetadataBefore.gcsObject.generation
Cadena Número de generación del objeto antes de la operación. objectMetadataBefore.gcsObject.objectKey
Cadena Ruta completa del objeto en el segmento. Contenido
jsonPayload
especí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 PutObjectHold
Objeto Indica una operación de retención en un objeto. PutObjectHold.temporaryHoldAfter
Booleano 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 sonTrue
yFalse
.PutObjectHold.eventBasedHoldAfter
Booleano 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 sonTrue
yFalse
.RewriteObject
Objeto Indica una operación de reescritura en un objeto. RewriteObject.kmsKeyVersionAfter
Cadena Versión de la clave de Cloud Key Management Service utilizada después del trabajo de reescritura. El campo kmsKeyVersionAfter
se 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.PutMetadata
Objeto Indica una operación de actualización de metadatos en un objeto. PutMetadata.content_disposition_after
Cadena Especifica el valor del encabezado Content-Disposition
una 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_after
Cadena Especifica el valor del encabezado Content-Encoding
una 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_after
Cadena Especifica el valor del encabezado Content-Language
una 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_after
Cadena Especifica el valor del encabezado Content-Type
una 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_after
Cadena Especifica el valor del encabezado Cache-Control
despué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_after
Cadena Especifica el valor del encabezado Custom-Time
despué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_after
Map (clave: cadena, valor: cadena) Contiene un mapa de pares clave-valor Custom- Metadata
despué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.