Amazon S3 inventory - Amazon Simple Storage Service

Dieses Handbuch wird nicht mehr aktualisiert. Aktuelle Informationen und Anweisungen finden Sie im neuen Amazon S3-Benutzerhandbuch.

Amazon S3 inventory

Amazon S3 inventory ist eines der Tools, die Amazon S3 zur Verfügung stellt, um die Verwaltung Ihres Speichers zu erleichtern. Sie können es für die Prüfung und Meldung des Replikations- und Verschlüsselungsstatus Ihrer Objekte für Unternehmens-, Compliance- und regulatorische Anforderungen verwenden. Außerdem können Sie Business Workflows und Big Data-Aufgaben mithilfe von Amazon S3 inventory vereinfachen und beschleunigen. Es bietet Ihnen eine geplante Alternative zur synchronen List-API-Operation von Amazon S3.

Amazon S3 inventory stellt Comma Separated Values (CSV), Apache Optimized Row Columnar (ORC) oder Apache Parquet (Parquet)-Ausgabedateien bereit, die Ihre Objekte und die zugehörigen Metadaten auf täglicher oder wöchentlicher Basis für einen S3-Bucket oder ein gemeinsam verwendetes Präfix (das heißt, Objekte, deren Namen mit einer allgemeinen Zeichenfolge beginnen) auflisten. Wenn wöchentlich, wird nach dem ersten Bericht jeden Sonntag (UTC-Zeitzone) ein Bericht generiert. Informationen zu den Preisen für Amazon S3 inventory finden Sie unter Amazon S3-Preise.

Sie können mehrere Bestandslisten für einen Bucket konfigurieren. Sie können konfigurieren, welche Objekt-Metadaten in den Bestand aufgenommen werden sollen, ob alle Objektversionen aufgelistet werden oder nur die aktuellen Versionen, wo die Dateiausgabe der Bestandsliste gespeichert werden soll und ob das Bestandsverzeichnis täglich oder wöchentlich generiert werden soll. Sie können auch angeben, dass die Bestandslistendatei verschlüsselt wird.

Sie können Amazon S3 inventory mit Standard-SQL abfragen, indem Sie Amazon Athena, Amazon Redshift Spectrum und andere Tools wie Presto, Apache Hive und Apache Spark verwenden. Sie können Athena problemlos verwenden, um Abfragen zu Ihren Bestandsdateien auszuführen. Sie können Athena für Amazon S3 inventory-Abfragen in allen Regionen verwenden, in denen Athena verfügbar ist.

Wie richte ich Amazon S3 inventory ein?

In diesem Abschnitt wird beschrieben, wie ein Bestand, einschließlich der Details über den Bestand an Quell- und Ziel-Buckets, eingerichtet wird.

Quell- und Ziel-Buckets für Amazon S3 inventory

Der Bucket, dessen Objekte die Bestandserfassung auflistet, wird als Quell-Bucket bezeichnet. Der Bucket, in dem die Datei mit der Bestandsliste gespeichert ist, wird als Ziel-Bucket bezeichnet.

Quell-Bucket

Der Bestand listet die Objekte auf, die im Quell-Bucket gespeichert sind. Sie können Bestandslisten für einen ganzen Bucket oder nach einem Präfix (Objektschlüsselname) gefiltert erhalten.

Der Quell-Bucket:

  • Enthält die Objekte, die im Bestand aufgelistet sind.

  • Enthält die Konfiguration für den Bestand.

Ziel-Bucket

Amazon S3 inventory listet Dateien auf, die in den Ziel-Bucket geschrieben werden. Um alle Bestandslistendateien an einem gemeinsamen Standort im Ziel-Bucket zu gruppieren, können Sie ein Ziel-Präfix (Objektschlüsselname) in der Bestandskonfiguration angeben.

