2.4. S3 バケット操作

開発者は、Ceph Object Gateway 経由で Amazon S3 アプリケーションプログラミングインターフェイス (API) を使用してバケット操作を実行できます。

以下の表は、バケットの Amazon S3 機能操作と関数のサポートステータスを示しています。

表2.2 バケット操作

機能状態注記

バケットの一覧表示

サポート対象

 

バケットの作成

サポート対象

固定 ACL のさまざまなセット。

バケットライフサイクル

一部サポート対象

ExpirationNoncurrentVersionExpiration および AbortIncompleteMultipartUpload がサポートされます。

PUT バケットライフサイクル

一部サポート対象

ExpirationNoncurrentVersionExpiration および AbortIncompleteMultipartUpload がサポートされます。

バケットライフサイクルの削除

サポート対象

 

バケットオブジェクトの取得

サポート対象

 

バケットの場所

サポート対象

 

バケットバージョンの取得

サポート対象

 

バケットバージョンの送信

サポート対象

 

バケットの削除

サポート対象

 

バケット ACL の取得

サポート対象

固定 ACL のさまざまなセット

バケット ACL の送信

サポート対象

固定 ACL のさまざまなセット

バケットに関する CORS 設定情報を取得

サポート対象

 

バケットに対し CORS 設定を行う

サポート対象

 

バケットの CORS 設定を削除

サポート対象

 

バケットオブジェクトバージョンの一覧表示

サポート対象

 

HEAD バケット

サポート対象

 

バケットマルチパートアップロードの一覧表示

サポート対象

 

バケットポリシー

一部サポート対象

 

バケットリクエストの支払いの取得

サポート対象

 

バケットリクエストの支払いを行う

サポート対象

 

マルチテナントバケット操作

サポート対象

 

2.4.1. 前提条件

  • 稼働中の Red Hat Ceph Storage クラスターがある。
  • RESTful クライアント。

2.4.2. S3 create bucket notifications

バケットレベルでバケット通知を作成します。通知設定には、Red Hat Ceph Storage Object Gateway S3 イベント (ObjectCreated および ObjectRemoved) があります。これらは公開され、バケット通知を送信する宛先である必要があります。バケット通知は S3 オペレーションです。

s3:objectCreate および s3:objectRemove イベントバケット通知を作成するには、PUT を使用します。

client.put_bucket_notification_configuration(
   Bucket=bucket_name,
   NotificationConfiguration={
       'TopicConfigurations': [
           {
               'Id': notification_name,
               'TopicArn': topic_arn,
               'Events': ['s3:ObjectCreated:*', 's3:ObjectRemoved:*']
           }]})

重要

Red Hat は、ObjectCreate イベント (例: putpostmultipartUpload、および copy) をサポートします。また、Red Hat は、object_deletes3_multi_object_delete などの ObjectRemove イベントをサポートしています。

リクエストエンティティー

NotificationConfiguration
詳細
TopicConfiguration エンティティーのリスト。
Container
Required
はい
TopicConfiguration
詳細
イベントエンティティーの IdTopic、および list
Container
Required
はい
id
詳細
通知の名前。
文字列
必須
はい
トピック
説明

トピック Amazon リソース名 (ARN)

注記

トピックは事前に作成する必要があります。

タイプ
文字列
必須
はい
Event
詳細
サポートされるイベントの一覧。複数のイベントエンティティーを使用できます。省略すると、すべてのイベントが処理されます。
文字列
必須
いいえ
フィルター
詳細
S3KeyS3Metadata、および S3Tags エンティティー。
Container
Required
いいえ
S3Key
詳細
オブジェクトキーに基づくフィルタリングの FilterRule エンティティーの一覧。3 つのエンティティーが一覧に含まれる場合があります。たとえば、Name は、prefixsuffix、または regex になります。リスト内のフィルタールールはすべて、フィルターが一致するために一致している必要があります。
Container
Required
いいえ
S3Metadata
詳細
オブジェクトメタデータに基づくフィルタリングの FilterRule エンティティーの一覧。リスト内のフィルタールールはすべて、オブジェクトで定義されたメタデータと一致する必要があります。ただし、フィルターにリストされていない他のメタデータエントリーがある場合には、オブジェクトは一致するままになります。
Container
Required
いいえ
S3Tags
詳細
オブジェクトタグに基づいてフィルタリングする FilterRule エンティティーの一覧。リスト内のフィルタールールはすべて、オブジェクトで定義されたタグと一致する必要があります。ただし、フィルターに他のタグがリストされていない場合、オブジェクトは引き続き一致します。
Container
Required
いいえ
S3Key.FilterRule
詳細
Name エンティティーおよび Value エンティティーです。Name は、prefixsuffix、または regex です。Value は、キー接頭辞、キー接尾辞、またはキーに一致する正規表現を保持します。
Container
Required
はい
S3Metadata.FilterRule
詳細
Name エンティティーおよび Value エンティティーです。Name は、メタデータ属性の名前です (例: x-amz-meta-xxx)。この値は、この属性で想定される値になります。
Container
Required
はい
S3Tags.FilterRule
詳細
Name エンティティーおよび Value エンティティーです。Name はタグキーで、値はタグの値です。
Container
Required
はい

