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 la section 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_NAME
est le nom que vous souhaitez donner à votre job. Exemple :my-job
MANIFEST_LOCATION
est l'emplacement de votre fichier manifeste. Exemple :gs://my-bucket/manifest.csv
LOG_ACTION_STATES
est 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_job
dans 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 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 @type
Chaîne Spécifie le type de charge utile de l'entrée de journal et indique que le journal représente un TransformActivityLog
pour les opérations par lot de stockage.completeTime
Horodatage Horodatage conforme à la norme ISO 8601 indiquant quand l'opération s'est terminée. status
Objet Fournit des informations sur le résultat de l'activité d'opération par lot. status.errorMessage
Chaîne Message d'erreur si l'opération échoue. Le message d'erreur ne s'affiche que si la valeur status.statusCode
n'est pasOK
.status.errorType
Chaîne Type d'erreur. Le type d'erreur ne s'affiche que si la valeur status.statusCode
n'est pasOK
.status.statusCode
Chaîne Code d'état de l'opération. L'opération réussit si la valeur est OK
. Toute autre valeur indique un échec.logName
Chaîne Nom complet de la ressource du journal, indiquant le projet et le flux de journaux. receiveTimestamp
Horodatage Code temporel indiquant quand l'entrée de journal a été reçue par le système de journalisation. resource
Objet Informations sur la ressource qui a généré l'entrée de journal. resource.labels
Objet Paires clé/valeur fournissant des informations d'identification supplémentaires sur la ressource. resource.type
Chaîne Type de ressource ayant généré le journal. objectMetadataBefore
Objet Contient les métadonnées de l'objet avant la tentative d'opération par lot. objectMetadataBefore.gcsObject
Objet Détails sur l'objet. objectMetadataBefore.gcsObject.bucket
Chaîne Nom du bucket où se trouve l'objet. objectMetadataBefore.gcsObject.generation
Chaîne Numéro de génération de l'objet avant l'opération. objectMetadataBefore.gcsObject.objectKey
Chaîne Chemin d'accès complet de l'objet dans le bucket. Contenu
jsonPayload
spé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 PutObjectHold
Objet Indique une opération de préservation sur un objet. PutObjectHold.temporaryHoldAfter
Boolé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 sontTrue
ouFalse
.PutObjectHold.eventBasedHoldAfter
Boolé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 sontTrue
ouFalse
.RewriteObject
Objet Indique une opération de réécriture sur un objet. RewriteObject.kmsKeyVersionAfter
Chaîne Version de la clé Cloud Key Management Service utilisée après le job de réécriture. Le champ kmsKeyVersionAfter
est 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.PutMetadata
Objet Indique une opération de mise à jour des métadonnées sur un objet. PutMetadata.content_disposition_after
Chaîne Spécifie la valeur de l'en-tête Content-Disposition
une fois le jobPutMetadata
terminé. 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_after
Chaîne Spécifie la valeur de l'en-tête Content-Encoding
une fois le jobPutMetadata
terminé. 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_after
Chaîne Spécifie la valeur de l'en-tête Content-Language
une fois le jobPutMetadata
terminé. 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_after
Chaîne Spécifie la valeur de l'en-tête Content-Type
une fois le jobPutMetadata
terminé. 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_after
Chaîne Spécifie la valeur de l'en-tête Cache-Control
une fois la tâchePutMetadata
terminé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_after
Chaîne Spécifie la valeur de l'en-tête Custom-Time
une fois la tâchePutMetadata
terminé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_after
Map (key: string, value: string) Contient une carte de paires clé/valeur Custom- Metadata
aprè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.