Cette page explique comment configurer et afficher les journaux des opérations par lot de stockage à l'aide de Cloud Logging. Une tâche d'opérations par lot de stockage peut être configurée pour générer des entrées de journal Cloud Logging pour chaque tâche de transformation. Chaque entrée de journal correspond à la tentative de transformation d'un objet.
Les opérations par lot de stockage sont compatibles avec la journalisation dans Cloud Logging et les journaux d'audit Cloud Storage. Bien que les deux options capturent les actions des opérations par lot de stockage, nous vous recommandons d'utiliser Cloud Logging. Cloud Logging fournit une plate-forme centralisée pour l'analyse des journaux, la surveillance en temps réel et le filtrage avancé. Il s'agit d'une solution robuste pour gérer et comprendre l'activité de vos opérations par lot.
Avant de commencer
Vérifiez que vous avez accès à Cloud Logging. Pour utiliser Cloud Logging, nous vous recommandons d'attribuer le rôle Identity and Access Management Logs Viewer (roles/logging.viewer). Le rôle Logs Viewer (roles/logging.viewer) Identity and Access Management fournit les autorisations Identity and Access Management requises pour afficher vos données Cloud Logging.
Pour en savoir plus sur les autorisations d'accès à Logging, consultez Contrôle des accès avec IAM.
Pour vérifier et accorder les autorisations IAM, procédez comme suit :
- Affichez l'accès défini actuellement pour vérifier l'accès de chaque compte principal.
- Attribuez un rôle aux comptes principaux appropriés dans votre projet.
Comprendre les informations de journalisation
Lorsque la journalisation est activée, les opérations Storage par lot capturent les informations suivantes :
Action enregistrable : la valeur de l'action enregistrable est toujours
transform.États pouvant être consignés : pour chaque action, vous pouvez choisir de consigner un ou les deux états suivants :
SUCCEEDED: l'action a réussi.FAILED: l'action a échoué.
Activer la journalisation
Pour activer la journalisation, spécifiez les actions et les états à consigner.
Ligne de commande
Lorsque vous créez un job d'opérations par lot de stockage avec gcloud
storage batch-operations jobs create, utilisez les options --log-actions et --log-action-states pour activer la journalisation.
gcloud storage batch-operations jobs create JOB_NAME \ --manifest-location=MANIFEST_LOCATION \ --delete-object \ --log-actions=transform \ --log-action-states=LOG_ACTION_STATES
Où :
JOB_NAMEest le nom que vous souhaitez donner à votre job. Exemple :my-jobMANIFEST_LOCATIONest l'emplacement de votre fichier manifeste. Exemple :gs://my-bucket/manifest.csvLOG_ACTION_STATESest une liste d'états à consigner, séparés par une virgule. Exemple :succeeded,failed
API REST
Create a storage batch operations
job
avec un
LoggingConfig.
{ "loggingConfig": { "logActions": ["TRANSFORM"], "logActionStates": ["LOG_ACTION_STATES"], } }
Où :
LOG_ACTION_STATES est une liste d'états à consigner, séparés par une virgule. Exemple :"SUCCEEDED","FAILED"
Afficher les journaux
Pour afficher les journaux des opérations par lot de stockage, procédez comme suit :
Console
Accédez au menu de navigation Google Cloud menu, puis sélectionnez Journalisation > Explorateur de journaux :<br\></br\>
Sélectionnez un projet Google Cloud .
Dans le menu Mettre à niveau, passez de l'ancienne visionneuse de journaux à l'explorateur de journaux.
Pour filtrer vos journaux afin de n'afficher que les entrées des opérations par lot de stockage, saisissez
storage_batch_operations_jobdans le champ de requête, puis cliquez sur Exécuter la requête.Dans le volet Résultats de la requête, cliquez sur Modifier l'heure pour modifier la période pendant laquelle les résultats doivent être renvoyés.
Pour en savoir plus sur l'utilisation de l'explorateur de journaux, consultez la page Utiliser l'explorateur de journaux.
Ligne de commande
Pour rechercher des journaux d'opérations par lot de stockage à l'aide de la gcloud CLI, utilisez la commande gcloud logging read.
Spécifiez un filtre pour limiter les résultats aux journaux des opérations par lot de stockage.
gcloud logging read "resource.type=storage_batch_operations_job"
API REST
Utilisez la méthode API Cloud Logging entries.list.
Pour filtrer vos résultats afin de n'inclure que les entrées liées aux opérations par lot de stockage, utilisez le champ filter. Voici un exemple d'objet de requête JSON :
{
"resourceNames":
[
"projects/my-project-name"
],
"orderBy": "timestamp desc",
"filter": "resource.type=\"storage_batch_operations_job\""
}
Où :
my-project-name est le nom de votre projet.
Format des journaux des opérations Storage par lot
Tous les champs spécifiques aux opérations par lot de stockage sont contenus dans un objet jsonPayload. Bien que le contenu exact de jsonPayload varie en fonction du type de tâche, il existe une structure commune à toutes les entrées TransformActivityLog. Cette section présente les champs de journaux courants, puis décrit en détail les champs spécifiques aux opérations.
Champs de journaux courants
Les champs suivants apparaissent dans tous les journaux :
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" // } // } }Le tableau suivant décrit chacun des champs de journaux courants :
Champs de journaux courants Type Description @typeChaîne Spécifie le type de charge utile de l'entrée de journal et indique que le journal représente un TransformActivityLogpour les opérations par lot de stockage.completeTimeHorodatage Horodatage conforme à la norme ISO 8601 indiquant quand l'opération s'est terminée. statusObjet Fournit des informations sur le résultat de l'activité d'opération par lot. status.errorMessageChaîne Message d'erreur si l'opération échoue. Le message d'erreur ne s'affiche que si la valeur status.statusCoden'est pasOK.status.errorTypeChaîne Type d'erreur. Le type d'erreur ne s'affiche que si la valeur status.statusCoden'est pasOK.status.statusCodeChaîne Code d'état de l'opération. L'opération réussit si la valeur est OK. Toute autre valeur indique un échec.logNameChaîne Nom complet de la ressource du journal, indiquant le projet et le flux de journaux. receiveTimestampHorodatage Code temporel indiquant quand l'entrée de journal a été reçue par le système de journalisation. resourceObjet Informations sur la ressource qui a généré l'entrée de journal. resource.labelsObjet Paires clé/valeur fournissant des informations d'identification supplémentaires sur la ressource. resource.typeChaîne Type de ressource ayant généré le journal. objectMetadataBeforeObjet Contient les métadonnées de l'objet avant la tentative d'opération par lot. objectMetadataBefore.gcsObjectObjet Informations sur l'objet. objectMetadataBefore.gcsObject.bucketChaîne Nom du bucket où se trouve l'objet. objectMetadataBefore.gcsObject.generationChaîne Numéro de génération de l'objet avant l'opération. objectMetadataBefore.gcsObject.objectKeyChaîne Chemin d'accès complet de l'objet dans le bucket. Contenu
jsonPayloadspécifique à l'opérationLa différence entre les entrées de journal pour différentes opérations par lot réside dans l'objet de premier niveau imbriqué dans
jsonPayload. Un seul des objets suivants est disponible dans une entrée de journal donnée, correspondant à l'opération par lot spécifique effectuée :Supprimer un objet (
DeleteObject)jsonPayload: { "DeleteObject": { "objectMetadataBefore": { "gcsObject": { "bucket": "test-bucket", "generation": "1678912345678901", "objectKey": "test_object.txt" } } } }Placer une préservation d'objet (
PutObjectHold)jsonPayload: { "PutObjectHold": { "objectMetadataBefore": { "gcsObject": { "bucket": "test-bucket", "generation": "1678912345678901", "objectKey": "test_object.txt" } }, "temporaryHoldAfter": True, "eventBasedHoldAfter": True } }Réécrire un objet (
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" } }Placer des métadonnées (
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" } } }
Le tableau suivant décrit les champs de journaux spécifiques aux opérations :
Champs de journaux spécifiques aux opérations Type Description PutObjectHoldObjet Indique une opération de préservation sur un objet. PutObjectHold.temporaryHoldAfterBooléen Si la valeur est True, cela signifie qu'une conservation temporaire a été appliquée à l'objet une fois la tâche d'opérations par lot de stockage terminée. Les valeurs valides sontTrueouFalse.PutObjectHold.eventBasedHoldAfterBooléen Si la valeur est True, cela indique qu'une préservation basée sur des événements a été appliquée à l'objet une fois le job d'opérations par lot de stockage terminé. Les valeurs valides sontTrueouFalse.RewriteObjectObjet Indique une opération de réécriture sur un objet. RewriteObject.kmsKeyVersionAfterChaîne Version de la clé Cloud Key Management Service utilisée après le job de réécriture. Le champ kmsKeyVersionAfterest renseigné si la clé de chiffrement de l'objet a été modifiée à la suite de la réécriture. Il s'agit d'un champ facultatif, ce qui signifie qu'il peut ne pas être présent si la version de clé Cloud KMS est restée inchangée après la réécriture.PutMetadataObjet Indique une opération de mise à jour des métadonnées sur un objet. PutMetadata.content_disposition_afterChaîne Spécifie la valeur de l'en-tête Content-Dispositionune fois le jobPutMetadataterminé. Il s'agit d'un champ facultatif qui n'est renseigné que si la disposition du contenu a été définie ou modifiée.PutMetadata.content_encoding_afterChaîne Spécifie la valeur de l'en-tête Content-Encodingune fois le jobPutMetadataterminé. Il s'agit d'un champ facultatif qui n'est renseigné que si l'encodage du contenu a été défini ou modifié.PutMetadata.content_language_afterChaîne Spécifie la valeur de l'en-tête Content-Languageune fois le jobPutMetadataterminé. Il s'agit d'un champ facultatif qui n'est renseigné que si la langue du contenu a été définie ou modifiée.PutMetadata.content_type_afterChaîne Spécifie la valeur de l'en-tête Content-Typeune fois le jobPutMetadataterminé. Il s'agit d'un champ facultatif qui n'est renseigné que si le type de contenu a été défini ou modifié.PutMetadata.cache_control_afterChaîne Spécifie la valeur de l'en-tête Cache-Controlune fois la tâchePutMetadataterminée. Il s'agit d'un champ facultatif qui n'est renseigné que si le contrôle du cache a été défini ou modifié.PutMetadata.custom_time_afterChaîne Spécifie la valeur de l'en-tête Custom-Timeune fois la tâchePutMetadataterminée. Il s'agit d'un champ facultatif qui n'est renseigné que si l'heure personnalisée a été définie ou modifiée.PutMetadata.custom_metadata_afterMap (key: string, value: string) Contient une carte de paires clé/valeur Custom- Metadataaprès la transformation. Ce champ inclut toutes les métadonnées définies par l'utilisateur qui ont été définies ou modifiées sur l'objet. Il permet de stocker de manière flexible des métadonnées supplémentaires.