HTTP レスポンス

400
ステータスコード
MalformedXML
詳細
XML は適していません。
400
ステータスコード
InvalidArgument
詳細
ID がないか、トピック ARN がないか無効であるか、イベントが無効です。
404
ステータスコード
NoSuchBucket
詳細
バケットが存在しません。
404
ステータスコード
NoSuchKey
詳細
トピックが存在しません。

id="s3-get-bucket-notifications_dev"]

2.4.3. S3 get bucket notifications

特定の通知を取得するか、バケットに設定されたすべての通知を一覧表示します。

構文

Get /BUCKET?notification=NOTIFICATION_ID HTTP/1.1
Host: cname.domain.com
Date: date
Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET

Get /testbucket?notification=testnotificationID HTTP/1.1
Host: cname.domain.com
Date: date
Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET

レスポンスの例

<NotificationConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
    <TopicConfiguration>
        <Id></Id>
        <Topic></Topic>
        <Event></Event>
        <Filter>
            <S3Key>
                <FilterRule>
                    <Name></Name>
                    <Value></Value>
                </FilterRule>
                 </S3Key>
             <S3Metadata>
                 <FilterRule>
                     <Name></Name>
                     <Value></Value>
                 </FilterRule>
             </S3Metadata>
             <S3Tags>
                 <FilterRule>
                     <Name></Name>
                     <Value></Value>
                 </FilterRule>
             </S3Tags>
         </Filter>
    </TopicConfiguration>
</NotificationConfiguration>

注記

notification サブリソースはバケット通知設定または空の NotificationConfiguration 要素を返します。呼び出し元はバケットの所有者である必要があります。

リクエストエンティティー

notification-id
詳細
通知の名前。ID が指定されていない場合は、すべての通知が一覧表示されます。
String
NotificationConfiguration
詳細
TopicConfiguration エンティティーのリスト。
Container
Required
はい
TopicConfiguration
詳細
イベントエンティティーの IdTopic、および list
Container
Required
はい
id
詳細
通知の名前。
文字列
必須
はい
トピック
説明

トピック Amazon リソース名 (ARN)

注記

トピックは事前に作成する必要があります。

タイプ
文字列
必須
はい
Event
詳細
処理されたイベント。複数のイベントエンティティーが存在する可能性があります。
文字列
必須
はい
フィルター
詳細
指定の設定のフィルター。
Container
Required
いいえ

HTTP レスポンス

404
ステータスコード
NoSuchBucket
詳細
バケットが存在しません。
404
ステータスコード
NoSuchKey
詳細
通知は、提供された場合に存在しません。

2.4.4. S3 delete bucket notifications

バケットから特定の通知またはすべての通知を削除します。

注記

通知の削除は、S3 通知 API の拡張機能です。バケットで定義された通知は、バケットの削除時に削除されます。不明な通知 (例: double delete) を削除しても、エラーとは見なされません。

特定の通知またはすべての通知を削除するには、DELETE を使用します。

構文

DELETE /BUCKET?notification=NOTIFICATION_ID HTTP/1.1

DELETE /testbucket?notification=testnotificationID HTTP/1.1

リクエストエンティティー

notification-id
詳細
通知の名前。通知 ID が指定されていない場合は、バケットのすべての通知が削除されます。
String

HTTP レスポンス

404
ステータスコード
NoSuchBucket
詳細
バケットが存在しません。

2.4.5. バケットのホスト名へのアクセス

バケットにアクセスするモードは 2 つあります。最初のメソッドは推奨されるメソッドで、バケットを URI の最上位ディレクトリーとして識別します。

GET /mybucket HTTP/1.1
Host: cname.domain.com

2 番目のメソッドは、仮想バケットのホスト名経由でバケットを識別します。

GET / HTTP/1.1
Host: mybucket.cname.domain.com

ヒント

2 番目の方法では高価なドメイン認定と DNS ワイルドカードが必要なため、Red Hat は最初の方法を推奨します。

2.4.6. S3 list buckets

GET / は、ユーザーがリクエストを行うユーザーが作成するバケットの一覧を返します。GET / は、認証ユーザーが作成したバケットのみを返します。匿名のリクエストを行うことはできません。

