メニュー
Amazon Simple Storage Service
開発者ガイド (API Version 2006-03-01)

Amazon S3 ストレージインベントリ

Amazon S3 インベントリは、ストレージ管理用に Amazon S3 が提供するツールの 1 つです。Amazon S3 インベントリを使用して、ビジネスワークフローとビッグデータジョブを簡素化、高速化できます。S3 インベントリは、Amazon S3 同期リスト API オペレーションの代替スケジュールを提供します。Amazon S3 インベントリは、S3 バケットまたは共有プレフィックスに関して、オブジェクトのカンマ区切り値 (CSV) フラットファイル出力と対応するメタデータを毎日または毎週生成します (つまり、名前の先頭が共通文字列のオブジェクト)。

インベントリに含めるオブジェクトメタデータ、すべてのオブジェクトバージョンと現在のバージョンだけのどちらをリストするか、インベントリリストのフラットファイル出力を保存する場所、およびインベントリを毎日または毎週のどちらで生成するかを、設定できます。1 つのバケットに対して複数のインベントリリストを設定できます。料金については、Amazon S3 料金表を参照してください。

Amazon S3 インベントリをセットアップする方法

このセクションでは、インベントリのソースバケットと保存先バケットについて説明し、インベントリをセットアップするステップを示すことで、Amazon S3 をセットアップする方法を説明します。

Amazon S3 インベントリのソースバケットと保存先バケット

インベントリによってオブジェクトがリストされるバケットは、ソースバケットと呼ばれます。インベントリリストのフラットファイルが保存されるバケットは、保存先バケットと呼ばれます。

ソースバケット

Amazon S3 インベントリは、ソースバケットに格納されているオブジェクトをリストします。バケット全体のインベントリリストを取得することも、(オブジェクトキー名の) プレフィックスによってフィルタされたリストを取得することもできます。

ソースバケット:

  • インベントリにリストされているオブジェクトが含まれます。

  • インベントリの設定が含まれます。

保存先バケット

Amazon S3 インベントリリストのフラットファイルは、保存先バケットに書き込まれます。インベントリの設定で保存先の (オブジェクトキー名) プレフィックスを指定して、すべてのインベントリリストファイルを保存先バケットの共通の場所にグループ化できます。

保存先バケット:

  • インベントリのフラットファイルリストが含まれます。

  • 保存先バケットに保存されているすべてのフラットファイルインベントリリストをリストした manifest.json ファイルが含まれます。詳細については、「インベントリマニフェストとは」を参照してください。

  • バケットの所有権を検証するためのアクセス許可と、バケットにファイルを書き込むためのアクセス許可を Amazon S3 に付与する、バケットポリシーが必要です。

  • ソースバケットと同じリージョンに存在する必要があります。

  • ソースバケットと同じでもかまいません。

  • ソースバケットを所有するアカウントとは別の AWS アカウントによって所有されていてもかまいません。

Amazon S3 インベントリのセットアップ

Amazon S3 インベントリは、定義したスケジュールで S3 バケット内のオブジェクトのリストを作成し、ストレージの管理に役立ちます。インベントリリストは、保存先バケットのフラットファイルに発行されます。

S3 バケットの Amazon S3 インベントリをセットアップするには:

  1. 保存先バケットのバケットポリシーを追加します。

    定義された場所のバケットにオブジェクトを書き込むアクセス許可を Amazon S3 に付与するバケットポリシーを保存先バケットに作成する必要があります。ポリシーの例については、「Amazon S3 インベントリおよび Amazon S3 分析に対するアクセス権限の付与」を参照してください。

  2. ソースバケットのオブジェクトをリストして保存先バケットにリストを発行するようにインベントリを設定します。

    ソースバケットのインベントリリストを設定するときは、リストを保存する保存先バケットと、リストを毎日または毎週のどちらで生成するかを、指定します。また、含めるオブジェクトメタデータ、およびすべてのオブジェクトバージョンと現在のバージョンだけのどちらをリストするかも、設定できます。1 つのバケットに対して複数のインベントリリストを設定できます。

    • AWS マネジメントコンソール でこれを行う方法については、「ストレージインベントリを設定する方法」(Amazon Simple Storage Service コンソールユーザーガイド) を参照してください。

    • Amazon S3 API を使用してインベントリリストを設定するには、PUT バケットインベントリ設定 REST API を使用するか、AWS CLI または AWS SDK のそれに相当する機能を使用します。

Amazon S3 インベントリに含まれるもの

インベントリリストのフラットファイルには、ソースバケット内のオブジェクトのリストと、各オブジェクトのメタデータが含まれます。インベントリリストは、GZIP で圧縮されたカンマ区切り値 (CSV) ファイルとして、保存先バケットに保存されます。