Der Ziel-Bucket:

  • Enthält die Dateilisten für den Bestand.

  • Enthält die Manifestdateien, die alle Bestandslisten der Datei auflisten, die im Ziel-Bucket gespeichert sind. Weitere Informationen finden Sie unter Was ist ein Bestandsmanifest?

  • Erfordert eine Bucket-Richtlinie, um Amazon S3 die Berechtigung zu erteilen, die Eigentümerschaft an dem Bucket zu überprüfen, ebenso wie die Berechtigung, Dateien in den Bucket zu schreiben.

  • Muss sich in derselben AWS-Region wie der Quell-Bucket befinden.

  • Kann gleich dem Quell-Bucket sein.

  • Kann einem anderen AWS-Konto gehören als das Konto, dem der Quell-Bucket gehört.

Einrichten von Amazon S3 inventory

Amazon S3 inventory hilft Ihnen, Ihren Speicher zu verwalten, indem nach einem definierten Zeitplan Listen der Objekte in einem S3-Bucket erstellt werden. Sie können mehrere Bestandslisten für einen Bucket konfigurieren. Die Bestandslisten werden in CSV-, ORC,- oder Parquet-Dateien in einem Ziel-Bucket veröffentlicht.

Die einfachste Möglichkeit, einen Bestand einzurichten, ist die Verwendung der AWS-Managementkonsole, aber Sie können auch die REST-API, die AWS CLI oder AWS SDKs verwenden. Die Konsole führt den ersten Schritt des folgenden Verfahrens für Sie durch: Hinzufügen einer Bucket-Richtlinie zum Ziel-Bucket.

So richten Sie Amazon S3 inventory für einen S3-Bucket ein:

  1. Fügen Sie eine Bucket-Richtlinie für den Ziel-Bucket hinzu.

    Sie müssen eine Bucket-Richtlinie für den Ziel-Bucket einrichten, um Amazon S3 die Berechtigung zu erteilen, Objekte in den Bucket an dem definierten Standort zu schreiben. Eine Beispielrichtlinie finden Sie unter Erteilen von Berechtigungen für Amazon S3 Inventory und Amazon S3 Analytics.

  2. Konfigurieren Sie eine Bestandsliste, um die Objekte in einem Quell-Bucket aufzulisten und die Liste in einem Ziel-Bucket zu veröffentlichen.

    Wenn Sie eine Bestandsliste für einen Quell-Bucket konfigurieren, geben Sie den Ziel-Bucket an, in dem die Liste gespeichert werden soll, und ob Sie möchten, dass die Liste täglich oder wöchentlich generiert werden soll. Sie können auch konfigurieren, welche Objekt-Metadaten aufgenommen werden sollen, und ob alle Objektversionen oder nur die aktuellen Versionen aufgelistet werden sollen.

    Sie können angeben, dass die Bestandslistendatei verschlüsselt wird, indem Sie einen verwalteten Amazon S3-Schlüssel (SSE-S3) oder einen kundenverwalteten Schlüssel (CMK) von AWS Key Management Service (AWS KMS) verwenden. Weitere Informationen zu SSE-S3 und SSE-KMS finden Sie unter Schützen von Daten mithilfe serverseitiger Verschlüsselung. Wenn Sie die SSE-KMS-Verschlüsselung verwenden möchten, siehe Schritt 3.

    • Informationen zur Verwendung der Konsole zum Konfigurieren einer Bestandsliste finden Sie unter Wie konfiguriere ich Amazon S3 inventory? im Benutzerhandbuch für die Amazon Simple Storage Service Console.

    • Um mit der Amazon S3-API eine Bestandsliste zu konfigurieren, verwenden Sie die PUT Bucket inventory configuration-REST-API oder das Äquivalent aus der AWS CLI oder den AWS SDKs.

  3. Um die Bestandslistendatei mit SSE-KMS zu verschlüsseln, erteilen Sie Amazon S3 die Berechtigung, den in AWS KMS gespeicherten CMK zu verwenden.

    Sie können die Verschlüsselung für die Bestandslistendatei konfigurieren, indem Sie die AWS-Managementkonsole, die REST-API, die AWS CLI oder AWS SDKs verwenden. Unabhängig davon, welche Möglichkeit Sie wählen: Sie müssen Amazon S3 die Berechtigung gewähren, den vom Kunden verwalteten AWS KMS-CMK zum Verschlüsseln der Bestandsdatei zu verwenden. Sie erteilen Amazon S3 die Berechtigung, indem Sie die Schlüsselrichtlinie für den kundenverwalteten CMK ändern, den Sie zur Verschlüsselung der Bestandsdatei verwenden möchten. Weitere Informationen finden Sie im folgenden Abschnitt, Erteilen Sie Amazon S3 die Berechtigung zur Verwendung Ihres AWS KMS CMK für die Verschlüsselung.