構文

GET / HTTP/1.1
Host: cname.domain.com

Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET

表2.3 レスポンスエンティティー

Name詳細

Buckets

コンテナー

バケットの一覧用のコンテナー。

Bucket

コンテナー

バケット情報用のコンテナー

名前

文字列

バケット名。

CreationDate

Date

バケットが作成された時点の UTC 時間。

ListAllMyBucketsResult

コンテナー

結果のコンテナー。

Owner

コンテナー

バケット所有者の ID および DisplayName のコンテナー。

ID

文字列

バケット所有者の ID。

DisplayName

文字列

バケットの所有者の表示名。

2.4.7. S3 はバケットオブジェクトの一覧を返します。

バケットオブジェクトの一覧を返します。

構文

GET /BUCKET?max-keys=25 HTTP/1.1
Host: cname.domain.com

表2.4 パラメーター

名前詳細

prefix

文字列

指定された接頭辞が含まれるオブジェクトのみを返します。

delimiter

文字列

接頭辞と他のオブジェクト名の間に挿入される区切り文字。

marker

文字列

返されるオブジェクトリストの開始インデックス。

max-keys

整数

返すキーの最大数。デフォルトは 1000 です。

表2.5 HTTP レスポンス

HTTP ステータスステータスコード詳細

200

OK

取得されるバケット

GET /BUCKET は、以下のフィールドが含まれるバケットのコンテナーを返します。

表2.6 バケットレスポンスエンティティー

Name詳細

ListBucketResult

エンティティー

オブジェクト一覧のコンテナー。

名前

文字列

コンテンツが返されるバケットの名前。

Prefix

文字列

オブジェクトキーの接頭辞。

Marker

文字列

返されるオブジェクトリストの開始インデックス。

MaxKeys

整数

返されるキーの最大数。

Delimiter

文字列

設定されている場合は、同じ接頭辞を持つオブジェクトが CommonPrefixes リストに表示されます。

IsTruncated

ブール値

true の場合、バケットの内容のサブセットのみが返されます。

CommonPrefixes

コンテナー

複数のオブジェクトに同じ接頭辞が含まれる場合は、この一覧に表示されます。

ListBucketResult にはオブジェクトが含まれ、各オブジェクトは Contents コンテナー内にあります。

表2.7 オブジェクトレスポンスエンティティー

Name詳細

内容

Object

オブジェクトのコンテナー。

Key

文字列

オブジェクトのキー。

LastModified

Date

オブジェクトの最後に変更した日時。

ETag

文字列

オブジェクトの MD-5 ハッシュ (entity タグ)

サイズ

整数

オブジェクトのサイズ。

StorageClass

文字列

常に STANDARD を返す必要があります。

2.4.8. S3 による新規バケットの作成

新規バケットを作成します。バケットを作成するには、要求を認証するためにユーザー ID および有効な AWS アクセスキー ID が必要です。バケットを匿名ユーザーとして作成することはできません。

制約

通常、バケット名はドメイン名の制約に従う必要があります。

  • バケット名は一意である必要があります。
  • バケット名は最初に指定し、小文字で終了する必要があります。
  • バケット名にはダッシュ (-) を含めることができます。

構文

PUT /BUCKET HTTP/1.1
Host: cname.domain.com
x-amz-acl: public-read-write

Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET

表2.8 パラメーター

名前説明有効な値必須

x-amz-acl

固定 ACL。

privatepublic-readpublic-read-writeauthenticated-read

いいえ

HTTP レスポンス

バケット名が一意で、制約内で未使用であると、操作は成功します。同じ名前のバケットがすでに存在し、ユーザーがバケット所有者である場合は、操作が成功します。バケット名が使用中の場合は、操作が失敗します。

HTTP ステータスステータスコード詳細

409

BucketAlreadyExists

バケットは、異なるユーザーの所有権に存在します。

2.4.9. S3 バケットの削除

バケットを削除します。バケットの削除が正常に行われた後にバケット名を再利用できます。

構文

DELETE /BUCKET HTTP/1.1
Host: cname.domain.com

Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET

表2.9 HTTP レスポンス

HTTP ステータスステータスコード詳細

204

コンテンツなし

バケットが削除されました。

2.4.10. S3 bucket lifecycle

