Exemples de requêtes de tables de métadonnées - Amazon Simple Storage Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Exemples de requêtes de tables de métadonnées

Les exemples suivants montrent comment obtenir différents types d’informations à partir de vos tables de métadonnées S3 à l’aide de requêtes SQL standard.

Gardez à l’esprit les points suivants lorsque vous utilisez ces exemples :

  • Ces exemples sont conçus pour fonctionner avec Amazon Athena. Vous devrez peut-être les modifier pour qu’ils fonctionnent avec un autre moteur de requête.

  • Assurez-vous de comprendre comment optimiser vos requêtes.

  • Remplacez amzn-s3-demo-bucket par le nom du compartiment de tables S3 qui stocke votre table de métadonnées.

  • Remplacez my_metadata_table par le nom de la table de métadonnées que vous interrogez.

  • Pour obtenir la liste complète des colonnes prises en charge, consultez le Schéma des tables de métadonnées S3.

Recherche d’objets par extension de fichier

La requête suivante renvoie des objets associés à une extension de fichier spécifique (.jpg, dans ce cas).

SELECT key FROM "s3tablescatalog/amzn-s3-demo-bucket"."aws_s3_metadata"."my_metadata_table" WHERE key LIKE '%.jpg' AND record_type = 'CREATE'

Affichage de la liste des suppressions d’objets

La requête suivante renvoie les événements de suppression d'objets, y compris l' Compte AWS identifiant ou le principal AWS de service à l'origine de la demande.

SELECT DISTINCT bucket, key, sequence_number, record_type, record_timestamp, requester, source_ip_address, version_id FROM "s3tablescatalog/amzn-s3-demo-bucket"."aws_s3_metadata"."my_metadata_table" WHERE record_type = 'DELETE';

Affichage de la liste des clés de chiffrement AWS KMS utilisées par vos objets

La requête suivante renvoie ARNs les clés AWS Key Management Service (AWS KMS) chiffrant vos objets.

SELECT DISTINCT kms_key_arn FROM "s3tablescatalog/amzn-s3-demo-bucket"."aws_s3_metadata"."my_metadata_table";

Affichage de la liste des objets qui n’utilisent pas de clés KMS

La requête suivante renvoie des objets qui ne sont pas chiffrés à l'aide de AWS KMS clés.

SELECT DISTINCT kms_key_arn FROM "s3tablescatalog/amzn-s3-demo-bucket"."aws_s3_metadata"."my_metadata_table" WHERE encryption_status NOT IN ('SSE-KMS', 'DSSE-KMS') AND record_type = 'CREATE';

Affichage de la liste des métadonnées fournies par Amazon Bedrock

Certains AWS services (comme Amazon Bedrock) chargent des objets sur Amazon S3. Vous pouvez interroger les métadonnées des objets fournies par ces services. Par exemple, la requête suivante inclut la colonne user_metadata permettant de déterminer si des objets ont été chargés par Amazon Bedrock dans un compartiment à usage général.

SELECT DISTINCT bucket, key, sequence_number, record_type, record_timestamp, user_metadata FROM "s3tablescatalog/amzn-s3-demo-bucket"."aws_s3_metadata"."my_metadata_table" WHERE record_type = 'CREATE' AND user_metadata['content-source'] = 'AmazonBedrock';

Si Amazon Bedrock a chargé un objet dans votre compartiment, la colonne user_metadata affiche les métadonnées suivantes associées à cet objet dans le résultat de la requête :

user_metadata {content-additional-params -> requestid="CVK8FWYRW0M9JW65", signedContentSHA384="38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b", content-model-id -> bedrock-model-arn, content-source -> AmazonBedrock}

Identification de l’état actuel de vos objets

La requête suivante peut vous aider à déterminer l’état actuel de vos objets. Cette requête identifie la version la plus récente de chaque objet, filtre les objets supprimés et marque la dernière version de chacun d’eux selon des numéros de séquence. Les résultats sont triés en fonction des colonnes bucket, key et sequence_number.

WITH records_of_interest as ( -- Start with a query that can narrow down the records of interest. SELECT * from "s3tablescatalog/amzn-s3-demo-bucket"."aws_s3_metadata"."my_metadata_table" ), version_stacks as ( SELECT *, -- Introduce a column called 'next_sequence_number', which is the next larger -- sequence_number for the same key version_id in sorted order. LEAD(sequence_number, 1) over (partition by (bucket, key, coalesce(version_id, '')) order by sequence_number ASC) as next_sequence_number from records_of_interest ), -- Pick the 'tip' of each version stack triple: (bucket, key, version_id). -- The tip of the version stack is the row of that triple with the largest sequencer. -- Selecting only the tip filters out any row duplicates. -- This isn't typical, but some events can be delivered more than once to the table -- and include rows that might no longer exist in the bucket (since the -- table contains rows for both extant and extinct objects). -- In the next subquery, eliminate the rows that contain deleted objects. current_versions as ( SELECT * from version_stacks where next_sequence_number is NULL ), -- Eliminate the rows that are extinct from the bucket by filtering with -- record_type. An object version has been deleted from the bucket if its tip is -- record_type==DELETE. existing_current_versions as ( SELECT * from current_versions where not (record_type = 'DELETE' and is_delete_marker = FALSE) ), -- Optionally, to determine which of several object versions is the 'latest', -- you can compare their sequence numbers. A version_id is the latest if its -- tip's sequencer is the largest among all other tips in the same key. with_is_latest as ( SELECT *, -- Determine if the sequence_number of this row is the same as the largest sequencer for the key that still exists. sequence_number = (MAX(sequence_number) over (partition by (bucket, key))) as is_latest_version FROM existing_current_versions ) SELECT * from with_is_latest ORDER BY bucket, key, sequence_number;