Erteilen Sie Amazon S3 die Berechtigung zur Verwendung Ihres AWS KMS CMK für die Verschlüsselung

Um Amazon S3 die Berechtigung zum Verschlüsseln mit einem von Kunden verwalteten AWS Key Management Service (AWS KMS)-Kundenhauptschlüssel (CMK) zu erteilen, müssen Sie eine Schlüsselrichtlinie verwenden. Gehen Sie folgendermaßen vor, um Ihre Schlüsselrichtlinie zu aktualisieren, damit Sie einen kundenverwalteten AWS KMS-CMK zur Verschlüsselung der Bestandsdatei verwenden können.

So erteilen Sie Berechtigungen für die Verschlüsselung mit Ihrem AWS KMS-CMK:

  1. Melden Sie sich bei der AWS-Managementkonsole über das AWS-Konto an, zu dem das vom Kunden verwaltete CMK gehört.

  2. Öffnen Sie die AWS KMS-Konsole unter https://console.aws.amazon.com/kms.

  3. Um die AWS-Region zu ändern, verwenden Sie die Regionsauswahl in der oberen rechten Ecke der Seite.

  4. Klicken Sie im linken Navigationsbereich auf Customer managed keys (Vom Kunden verwaltete Schlüssel).

  5. Wählen Sie unter Customer managed keys (Vom Kunden verwaltete Schlüssel) den Schlüssel aus, den Sie zum Verschlüsseln der Bestandsdatei verwenden möchten. CMKs sind regionsspezifisch und müssen sich in derselben Region wie der Quell-Bucket befinden.

  6. Wählen Sie unter Key policy (Schlüsselrichtlinie) die Option Switch to policy view (Zur Richtlinienansicht wechseln) aus.

  7. Um die Schlüsselrichtlinie zu aktualisieren, wählen Sie Edit (Bearbeiten).

  8. Fügen Sie unter Edit key policy (Schlüsselrichtlinie bearbeiten) die folgende Schlüsselrichtlinie zu der vorhandenen Schlüsselrichtlinie hinzu.

    { "Sid": "Allow Amazon S3 use of the CMK", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": [ "kms:GenerateDataKey" ], "Resource": "*" }
  9. Wählen Sie Save Changes.

    Weitere Informationen zum Erstellen von kundenverwalteten AWS KMS-CMKs und zur Verwendung wichtiger Richtlinien finden Sie in den folgenden Themen im AWS Key Management Service-Entwicklerhandbuch:

    Sie können auch die AWS KMS-PUT-Schlüsselrichtlien-API PutKeyPolicy verwenden, um die Schlüsselrichtlinie in den vom Kunden verwalteten CMK zu kopieren, den Sie zur Verschlüsselung der Bestandsdatei verwenden möchten.

Was ist in Amazon S3 inventory enthalten?

Eine Datei mit einer Bestandsliste enthält eine Liste der Objekte im Quell-Bucket sowie die Metadaten für jedes Objekt. Die Bestandslisten werden im Ziel-Bucket als mit GZIP komprimierte CSV-Datei, als für Apache optimierte und mit ZLIB komprimierte ORC-Datei oder als mit Snappy komprimierte Apache Parquet-Datei gespeichert.

Die Bestandsliste enthält eine Liste der Objekte in einem S3-Bucket sowie die folgenden Metadaten für jedes aufgelistete Objekt:

  • Bucket name (Bucket-Name) – Der Name des Buckets, für den der Bestand gilt.

  • Key name (Schlüsselname) – Name des Objektschlüssels (oder Schlüssel), der das Objekt in dem Bucket eindeutig identifiziert. Bei Verwendung des CSV-Dateiformats ist der Schlüsselname URL-kodiert und muss dekodiert werden, bevor Sie ihn verwenden können.

  • Version ID (Versions-ID) – ID der Objektversion. Wenn Sie die Versionssteuerung für einen Bucket aktivieren, weist Amazon S3 allen Objekten, die dem Bucket hinzugefügt werden, eine Versionsnummer zu. Weitere Informationen finden Sie unter Objekt-Versioning. (Dieses Feld ist nicht enthalten, wenn die Liste nur für die aktuelle Version der Objekte erstellt wird.)

  • IsLatest – Auf True gesetzt, wenn es sich bei dem Objekt um die aktuelle Version des Objekts handelt. (Dieses Feld ist nicht enthalten, wenn die Liste nur für die aktuelle Version der Objekte erstellt wird.)

  • Size (Größe) – Objektgröße in Bytes.

  • Last modified date (Letztes Änderungsdatum) – Datum der Erstellung oder der letzten Änderung des Objekts, je nachdem, welches Datum später liegt.

  • ETag – Der Entitäts-Tag ist ein Hashwert des Objekts. Das ETag gibt nur Änderungen am Inhalt eines Objekts wieder, nicht an seinen Metadaten. Das ETag kann ein MD5 Digest der Objektdaten sein, muss aber nicht. Dies hängt davon ab, wie das Objekt erstellt und verschlüsselt wurde.

  • Storage class (Speicherklasse) – Die für die Speicherung des Objekts verwendete Speicherklasse. Weitere Informationen finden Sie unter Amazon S3-Speicherklassen.

  • Intelligent-Tiering access tier (Zugriffsebene) – Zugriffsebene (häufig oder selten) des Objekts bei Speicherung im Intelligent Tiering. Weitere Informationen finden Sie unter Amazon S3 Intelligent-Tiering.

  • Multipart upload flag (Markierung für mehrteiligen Upload) – Auf True gesetzt, wenn das Objekt als mehrteiliger Upload hochgeladen wurde. Weitere Informationen finden Sie unter Überblick über mehrteiligen Upload.

  • Delete marker (Löschmarkierung) – Auf True gesetzt, wenn es sich bei dem Objekt um eine Löschmarkierung handelt. Weitere Informationen finden Sie unter Objekt-Versioning. (Dieses Feld wird dem Bericht automatisch hinzugefügt, wenn Sie den Bericht so konfiguriert haben, dass alle Versionen der Objekte aufgenommen werden.)

  • Replication status (Replikationsstatus) – auf PENDING, COMPLETED, FAILED oder REPLICA. gesetzt. Für weitere Informationen siehe Informationen zum Replikationsstatus.

  • Encryption status (Verschlüsselungsstatus) – Auf SSE-S3, SSE-C, SSE-KMS oder NOT-SSE gesetzt. Der serverseitige Verschlüsselungsstatus für SSE-S3, SSE-KMS und SSE mit vom Benutzer bereitgestellten Schlüsseln (SSE-C). Der Status NOT-SSE bedeutet, dass das Objekt nicht mit serverseitiger Verschlüsselung verschlüsselt ist. Weitere Informationen finden Sie unter Datenschutz durch Verschlüsselung.

  • S3 Object Lock Retain until date (Aufbewahrungsfrist für S3 Objektsperre) – Das Datum, bis zu dem das gesperrte Objekt nicht gelöscht werden kann. Weitere Informationen finden Sie unter Sperren von Objekten mit S3-Objektsperre.

  • S3 Object Lock Mode (S3-Objektsperrmodus) – Auf Governance oder Compliance gesetzt für Objekte, die gesperrt sind. Weitere Informationen finden Sie unter Sperren von Objekten mit S3-Objektsperre.

  • S3 Object Lock Legal hold status (Rechtlicher Aufbewahrungsstatus der S3-Objektsperre) – Auf On gesetzt, wenn für ein Objekt eine rechtliche Aufbewahrungsfrist gilt; andernfalls auf Off gesetzt. Weitere Informationen finden Sie unter Sperren von Objekten mit S3-Objektsperre.

Wir empfehlen, eine Lebenszyklusrichtlinie einzurichten, die alte Bestandslisten löscht. Weitere Informationen finden Sie unter Verwaltung des Objektlebenszyklus.

Bestandskonsistenz

Möglicherweise erscheinen nicht alle Ihre Objekte in jeder Bestandsliste. Die Bestandsliste bietet letztendliche Datenkonsistenz für PUTs für neue Objekte und überschriebene Objekte, ebenso wie für DELETE-Vorgänge. Bestandslisten sind fortlaufende Momentaufnahmen von Bucket-Elemente, die letztendlich konsistent sind (d. h. die Liste enthält möglicherweise keine vor kurzem hinzugefügten oder gelöschten Objekte).

Um den Status des Objekts zu überprüfen, bevor Sie eine Aktion dafür ausführen, empfehlen wir, eine HEAD Object-REST API-Anfrage zu stellen, um Metadaten für das Objekt abzurufen, oder die Objekteigenschaften in der Amazon S3-Konsole zu überprüfen. Sie können Objektmetadaten auch mit der AWS CLI oder den AWS SDKs überprüfen. Weitere Informationen finden Sie unter HEAD Object in der Amazon Simple Storage Service – API-Referenz.

Wo befinden sich die Bestandslisten?

Wenn eine Bestandsliste veröffentlicht wird, werden die Manifestdateien am folgenden Standort im Ziel-Bucket veröffentlicht.

destination-prefix/source-bucket/config-ID/YYYY-MM-DDTHH-MMZ/manifest.json destination-prefix/source-bucket/config-ID/YYYY-MM-DDTHH-MMZ/manifest.checksum destination-prefix/source-bucket/config-ID/hive/dt=YYYY-MM-DD-HH-MM/symlink.txt
  • destination-prefix ist das Ziel-Präfix (Objektschlüsselname), das in der Bestandskonfiguration angegeben ist, und das verwendet werden kann, um alle Bestandslistendateien an einem gemeinsamen Speicherort im Ziel-Bucket zu gruppieren.

  • source-bucket ist der Quell-Bucket, für den die Bestandsliste erstellt wird. Er wird hinzugefügt, um Kollisionen zu vermeiden, wenn mehrere Bestandsberichte von mehreren Quell-Buckets an denselben Ziel-Bucket gesendet werden.

  • config-ID wird hinzugefügt, um Kollisionen zu vermeiden, wenn mehrere Bestandsberichte vom selben Quell-Bucket an denselben Ziel-Bucket gesendet werden. config-ID kommt aus der Bestandsberichtkonfiguration und ist der Name des Berichts, der bei der Einrichtung festgelegt wurde.

  • YYYY-MM-DDTHH-MMZ ist der Zeitstempel, der sich aus der Startzeit und dem Datum zusammensetzt, an dem die Bestandsberichtserstellung mit dem Scannen des Buckets beginnt, z. B. 2016-11-06T21-32Z.

  • manifest.json ist die Manifestdatei.

  • manifest.checksum ist das MD5 des Inhalts der manifest.json-Datei.

  • symlink.txt ist die Apache Hive-kompatible Manifestdatei.

Die Bestandslisten werden täglich oder wöchentlich am folgenden Standort im Ziel-Bucket veröffentlicht.

destination-prefix/source-bucket/config-ID/example-file-name.csv.gz ... destination-prefix/source-bucket/config-ID/example-file-name-1.csv.gz
  • Ziel-Präfix ist das (Objektschlüsselname-) Präfix, das in der Bestandskonfiguration festgelegt ist. Es kann verwendet werden, um alle Bestandslistendateien an einem gemeinsamen Standort im Ziel-Bucket zu gruppieren.

  • source-bucket ist der Quell-Bucket, für den die Bestandsliste erstellt wird. Er wird hinzugefügt, um Kollisionen zu vermeiden, wenn mehrere Bestandsberichte von mehreren Quell-Buckets an denselben Ziel-Bucket gesendet werden.

  • example-file-name.csv.gz ist eine der CSV-Bestandsdateien. ORC-Bestandsnamen enden mit der Dateinamenserweiterung .orc und Parquet-Bestandsnamen enden mit der Dateinamenserweiterung .parquet.

Was ist ein Bestandsmanifest?

Die Manifest-Dateien manifest.json und symlink.txt beschreiben, wo sich die Bestandsdateien befinden. Wenn eine neue Bestandsliste geliefert wird, wird sie durch eine neue Reihe von Manifestdateien begleitet. Diese Dateien können sich gegenseitig überschreiben und erstellen in zum Versioning fähigen Buckets neue Versionen der Manifestdateien.

Jedes in der manifest.json-Datei enthaltene Manifest bietet Metadaten und andere grundlegende Informationen zu einem Bestand. Diese Informationen beinhalten Folgendes:

  • Name des Quell-Buckets

  • Name des Ziel-Buckets

  • Bestandsversion

  • Erstellungszeitstempel im Epochen-Datumsformat, der aus der Startzeit und dem Datum besteht, an dem die Bestandberichtserstellung beginnt, den Bucket zu scannen

  • Format und Schema der Bestandsdateien

  • Tatsächliche Liste der Bestandsdateien, die im Ziel-Bucket enthalten sind

Immer wenn eine manifest.json-Datei geschrieben wird, wird sie von einer manifest.checksum-Datei begleitet, die das MD5 des Inhalts der manifest.json-Datei ist.

Nachfolgend finden Sie ein Beispiel eines Manifests in einer manifest.json-Datei für einen CSV-formatierten Bestand.

{ "sourceBucket": "example-source-bucket", "destinationBucket": "arn:aws:s3:::example-inventory-destination-bucket", "version": "2016-11-30", "creationTimestamp" : "1514944800000", "fileFormat": "CSV", "fileSchema": "Bucket, Key, VersionId, IsLatest, IsDeleteMarker, Size, LastModifiedDate, ETag, StorageClass, IsMultipartUploaded, ReplicationStatus, EncryptionStatus, ObjectLockRetainUntilDate, ObjectLockMode, ObjectLockLegalHoldStatus", "files": [ { "key": "Inventory/example-source-bucket/2016-11-06T21-32Z/files/939c6d46-85a9-4ba8-87bd-9db705a579ce.csv.gz", "size": 2147483647, "MD5checksum": "f11166069f1990abeb9c97ace9cdfabc" } ] }

Nachfolgend finden Sie ein Beispiel eines Manifests in einer manifest.json-Datei für einen ORC-formatierten Bestand.

{ "sourceBucket": "example-source-bucket", "destinationBucket": "arn:aws:s3:::example-destination-bucket", "version": "2016-11-30", "creationTimestamp" : "1514944800000", "fileFormat": "ORC", "fileSchema": "struct<bucket:string,key:string,version_id:string,is_latest:boolean,is_delete_marker:boolean,size:bigint,last_modified_date:timestamp,e_tag:string,storage_class:string,is_multipart_uploaded:boolean,replication_status:string,encryption_status:string,object_lock_retain_until_date:timestamp,object_lock_mode:string,object_lock_legal_hold_status:string>", "files": [ { "key": "inventory/example-source-bucket/data/d794c570-95bb-4271-9128-26023c8b4900.orc", "size": 56291, "MD5checksum": "5925f4e78e1695c2d020b9f6eexample" } ] }

Nachfolgend finden Sie ein Beispiel eines Manifests in einer manifest.json-Datei für einen Parquet-formatierten Bestand.

{ "sourceBucket": "example-source-bucket", "destinationBucket": "arn:aws:s3:::example-destination-bucket", "version": "2016-11-30", "creationTimestamp" : "1514944800000", "fileFormat": "Parquet", "fileSchema": "message s3.inventory { required binary bucket (UTF8); required binary key (UTF8); optional binary version_id (UTF8); optional boolean is_latest; optional boolean is_delete_marker; optional int64 size; optional int64 last_modified_date (TIMESTAMP_MILLIS); optional binary e_tag (UTF8); optional binary storage_class (UTF8); optional boolean is_multipart_uploaded; optional binary replication_status (UTF8); optional binary encryption_status (UTF8);}" "files": [ { "key": "inventory/example-source-bucket/data/d754c470-85bb-4255-9218-47023c8b4910.parquet", "size": 56291, "MD5checksum": "5825f2e18e1695c2d030b9f6eexample" } ] }

Die symlink.txt-Datei ist eine Apache Hive-kompatible Manifestdatei, mit der Hive Bestandsdateien und die zugehörigen Datendateien automatisch entdecken kann. Das Hive-kompatible Manifest funktioniert mit den Hive-kompatiblen Services Athena und Amazon Redshift Spectrum. Außerdem funktioniert dies mit Hive-kompatiblen Anwendungen, einschließlich Presto, Apache Hive, Apache Spark und vielen anderen.

Wichtig

Die symlink.txt Apache Hive-kompatible Manifestdatei funktioniert derzeit nicht mit AWS Glue.

Das Lesen von symlink.txt mit Apache Hive und Apache Spark wird für ORC- und Parquet--formatierte Bestandsdateien nicht unterstützt.

Woran erkenne ich, ob eine Bestandsliste fertig ist?

Sie können eine Amazon S3-Ereignisbenachrichtigung einrichten, um informiert zu werden, wenn die Prüfsummendatei für das Manifest erstellt wird, woran zu erkennen ist, dass dem Ziel-Bucket eine Bestandsliste hinzugefügt wurde. Das Manifest ist eine aktuelle Liste aller Bestandslisten am Zielstandort.

Amazon S3 kann Ereignisse in einem Amazon Simple Notification Service (Amazon SNS)-Thema, einer Warteschlange des Amazon Simple Queue Service (Amazon SQS) oder einer AWS Lambda-Funktion veröffentlichen. Weitere Informationen finden Sie unter Konfigurieren von Amazon S3-Ereignisbenachrichtigungen.

Die folgende Benachrichtigungskonfiguration definiert, dass alle manifest.checksum-Dateien, die dem Ziel-Bucket hinzugefügt werden, von der AWS Lambda-cloud-function-list-write verarbeitet werden.

<NotificationConfiguration> <QueueConfiguration> <Id>1</Id> <Filter> <S3Key> <FilterRule> <Name>prefix</Name> <Value>destination-prefix/source-bucket</Value> </FilterRule> <FilterRule> <Name>suffix</Name> <Value>checksum</Value> </FilterRule> </S3Key> </Filter> <Cloudcode>arn:aws:lambda:us-west-2:222233334444:cloud-function-list-write</Cloudcode> <Event>s3:ObjectCreated:*</Event> </QueueConfiguration> </NotificationConfiguration>

Weitere Informationen finden Sie unter Verwenden von AWS Lambda mit Amazon S3 im AWS Lambda-Entwicklerhandbuch.

Bestandsabfrage mit Amazon Athena

Sie können Amazon S3-Bestand mit Standard-SQL abfragen, indem Sie Amazon Athena in allen Regionen verwenden, in denen Athena verfügbar ist. Um die Verfügbarkeit in Ihrer AWS-Region zu prüfen, sehen Sie sich die Tabelle der AWS-Regionen an.

Athena kann Amazon S3-Bestandsdateien im ORC-, Parquet-, oder CSV-Format abfragen. Wenn Sie Athena für die Abfrage des Bestands verwenden, empfehlen wir, dass Sie ORC- oder Parquet-formatierte Bestandsdateien anstelle von CSV verwenden. Die Formate ORC und Parquet bieten eine schnellere Abfrageleistung und niedrigere Abfragekosten. ORC und Parquet sind selbstbeschreibende, typerkennende und spaltenbasierte Datenformate, die für Apache Hadoop entwickelt wurden. Das spaltenbasierte Format lässt den Leser nur die Spalten lesen, entpacken und verarbeiten, die für die aktuelle Abfrage benötigt werden. Die ORC- und Parquet-Formate für Amazon S3 inventory sind in allen AWS-Regionen verfügbar. Die Entscheidung, ob das ORC- oder das Parquet-Format verwendet werden soll, hängt tatsächlich von Ihren Daten und Anforderungen ab. Weitere Informationen finden Sie unter Aktualisierungen und Datenformate in Athena.

So beginnen Sie mit der Abfrage von Amazon S3 inventory mit Athena:

  1. Erstellen Sie eine Athena-Tabelle. Informationen zum Erstellen einer Tabelle finden Sie unter Erstellen von Tabellen in Amazon Athena im Amazon Athena-Benutzerhandbuch.

    Die folgende Beispielabfrage umfasst alle optionalen Felder in einem nach ORC formatierten Bestandsbericht. Entfernen Sie alle optionalen Felder, die Sie für Ihren Bestand nicht ausgewählt haben, sodass die Abfrage den für Ihren Bestand gewählten Feldern entspricht. Außerdem müssen Sie den Bucket-Namen und den Standort verwenden. Der Standort zeigt auf Ihren Bestandszielpfad, z. B. s3://destination-prefix/source-bucket/config-ID/hive/.

    CREATE EXTERNAL TABLE your_table_name( `bucket` string, key string, version_id string, is_latest boolean, is_delete_marker boolean, size bigint, last_modified_date timestamp, e_tag string, storage_class string, is_multipart_uploaded boolean, replication_status string, encryption_status string, object_lock_retain_until_date timestamp, object_lock_mode string, object_lock_legal_hold_status string ) PARTITIONED BY (dt string) ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.orc.OrcSerde' STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.SymlinkTextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat' LOCATION 's3://destination-prefix/source-bucket/config-ID/hive/';

    Bei Verwendung von Athena für die Abfrage eines Bestandsberichts im Parquet-Format verwenden Sie das folgende Parquet SerDe anstelle des ORC SerDe in der ROW FORMAT SERDE-Anweisung.

    ROW FORMAT SERDE 'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'

    Bei Verwendung von Athena für die Abfrage eines CSV-formatierten Bestandsberichts verwenden Sie in der ROW FORMAT SERDE-Anweisung das folgende Parquet SerDe anstelle des ORC SerDe.

    ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
  2. Um neue Bestandslisten Ihrer Tabelle hinzuzufügen, verwenden Sie den folgenden MSCK REPAIR TABLE-Befehl.

    MSCK REPAIR TABLE your-table-name;
  3. Nachdem Sie die ersten beiden Schritte ausgeführt haben, können Sie für Ihren Bestand Ad-hoc-Abfragen wie in den folgenden Beispielen veranschaulicht durchführen.

    # Get list of latest inventory report dates available SELECT DISTINCT dt FROM your-table-name ORDER BY 1 DESC limit 10; # Get encryption status for a provided report date. SELECT encryption_status, count(*) FROM your-table-name WHERE dt = 'YYYY-MM-DD-HH-MM' GROUP BY encryption_status; # Get encryption status for report dates in the provided range. SELECT dt, encryption_status, count(*) FROM your-table-name WHERE dt > 'YYYY-MM-DD-HH-MM' AND dt < 'YYYY-MM-DD-HH-MM' GROUP BY dt, encryption_status;

Weitere Informationen zur Verwendung von Athena finden Sie im Amazon Athena-Benutzerhandbuch.

Die folgenden REST-Operationen werden für Amazon S3 inventory verwendet.