バケットのライフサイクル設定を使用してオブジェクトを管理し、そのオブジェクトが有効期間中効果的に保存されるようにすることができます。Ceph Object Gateway の S3 API は、AWS バケットライフサイクルアクションのサブセットをサポートします。

  • Expiration: これはバケット内のオブジェクトの有効期間を定義します。オブジェクトが存続する日数または有効期限がかかり、その時点で Ceph Object Gateway がオブジェクトを削除します。バケットがバージョン管理を有効にしない場合、Ceph Object Gateway はオブジェクトを永続的に削除します。バケットがバージョン管理を有効化する場合、Ceph Object Gateway は現行バージョンの削除マーカーを作成し、現行バージョンを削除します。
  • NoncurrentVersionExpiration: これはバケット内の最新バージョン以外のオブジェクトバージョンのライフサイクルを定義します。この機能を使用するには、バケットがバージョン管理を有効にする必要があります。最新バージョン以外のオブジェクトが存続する日数を取ります。この時点では、Ceph Object Gateway が最新バージョン以外のオブジェクトを削除します。
  • AbortIncompleteMultipartUpload: これは、非完全なマルチパートアップロードが中止されるまでの日数を定義します。

ライフサイクル設定には、<Rule> 要素を使用した 1 つ以上のルールが含まれます。

<LifecycleConfiguration>
    <Rule>
      <Prefix/>
      <Status>Enabled</Status>
      <Expiration>
        <Days>10</Days>
      </Expiration>
    </Rule>
</LifecycleConfiguration>

ライフサイクルルールは、ライフサイクルルールに指定する <Filter> 要素に基づいてバケットの全オブジェクトまたはサブセットに適用できます。フィルターは複数の方法を指定できます。

  • キーの接頭辞
  • オブジェクトタグ
  • キー接頭辞と 1 つ以上のオブジェクトタグの両方

キーの接頭辞

ライフサイクルルールは、キー名の接頭辞に基づいてオブジェクトのサブセットに適用できます。たとえば、<keypre/> を指定すると、keypre/ で始まるオブジェクトに適用されます。

<LifecycleConfiguration>
    <Rule>
        <Status>Enabled</Status>
        <Filter>
           <Prefix>keypre/</Prefix>
        </Filter>
    </Rule>
</LifecycleConfiguration>

異なるキー接頭辞を持つオブジェクトに、異なるライフサイクルルールを適用することもできます。

<LifecycleConfiguration>
    <Rule>
        <Status>Enabled</Status>
        <Filter>
           <Prefix>keypre/</Prefix>
        </Filter>
    </Rule>
    <Rule>
        <Status>Enabled</Status>
        <Filter>
           <Prefix>mypre/</Prefix>
        </Filter>
    </Rule>
</LifecycleConfiguration>

オブジェクトタグ

ライフサイクルルールは、<Key> 要素および <Value> 要素を使用して、特定のタグを持つオブジェクトにのみ適用できます。

<LifecycleConfiguration>
    <Rule>
        <Status>Enabled</Status>
        <Filter>
           <Tag>
              <Key>key</Key>
              <Value>value</Value>
           </Tag>
        </Filter>
    </Rule>
</LifecycleConfiguration>

接頭辞および 1 つ以上のタグの両方

ライフサイクルルールでは、キーの接頭辞と 1 つ以上のタグの両方に基づいてフィルターを指定できます。これらは <And> 要素でラップする必要があります。フィルターには 1 つの接頭辞と、ゼロまたは複数のタグのみを使用できます。

<LifecycleConfiguration>
    <Rule>
        <Status>Enabled</Status>
        <Filter>
          <And>
             <Prefix>key-prefix</Prefix>
             <Tag>
                <Key>key1</Key>
                <Value>value1</Value>
             </Tag>
             <Tag>
                <Key>key2</Key>
                <Value>value2</Value>
             </Tag>
              ...
          </And>
        </Filter>
    </Rule>
</LifecycleConfiguration>

関連情報

2.4.11. S3 GET bucket lifecycle

バケットのライフサイクルを取得するには、GET を使用して宛先バケットを指定します。

構文

GET /BUCKET?lifecycle HTTP/1.1
Host: cname.domain.com

Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET

リクエストヘッダー

詳細は、一般的なリクエストヘッダー を参照してください。

レスポンス

レスポンスには、バケットライフサイクルとその要素が含まれます。

2.4.12. S3 create or replace a bucket lifecycle

バケットライフサイクルを作成または置き換えるには、PUT を使用して宛先バケットとライフサイクル設定を指定します。Ceph Object Gateway は、S3 ライフサイクル機能のサブセットのみをサポートします。

構文

PUT /BUCKET?lifecycle HTTP/1.1
Host: cname.domain.com

Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET
<LifecycleConfiguration>
  <Rule>
    <Expiration>
      <Days>10</Days>
    </Expiration>
  </Rule>
    ...
  <Rule>
  </Rule>
</LifecycleConfiguration>

表2.10 リクエストヘッダー

