Beispiel für Abfragen von Metadatentabellen - Amazon Simple Storage Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Beispiel für Abfragen von Metadatentabellen

Die folgenden Beispiele zeigen, wie Sie mithilfe von Standard-SQL-Abfragen Informationen verschiedener Typen aus Ihren S3-Metadata-Tabellen abrufen können.

Denken Sie an Folgendes, wenn Sie diese Beispiele verwenden:

  • Die Beispiele wurden für die Verwendung mit Amazon Athena geschrieben. Möglicherweise müssen Sie die Beispiele ändern, damit sie mit einer anderen Abfrage-Engine funktionieren.

  • Stellen Sie sicher, dass Sie wissen, wie Sie Ihre Abfragen optimieren können.

  • Ersetzen Sie amzn-s3-demo-bucket durch den Namen des S3-Tabellen-Buckets, in dem Ihre Metadatentabelle gespeichert ist.

  • Ersetzen Sie my_metadata_table durch den Namen der Metadatentabelle, die Sie abfragen.

  • Eine vollständige Liste der unterstützten Spalten finden Sie unter S3-Metadata-Tabellenschema.

Suchen von Objekten anhand der Dateierweiterung

Die folgende Abfrage gibt Objekte mit einer bestimmten Dateierweiterung zurück (.jpg in diesem Fall).

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

Auflisten von Objektlöschungen

Die folgende Abfrage gibt Ereignisse zum Löschen von Objekten zurück, einschließlich der AWS-Konto ID oder des AWS Dienstprinzipals, der die Anfrage gestellt hat.

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';

Auflisten der von Ihren Objekten verwendeten AWS KMS -Verschlüsselungsschlüssel

Die folgende Abfrage gibt den ARNs Schlüssel AWS Key Management Service (AWS KMS) zurück, mit dem Ihre Objekte verschlüsselt wurden.

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

Auflisten von Objekten, die keine KMS-Schlüssel verwenden

Die folgende Abfrage gibt Objekte zurück, die nicht mit AWS KMS Schlüsseln verschlüsselt sind.

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';

Anzeigen von Metadaten, die von Amazon Bedrock bereitgestellt wurden

Einige AWS Dienste (wie Amazon Bedrock) laden Objekte auf Amazon S3 hoch. Sie können die von diesen Diensten bereitgestellten Objektmetadaten abfragen. Die folgende Abfrage enthält beispielsweise die user_metadata-Spalte, um zu ermitteln, ob es Objekte gibt, die von Amazon Bedrock in einen Allzweck-Bucket hochgeladen wurden.

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';

Wenn Amazon Bedrock ein Objekt in Ihren Bucket hochgeladen hat, werden in der user_metadata-Spalte die folgenden Metadaten angezeigt, die mit dem Objekt im Abfrageergebnis verknüpft sind:

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

Verstehen des derzeitigen Status Ihrer Objekte

Die folgende Abfrage kann Ihnen helfen, den aktuellen Status Ihrer Objekte zu bestimmen. Die Abfrage identifiziert die neueste Version jedes Objekts, filtert gelöschte Objekte heraus und markiert die neueste Version jedes Objekts anhand von Sequenznummern. Die Ergebnisse sind nach den Spalten bucket, key und sequence_number sortiert.

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;