インベントリリストには、S3 バケット内のオブジェクトのリストと、リストされている各オブジェクトの次のメタデータが含まれます。

  • バケット名 – インベントリ対象のバケットの名前。

  • キー名 – バケット内のオブジェクトを一意に識別するオブジェクトのキー名 (またはキー)。

  • バージョン ID – オブジェクトのバージョン ID。バケットのバージョニングを有効にすると、Amazon S3 はバケットに追加されたオブジェクトにバージョン番号を割り当てます。詳細については、「オブジェクトのバージョニング」を参照してください。このフィールドは、リストが現在のバージョンのオブジェクトだけである場合は含まれません。

  • IsLatest – オブジェクトが現在のバージョンのオブジェクトである場合は、True に設定されますこのフィールドは、リストが現在のバージョンのオブジェクトだけである場合は含まれません。

  • サイズ – オブジェクトのサイズ (バイト単位)。

  • 最終更新日 – オブジェクトの作成日または最終更新日のどちらか新しい方。

  • ETag – エンティティタグは、オブジェクトのハッシュです。ETag は、オブジェクトのコンテンツに加えた変更のみを反映し、メタデータに加えた変更は反映しません。ETag は、オブジェクトデータの MD5 ダイジェストである場合と、そうでない場合があります。どちらであるかは、オブジェクトの作成方法と暗号化方法によって決まります。

  • ストレージクラス – オブジェクトの保存に使用されるストレージクラス。詳細については、「ストレージクラス」を参照してください。

  • マルチパートアップロードフラグ – オブジェクトがマルチパートアップロードとしてアップロードされた場合は、True に設定されます。詳細については、「マルチパートアップロードの概要」を参照してください。

  • 削除マーカー – オブジェクトが削除マーカーである場合は、True に設定されます。詳細については、「オブジェクトのバージョニング」を参照してください。このフィールドは、リストが現在のバージョンのオブジェクトだけである場合は含まれません。

  • レプリケーションステータスPENDINGCOMPLETEDFAILED、または REPLICA. に設定されます。詳細については、「オブジェクトのレプリケーションのステータスを確認する方法」を参照してください。

スプレッドシートアプリケーションで開いたインベントリリストの例を次に示します。見出し行は例をわかりやすくするためだけのものであり、実際のリストには含まれません。

古いインベントリリストを削除するライフサイクルポリシーを作成することをお勧めします。詳細については、「オブジェクトのライフサイクル管理」を参照してください。

インベントリ整合性

すべてのオブジェクトが各インベントリリストに表示されない場合があります。インベントリリストは、新しいオブジェクトと上書きの両方に対する PUT および DELETE の結果整合性を提供します。インベントリリストはバケット項目のローリングスナップショットであり、結果的に整合します (つまり、最近追加されたオブジェクトまたは削除されたオブジェクトはリストに含まれない可能性があります)。

オブジェクトに対してアクションを実行する前にオブジェクトの状態を検証するため、HEAD Object REST API リクエストを実行してオブジェクトのメタデータを取得するか、Amazon S3 コンソールでオブジェクトのプロパティを確認することをお勧めします。AWS CLI または AWS SDK でオブジェクトのメタデータを確認することもできます。詳細については、Amazon Simple Storage Service API Referenceの「HEAD Object」を参照してください。

インベントリリストの場所

インベントリリストが発行されると、マニフェストファイルは保存先バケットの次の場所に発行されます。

Copy
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 は、同じソースバケットから同じ保存先バケットに複数のインベントリレポートが送られるときの競合を避けるために追加されます。

  • YYYY-MM-DDTHH-MMZ は、インベントリリストが生成された日付です。たとえば、2016-11-06T21-32Z と指定します。

  • manifest.json はマニフェストファイルです。

  • manifest.checksum は、manifest.json ファイルの内容の MD5 です。

インベントリリストは、保存先バケットの次の場所に、毎日または毎週発行されます。

Copy
destination-prefix/source-bucket/data/example-file-name.csv.gz ... destination-prefix/source-bucket/data/example-file-name-1.csv.gz
  • destination-prefix は、インベントリの構成で設定されている (オブジェクトキー名の) プレフィックスであり、保存先バケットの共通の場所にすべてのインベントリリストファイルをグループ化するために使用できます。

  • source-bucket は、インベントリリストの対象であるソースバケットです。異なるソースバケットから複数のインベントリレポートが同じ保存先バケットに送られるときの競合を避けるために追加されます。

  • example-file-name.csv.gz は、インベントリリストファイルの 1 つです。

インベントリマニフェストとは

マニフェストは、ソースバケット名、保存先バケット名、インベントリリストのバージョン、インベントリリストのフラットファイルの形式とスキーマ、インベントリリストファイルの実際のリストなど、インベントリリストについてのメタデータと他の基本情報を提供します。

各インベントリに 1 つのマニフェストがあり、保存先バケット内にあるインベントリリストがリストされている manifest.json ファイルに含まれます。manifest.json ファイルが書き込まれるときは常に、manifest.json ファイルの内容の MD5 である manifest.checksum ファイルが付属します。マニフェストは、新しいリストが保存先バケットに書き込まれるたびに更新されます。

manifest.json ファイルの例を次に示します。

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

インベントリが完了したことを知る方法

マニフェストチェックサムファイルが作成されたら通知を受け取るように、Amazon S3 イベント通知をセットアップできます。これは、インベントリリストが保存先バケットに追加されたことを示します。マニフェストは、保存先の場所にあるすべてのインベントリリストの最新のリストです。

Amazon S3 は、Amazon Simple Notification Service (Amazon SNS) トピック、Amazon Simple Queue Service (Amazon SQS) キュー、または AWS Lambda 関数にイベントを発行できます。詳細については、「 Amazon S3 イベント通知の設定」を参照してください。

次の通知設定は、保存先バケットに新しく追加されるすべての manifest.checksum ファイルが AWS Lambda cloud-function-list-write によって処理されることを定義します。

Copy
<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>

詳細については、AWS Lambda Developer Guideの「Amazon S3 で AWS Lambda を使用する」を参照してください。

次に示すのは、ストレージインベントリに使用される REST オペレーションです。