Name説明有効な値必須

content-md5

メッセージの base64 でエンコードされた MD-5 ハッシュ

文字列。デフォルトや制約はありません。

No

関連情報

2.4.13. S3 delete a bucket lifecycle

バケットライフサイクルを削除するには、DELETE を使用し、宛先バケットを指定します。

構文

DELETE /BUCKET?lifecycle HTTP/1.1
Host: cname.domain.com

Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET

リクエストヘッダー

リクエストには特別な要素が含まれません。

レスポンス

レスポンスは、一般的なレスポンスのステータスを返します。

関連情報

  • Amazon S3 の一般的なリクエストヘッダーは、付録 A を参照してください。
  • Amazon S3 の一般的なレスポンスステータスコードは、付録 B を参照してください。

2.4.14. S3 get bucket location

バケットのゾーングループを取得します。これを呼び出すには、ユーザーはバケット所有者である必要があります。PUT 要求時に LocationConstraint を指定して、バケットをゾーングループに制限できます。

以下のように location サブリソースをバケットリソースに追加します。

構文

GET /BUCKET?location HTTP/1.1
Host: cname.domain.com

Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET

表2.11 レスポンスエンティティー

Name詳細

LocationConstraint

文字列

バケットが存在するゾーングループ (デフォルトゾーングループ用の空の文字列)

2.4.15. S3 によるバケットのバージョン管理を取得

バケットのバージョン状態を取得します。これを呼び出すには、ユーザーはバケット所有者である必要があります。

以下のように、versioning サブリソースをバケットリソースに追加します。

構文

GET /BUCKET?versioning HTTP/1.1
Host: cname.domain.com

Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET

2.4.16. S3 によるバケットのバージョン管理の設定

このサブリソースは、既存のバケットのバージョン管理状態を設定します。バージョン管理状態を設定するには、バケット所有者である必要があります。バージョン管理状態がバケットに設定されていないと、バージョンは管理されていません。GET バージョン管理リクエストを実行しても、バージョン管理状態の値は返されません。

バケットによるバージョン管理の状態を設定します。

Enabled: バケットのオブジェクトのバージョン管理を有効にします。バケットに追加したすべてのオブジェクトは、一意のバージョン ID を受信します。Suspended: バケットのオブジェクトのバージョン管理を無効にします。バケットに追加したすべてのオブジェクトは、バージョン ID の Null を受け取ります。

構文

PUT /BUCKET?versioning HTTP/1.1

表2.12 バケット要求のエンティティー

Name詳細

VersioningConfiguration

コンテナー

要求のコンテナー。

状態

文字列

バケットのバージョン状態を設定します。有効な値: Suspended/Enabled

2.4.17. S3 でバケットのアクセス制御リストを取得

バケットのアクセス制御リストを取得します。ユーザーはバケットの所有者である必要があります。または、バケットで READ_ACP パーミッションが付与されている必要があります。

以下のように、acl サブリソースをバケット要求に追加します。

構文

GET /BUCKET?acl HTTP/1.1
Host: cname.domain.com

Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET

表2.13 レスポンスエンティティー

Name詳細

AccessControlPolicy

コンテナー

レスポンスのコンテナー。

AccessControlList

コンテナー

ACL 情報用のコンテナー

Owner

コンテナー

バケット所有者の ID および DisplayName のコンテナー。

ID

文字列

バケット所有者の ID。

DisplayName

文字列

バケットの所有者の表示名。

Grant

コンテナー

Grantee および Permission のコンテナー。

Grantee

コンテナー

パーミッションを付与されるユーザーの DisplayName および ID のコンテナー。

Permission

文字列

Grantee バケットに指定されるパーミッション。

2.4.18. S3 でバケットのアクセス制御リストを取得

既存のバケットへのアクセス制御を設定します。ユーザーはバケットの所有者である必要があります。または、バケットの WRITE_ACP パーミッションが付与されている必要があります。

以下のように、acl サブリソースをバケット要求に追加します。

構文

PUT /BUCKET?acl HTTP/1.1

表2.14 リクエストエンティティー

Name詳細

AccessControlPolicy

コンテナー

要求のコンテナー。

AccessControlList

コンテナー

ACL 情報用のコンテナー

Owner

コンテナー

バケット所有者の ID および DisplayName のコンテナー。

ID

文字列

バケット所有者の ID。

DisplayName

文字列

バケットの所有者の表示名。

Grant

コンテナー

Grantee および Permission のコンテナー。

Grantee

コンテナー

パーミッションを付与されるユーザーの DisplayName および ID のコンテナー。

Permission

文字列

Grantee バケットに指定されるパーミッション。

2.4.19. S3 ではバケットの CORS 設定を取得

バケットに設定された CORS 設定情報を取得します。ユーザーはバケットの所有者である必要があります。または、バケットで READ_ACP パーミッションが付与されている必要があります。

以下に示すように、cors サブリソースをバケット要求に追加します。

構文

GET /BUCKET?cors HTTP/1.1
Host: cname.domain.com

Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET

2.4.20. S3 put bucket cors

バケットの CORS 設定を設定します。ユーザーはバケットの所有者である必要があります。または、バケットで READ_ACP パーミッションが付与されている必要があります。

以下に示すように、cors サブリソースをバケット要求に追加します。

構文

PUT /BUCKET?cors HTTP/1.1
Host: cname.domain.com

Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET

2.4.21. S3 delete a bucket cors

バケットに設定された CORS 設定情報を削除します。ユーザーはバケットの所有者である必要があります。または、バケットで READ_ACP パーミッションが付与されている必要があります。

以下に示すように、cors サブリソースをバケット要求に追加します。

構文

DELETE /BUCKET?cors HTTP/1.1
Host: cname.domain.com

Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET

2.4.22. S3 list bucket object versions

バケット内のすべてのバージョンのオブジェクトに関するメタデータの一覧を返します。バケットへの READ アクセスが必要です。

以下のように versions サブリソースをバケット要求に追加します。

構文

GET /BUCKET?versions HTTP/1.1
Host: cname.domain.com

Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET

GET /BUCKET?versions のパラメーターを指定できますが、いずれも不要です。

表2.15 パラメーター

名前詳細

prefix

文字列

指定の接頭辞が含まれるキーが含まれる進行中のアップロードを返します。

delimiter

文字列

接頭辞と他のオブジェクト名の間に挿入される区切り文字。

key-marker

文字列

アップロード一覧の最初のマーカー。

max-keys

整数

進行中のアップロードの最大数。デフォルト値は 1000 です。

version-id-marker

文字列

リストを開始するオブジェクトバージョンを指定します。

表2.16 レスポンスエンティティー

Name詳細

KeyMarker

文字列

key-marker リクエストパラメーターによって指定されるキーマーカー (ある場合)。

NextKeyMarker

文字列

IsTruncatedtrue の場合に後続のリクエストで使用するキーマーカー。

NextUploadIdMarker

文字列

IsTruncatedtrue の場合に後続のリクエストで使用するアップロード ID マーカー。

IsTruncated

ブール値

true の場合は、バケットのアップロードコンテンツのサブセットのみが返されます。

サイズ

整数

アップロードした部分のサイズ。

DisplayName

文字列

所有者の表示名。

ID

文字列

所有者の ID。

Owner

コンテナー

オブジェクトを所有するユーザーの ID および DisplayName のコンテナー。

StorageClass

文字列

作成されるオブジェクトを保存するために使用されるメソッド。STANDARD または REDUCED_REDUNDANCY

バージョン

コンテナー

バージョン情報のコンテナー

versionId

文字列

オブジェクトのバージョン ID。

versionIdMarker

文字列

省略されたレスポンスのキーの最後のバージョン。

2.4.23. S3 ヘッドバケット

バケットで HEAD を呼び出して、存在する場合は、呼び出し元にアクセス権限があるかどうかを判断します。バケットが存在し、呼び出し元にパーミッションがある場合は 200 OK を返します。バケットが存在しない場合は 404 Not Found、バケットが存在しますが呼び出し元にはアクセスパーミッションがない場合は 403 Forbidden を返します。

構文

HEAD /BUCKET HTTP/1.1
Host: cname.domain.com
Date: date
Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET

2.4.24. S3 list multipart uploads

GET /?uploads は、現在の進行中のマルチパートアップロードの一覧を返します。つまり、アプリケーションは複数パートごとのアップロードを開始しますが、サービスがすべてのアップロードを完了しているわけではありません。

構文

GET /BUCKET?uploads HTTP/1.1

GET /BUCKET?uploads のパラメーターを指定できますが、いずれも不要です。

表2.17 パラメーター

名前詳細

prefix

文字列

指定の接頭辞が含まれるキーが含まれる進行中のアップロードを返します。

delimiter

文字列

接頭辞と他のオブジェクト名の間に挿入される区切り文字。

key-marker

文字列

アップロード一覧の最初のマーカー。

max-keys

整数

進行中のアップロードの最大数。デフォルト値は 1000 です。

max-uploads

整数

マルチパートアップロードの最大数。1-1000 の範囲。デフォルト値は 1000 です。

version-id-marker

文字列

key-marker が指定されていない場合は無視されます。辞書式順序で、またはその ID 以降でリストする最初のアップロードの ID を指定します。

表2.18 レスポンスエンティティー

Name詳細

ListMultipartUploadsResult

コンテナー

結果のコンテナー

ListMultipartUploadsResult.Prefix

文字列

prefix 要求パラメーターで指定される接頭辞 (存在する場合)。

Bucket

文字列

バケットのコンテンツを受け取るバケット。

KeyMarker

文字列

key-marker リクエストパラメーターによって指定されるキーマーカー (ある場合)。

UploadIdMarker

文字列

upload-id-marker リクエストパラメーターによって指定されるマーカー (存在する場合)。

NextKeyMarker

文字列

IsTruncatedtrue の場合に後続のリクエストで使用するキーマーカー。

NextUploadIdMarker

文字列

IsTruncatedtrue の場合に後続のリクエストで使用するアップロード ID マーカー。

MaxUploads

整数

max-uploads リクエストパラメーターで指定される最大アップロード数。

Delimiter

文字列

設定されている場合は、同じ接頭辞を持つオブジェクトが CommonPrefixes リストに表示されます。

IsTruncated

ブール値

true の場合は、バケットのアップロードコンテンツのサブセットのみが返されます。

Upload

コンテナー

KeyUploadIdInitiatorOwnerStorageClass、および Initiated 要素のコンテナー。

Key

文字列

マルチパートアップロードが完了した後のオブジェクトのキー。

UploadId

文字列

マルチパートアップロードを識別する ID

Initiator

コンテナー

アップロードを開始したユーザーの IDDisplayName が含まれます。

DisplayName

文字列

イニシエーターの表示名。

ID

文字列

イニシエーターの ID。

Owner

コンテナー

アップロードしたオブジェクトを所有するユーザーの ID および DisplayName のコンテナー。

StorageClass

文字列

作成されるオブジェクトを保存するために使用されるメソッド。STANDARD または REDUCED_REDUNDANCY

Initiated

Date

ユーザーがアップロードを開始した日時。

CommonPrefixes

コンテナー

複数のオブジェクトに同じ接頭辞が含まれる場合は、この一覧に表示されます。

CommonPrefixes.Prefix

文字列

prefix リクエストパラメーターで定義されている接頭辞の後にキーのサブ文字列。

2.4.25. S3 バケットポリシー

Ceph Object Gateway は、バケットに適用される Amazon S3 ポリシー言語のサブセットをサポートします。

作成および削除

Ceph Object Gateway は、CLI ツール radosgw-admin を使用するのではなく、標準の S3 操作を使用して S3 バケットポリシーを管理します。

管理者は、s3cmd コマンドを使用してポリシーを設定または削除できます。

$ cat > examplepol
{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Principal": {"AWS": ["arn:aws:iam::usfolks:user/fred"]},
    "Action": "s3:PutObjectAcl",
    "Resource": [
      "arn:aws:s3:::happybucket/*"
    ]
  }]
}

$ s3cmd setpolicy examplepol s3://happybucket
$ s3cmd delpolicy s3://happybucket

制限事項

Ceph Object Gateway がサポートするのは以下の S3 アクションだけです。

  • s3:AbortMultipartUpload
  • s3:CreateBucket
  • s3:DeleteBucketPolicy
  • s3:DeleteBucket
  • s3:DeleteBucketWebsite
  • s3:DeleteObject
  • s3:DeleteObjectVersion
  • s3:GetBucketAcl
  • s3:GetBucketCORS
  • s3:GetBucketLocation
  • s3:GetBucketPolicy
  • s3:GetBucketRequestPayment
  • s3:GetBucketVersioning
  • s3:GetBucketWebsite
  • s3:GetLifecycleConfiguration
  • s3:GetObjectAcl
  • s3:GetObject
  • s3:GetObjectTorrent
  • s3:GetObjectVersionAcl
  • s3:GetObjectVersion
  • s3:GetObjectVersionTorrent
  • s3:ListAllMyBuckets
  • s3:ListBucketMultiPartUploads
  • s3:ListBucket
  • s3:ListBucketVersions
  • s3:ListMultipartUploadParts
  • s3:PutBucketAcl
  • s3:PutBucketCORS
  • s3:PutBucketPolicy
  • s3:PutBucketRequestPayment
  • s3:PutBucketVersioning
  • s3:PutBucketWebsite
  • s3:PutLifecycleConfiguration
  • s3:PutObjectAcl
  • s3:PutObject
  • s3:PutObjectVersionAcl
注記

Ceph Object Gateway は、ユーザー、グループ、またはロールへのポリシー設定をサポートしません。

Ceph Object Gateway は、Amazon の 12 桁のアカウント ID の代わりに RGW の tenant 識別子を使用します。Amazon Web Service (AWS) S3 と Ceph Object Gateway S3 との間でポリシーを使用する場合、Ceph Object Gateway は、ユーザーの作成時に Amazon アカウント ID をテナント ID として使用する必要があります。

AWS S3 では、すべてのテナントが単一の名前空間を共有します。対照的に、Ceph Object Gateway はすべてのテナントにバケットの独自の名前空間を提供します。現在、別のテナントに属するバケットにアクセスしようとしている Ceph Object Gateway クライアントは、S3 リクエストの tenant:bucket としてそれを処理する必要があります。

AWS では、バケットポリシーは別のアカウントへのアクセスを許可し、そのアカウントの所有者はユーザーパーミッションを持つ個々のユーザーにアクセス権限を付与できます。Ceph Object Gateway はユーザー、ロール、およびグループのパーミッションをサポートしていません。そのため、アカウントの所有者は個々のユーザーに直接アクセスを付与する必要があります。

重要

アカウント全体のアクセスをバケットに付与すると、そのアカウントのすべてのユーザーにアクセス権限が付与されます。

バケットポリシーは文字列の補正を サポートしません

Ceph Object Gateway では、以下の条件キーがサポートされます。

  • aws:CurrentTime
  • aws:EpochTime
  • aws:PrincipalType
  • aws:Referer
  • aws:SecureTransport
  • aws:SourceIp
  • aws:UserAgent
  • aws:username

Ceph Object Gateway のみ は、ListBucket アクションの以下の条件キーをサポートします。

  • s3:prefix
  • s3:delimiter
  • s3:max-keys

Swift への影響

Ceph Object Gateway は、Swift API にバケットポリシーを設定する機能はありません。ただし、S3 API で設定されているバケットポリシーは Swift と S3 のいずれの操作も管理します。

Ceph Object Gateway は、ポリシーで指定されたプリンシパルに対して Swift の認証情報と一致します。

2.4.26. S3 get the request payment configuration on a bucket

requestPayment サブリソースを使用してバケットの要求支払い設定を返します。ユーザーはバケットの所有者である必要があります。または、バケットで READ_ACP パーミッションが付与されている必要があります。

以下のように requestPayment サブリソースをバケット要求に追加します。

構文

GET /BUCKET?requestPayment HTTP/1.1
Host: cname.domain.com

Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET

2.4.27. S3 set the request payment configuration on a bucket

requestPayment サブリソースを使用してバケットの要求支払い設定を設定します。デフォルトでは、バケットの所有者はバケットからのダウンロードに対して支払います。この設定パラメーターにより、バケットの所有者は、ダウンロードを要求するすべてのユーザーが要求に対して要求およびバケットからダウンロードに対して課金されることを指定できます。

以下のように requestPayment サブリソースをバケット要求に追加します。

構文

PUT /BUCKET?requestPayment HTTP/1.1
Host: cname.domain.com

表2.19 リクエストエンティティー

Name詳細

Payer

列挙

ダウンロードおよびリクエストの費用の課金を指定します。

RequestPaymentConfiguration

コンテナー

Payer のコンテナー。

2.4.28. マルチテナントバケット操作

クライアントアプリケーションがバケットにアクセスする場合は、常に特定ユーザーの認証情報で動作します。Red Hat Ceph Storage クラスターでは、すべてのユーザーがテナントに属します。そのため、テナントが明示的に指定されていない場合は、すべてのバケット操作のコンテキストに暗黙的なテナントがあります。したがって、マルチテナンシーは、参照されるバケットと参照ユーザーが同じテナントに属する限り、以前のリリースと完全に後方互換性があります。

明示的なテナントの指定に使用される拡張機能は、使用されるプロトコルおよび認証システムによって異なります。

以下の例では、コロン文字はテナントとバケットを分離します。そのため、URL のサンプルは以下のようになります。

https://rgw.domain.com/tenant:bucket

一方、単純な Python の例は、バケットメソッド自体でテナントとバケットを分離します。

from boto.s3.connection import S3Connection, OrdinaryCallingFormat
  c = S3Connection(
    aws_access_key_id="TESTER",
    aws_secret_access_key="test123",
    host="rgw.domain.com",
    calling_format = OrdinaryCallingFormat()
  )
  bucket = c.get_bucket("tenant:bucket")

注記

ホスト名に、コロンや、バケット名では有効ではない他の区切り文字を含めることができないため、マルチテナンシーを使用して S3 形式のサブドメインを使用することはできません。期間を使用するとあいまいな構文が作成されます。そのため、bucket-in-URL-path 形式をマルチテナンシーと併用する必要があります。

関連情報

2.4.29. 関連情報