3.4. S3 バケット操作


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

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

表3.2 バケット操作
機能状態注記

バケットのリスト表示

サポート対象

 

バケットの作成

サポート対象

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

Put Bucket Website

サポート対象

 

Get Bucket Website

サポート対象

 

Delete Bucket Website

サポート対象

 

バケットライフサイクル

一部サポート対象

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

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

一部サポート対象

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

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

サポート対象

 

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

サポート対象

 

バケットの場所

サポート対象

 

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

サポート対象

 

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

サポート対象

 

バケットの削除

サポート対象

 

バケット ACL の取得

サポート対象

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

バケット ACL の送信

サポート対象

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

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

サポート対象

 

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

サポート対象

 

バケットの CORS 設定を削除

サポート対象

 

バケットオブジェクトバージョンのリスト表示

サポート対象

 

HEAD バケット

サポート対象

 

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

サポート対象

 

バケットポリシー

一部サポート対象

 

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

サポート対象

 

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

サポート対象

 

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

サポート対象

 

Get PublicAccessBlock

サポート対象

 

Put PublicAccessBlock

サポート対象

 

Delete PublicAccessBlock

サポート対象

 

3.4.1. 前提条件

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

3.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
必須
はい
TopicConfiguration
説明
イベントエンティティーの IdTopic、および list
Container
必須
はい
id
説明
通知の名前。
String
必須
はい
Topic
説明

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

注記

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

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

HTTP レスポンス

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

3.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
必須
はい
TopicConfiguration
説明
イベントエンティティーの IdTopic、および list
Container
必須
はい
id
説明
通知の名前。
String
必須
はい
Topic
説明

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

注記

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

String
必須
はい
Event
説明
処理されたイベント。複数のイベントエンティティーが存在する可能性があります。
String
必須
はい
Filter
説明
指定の設定のフィルター。
Container
必須
いいえ

HTTP レスポンス

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

3.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
説明
バケットが存在しません。

3.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 は最初の方法を推奨します。

3.4.6. S3 list buckets

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

構文

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

Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET

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

バケット
説明
バケットのリスト用のコンテナー。
Container
Bucket
説明
バケット情報用のコンテナー
Container
名前
説明
バケット名。
String
CreationDate
説明
バケットが作成された時点の UTC 時間。
日付
ListAllMyBucketsResult
説明
結果のコンテナー。
Container
Owner
説明
バケット所有者の ID および DisplayName のコンテナー。
Container
ID
説明
バケット所有者の ID。
String
DisplayName
説明
バケットの所有者の表示名。
String

3.4.7. S3 return a list of bucket objects

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

構文

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

パラメーター

prefix
説明
指定された接頭辞が含まれるオブジェクトのみを返します。
String
delimiter
説明
接頭辞と他のオブジェクト名の間に挿入される区切り文字。
String
marker
説明
返されるオブジェクトリストの開始インデックス。
String
max-keys
説明
返すキーの最大数。デフォルトは 1000 です。
整数

HTTP レスポンス

200
ステータスコード
OK
説明
取得するバケット

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

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

ListBucketResult
説明
オブジェクトリストのコンテナー。
エンティティー
名前
説明
コンテンツが返されるバケットの名前。
String
接頭辞
説明
オブジェクトキーの接頭辞。
String
Marker
説明
返されるオブジェクトリストの開始インデックス。
String
MaxKeys
説明
返されるキーの最大数。
整数
デリミタ
説明
設定されている場合は、同じ接頭辞を持つオブジェクトが CommonPrefixes リストに表示されます。
String
IsTruncated
説明
true の場合、バケットの内容のサブセットのみが返されます。
Boolean
CommonPrefixes
説明
複数のオブジェクトに同じ接頭辞が含まれる場合は、このリストに表示されます。
Container

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

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

内容
説明
オブジェクトのコンテナー。
Object
キー
説明
オブジェクトのキー。
String
LastModified
説明
オブジェクトの最終変更日および時間。
日付
ETag
説明
オブジェクトの MD-5 ハッシュ。ETag はエンティティータグです。
String
サイズ
説明
オブジェクトのサイズ。
整数
StorageClass
説明
常に STANDARD を返す必要があります。
String

3.4.8. S3 create a new bucket

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

制約

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

  • バケット名は一意である必要があります。
  • バケット名を IP アドレスとしてフォーマットすることはできません。
  • バケット名の長さは 3〜63 文字です。
  • バケット名には、大文字やアンダースコアを含めることはできません。
  • バケット名は小文字または数字で始まる必要があります。
  • バケット名にはダッシュ (-) を含めることができます。
  • バケット名は、一連の 1 つ以上のラベルである必要があります。隣接するラベルは単一のピリオド (.) で区切られます。バケット名には、小文字、数字、およびハイフンを含めることができます。各ラベルは、小文字または数字で開始および終了する必要があります。
注記

rgw_relaxed_s3_bucket_namestrue に設定されている場合、上記の制約は緩和されます。バケット名は一意である必要があり、IP アドレスとしてフォーマットすることはできず、最大 255 文字の文字、数字、ピリオド、ダッシュ、およびアンダースコアを含めることができます。

構文

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

Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET

パラメーター

x-amz-acl
説明
固定 ACL。
有効な値
privatepublic-readpublic-read-writeauthenticated-read
必須
いいえ

HTTP レスポンス

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

409
ステータスコード
BucketAlreadyExists
説明
バケットは、異なるユーザーの所有権に存在します。

3.4.9. S3 put bucket website

put bucket website API は、website サブリソースで指定されている Web サイトの設定を設定します。バケットを Web サイトとして設定するには、website のサブリソースをバケットに追加できます。

注記

put 操作には S3:PutBucketWebsite パーミッションが必要です。デフォルトでは、バケットの所有者のみがバケットに接続されている Web サイトを設定できます。

構文

PUT /BUCKET?website-configuration=HTTP/1.1

PUT /testbucket?website-configuration=HTTP/1.1

関連情報

  • この API 呼び出しの詳細は、S3 API を参照してください。

3.4.10. S3 get bucket website

get bucket website API は、website サブリソースで指定されている Web サイトの設定を取得します。

注記

Get 操作を実行するには、S3:GetBucketWebsite パーミッションが必要です。デフォルトでは、バケットの所有者のみがバケット Web 設定を読み取ることができます。

構文

GET /BUCKET?website-configuration=HTTP/1.1

GET /testbucket?website-configuration=HTTP/1.1

関連情報

  • この API 呼び出しの詳細は、S3 API を参照してください。

3.4.11. S3 delete bucket website

delete bucket website API は、バケットの Web サイト設定を削除します。

構文

DELETE /BUCKET?website-configuration=HTTP/1.1

DELETE /testbucket?website-configuration=HTTP/1.1

関連情報

  • この API 呼び出しの詳細は、S3 API を参照してください。

3.4.12. S3 delete a bucket

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

構文

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

Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET

HTTP レスポンス

204
ステータスコード
コンテンツなし
説明
バケットが削除されました。

3.4.13. 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>

関連情報

3.4.14. S3 GET bucket lifecycle

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

構文

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

Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET

リクエストヘッダー

共通リクエストヘッダーの詳細については、付録 BS3 共通リクエストヘッダー を参照してください。

レスポンス

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

3.4.15. 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>

リクエストヘッダー

content-md5
説明
メッセージの base64 でエンコードされた MD-5 ハッシュ
有効な値
文字列。デフォルトや制約はありません。
必須
いいえ

関連情報

  • Amazon S3 共通リクエストヘッダーの詳細については、Red HatCephStorage 開発者ガイド の付録 B の S3 共通リクエストヘッダー のセクションを参照してください。
  • Amazon S3 バケットのライフサイクルの詳細については、Red HatCephStorage 開発者ガイドS3 バケットのライフサイクル のセクションを参照してください。

3.4.16. 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 共通リクエストヘッダーの詳細については、Red HatCephStorage 開発者ガイド の付録 B の S3 共通リクエストヘッダー のセクションを参照してください。
  • Amazon S3 共通応答ステータスコードの詳細については、Red HatCephStorage 開発者ガイド の付録 C の S3 共通応答ステータスコード のセクションを参照してください。

3.4.17. 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

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

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

3.4.18. S3 get bucket versioning

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

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

構文

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

Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET

3.4.19. S3 put bucket versioning

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

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

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

構文

PUT /BUCKET?versioning HTTP/1.1

PUT /testbucket?versioning HTTP/1.1

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

VersioningConfiguration
説明
要求のコンテナー。
Container
状態
説明
バケットのバージョン状態を設定します。有効な値: Suspended/Enabled
String

3.4.20. S3 get bucket access control lists

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

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

構文

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

Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET

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

AccessControlPolicy
説明
応答のコンテナー。
Container
AccessControlList
説明
ACL 情報用のコンテナー
Container
Owner
説明
バケット所有者の ID および DisplayName のコンテナー。
Container
ID
説明
バケット所有者の ID。
String
DisplayName
説明
バケットの所有者の表示名。
String
Grant
説明
Grantee および Permission のコンテナー。
Container
Grantee
説明
パーミッションを付与されるユーザーの DisplayName および ID のコンテナー。
Container
Permission
説明
Grantee バケットに指定されるパーミッション。
String

3.4.21. S3 put bucket Access Control Lists

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

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

構文

PUT /BUCKET?acl HTTP/1.1

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

S3 list multipart uploads

AccessControlList
説明
ACL 情報用のコンテナー
Container
Owner
説明
バケット所有者の ID および DisplayName のコンテナー。
Container
ID
説明
バケット所有者の ID。
String
DisplayName
説明
バケットの所有者の表示名。
String
Grant
説明
Grantee および Permission のコンテナー。
Container
Grantee
説明
パーミッションを付与されるユーザーの DisplayName および ID のコンテナー。
Container
Permission
説明
Grantee バケットに指定されるパーミッション。
String

3.4.22. S3 get bucket cors

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

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

構文

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

Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET

3.4.23. 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

3.4.24. 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

3.4.25. 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 のパラメーターを指定できますが、いずれも不要です。

パラメーター

prefix
説明
指定の接頭辞が含まれるキーが含まれる進行中のアップロードを返します。
String
delimiter
説明
接頭辞と他のオブジェクト名の間に挿入される区切り文字。
String
key-marker
説明
アップロードリストの最初のマーカー。
String
max-keys
説明
進行中のアップロードの最大数。デフォルトは 1000 です。
整数
version-id-marker
説明
リストを開始するオブジェクトバージョンを指定します。
String

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

KeyMarker
説明
key-marker 要求パラメーターによって指定されるキーマーカー (存在する場合)。
String
NextKeyMarker
説明
IsTruncatedtrue の場合に後続のリクエストで使用するキーマーカー。
String
NextUploadIdMarker
説明
IsTruncatedtrue の場合に後続のリクエストで使用するアップロード ID マーカー。
String
IsTruncated
説明
true の場合は、バケットのアップロードコンテンツのサブセットのみが返されます。
Boolean
サイズ
説明
アップロードした部分のサイズ。
整数
DisplayName
説明
所有者の表示名。
String
ID
説明
所有者の ID。
String
Owner
説明
オブジェクトを所有するユーザーの ID および DisplayName のコンテナー。
Container
StorageClass
説明
作成されるオブジェクトを保存するために使用されるメソッド。STANDARD または REDUCED_REDUNDANCY
String
バージョン
説明
バージョン情報のコンテナー
Container
versionId
説明
オブジェクトのバージョン ID。
String
versionIdMarker
説明
省略されたレスポンスのキーの最後のバージョン。
String

3.4.26. S3 head bucket

バケットで 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

3.4.27. S3 list multipart uploads

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

構文

GET /BUCKET?uploads HTTP/1.1

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

パラメーター

prefix
説明
指定の接頭辞が含まれるキーが含まれる進行中のアップロードを返します。
String
delimiter
説明
接頭辞と他のオブジェクト名の間に挿入される区切り文字。
String
key-marker
説明
アップロードリストの最初のマーカー。
String
max-keys
説明
進行中のアップロードの最大数。デフォルトは 1000 です。
整数
max-uploads
説明
マルチパートアップロードの最大数。範囲は 1-1000 です。デフォルトは 1000 です。
整数
version-id-marker
説明
key-marker が指定されていない場合は無視されます。ID またはそれに続く辞書順序でリストされる最初のアップロードの ID を指定します。
String

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

ListMultipartUploadsResult
説明
結果のコンテナー
Container
ListMultipartUploadsResult.Prefix
説明
prefix 要求パラメーターで指定される接頭辞 (存在する場合)。
String
Bucket
説明
バケットのコンテンツを受け取るバケット。
String
KeyMarker
説明
key-marker 要求パラメーターによって指定されるキーマーカー (存在する場合)。
String
UploadIdMarker
説明
upload-id-marker 要求パラメーターによって指定されるマーカー (存在する場合)。
String
NextKeyMarker
説明
IsTruncatedtrue の場合に後続のリクエストで使用するキーマーカー。
String
NextUploadIdMarker
説明
IsTruncatedtrue の場合に後続のリクエストで使用するアップロード ID マーカー。
String
MaxUploads
説明
max-uploads リクエストパラメーターで指定される最大アップロード数。
整数
デリミタ
説明
設定されている場合は、同じ接頭辞を持つオブジェクトが CommonPrefixes リストに表示されます。
String
IsTruncated
説明
true の場合は、バケットのアップロードコンテンツのサブセットのみが返されます。
Boolean
Upload
説明
KeyUploadIdInitiatorOwnerStorageClass、および Initiated 要素のコンテナー。
Container
キー
説明
マルチパートアップロードが完了した後のオブジェクトのキー。
String
UploadId
説明
マルチパートアップロードを識別する ID
String
イニシエーター
説明
アップロードを開始したユーザーの IDDisplayName が含まれます。
Container
DisplayName
説明
イニシエーターの表示名。
String
ID
説明
イニシエーターの ID。
String
Owner
説明
アップロードしたオブジェクトを所有するユーザーの ID および DisplayName のコンテナー。
Container
StorageClass
説明
作成されるオブジェクトを保存するために使用されるメソッド。STANDARD または REDUCED_REDUNDANCY
String
Initiated
説明
ユーザーがアップロードを開始した日時。
日付
CommonPrefixes
説明
複数のオブジェクトに同じ接頭辞が含まれる場合は、このリストに表示されます。
Container
CommonPrefixes.Prefix
説明
prefix リクエストパラメーターで定義されている接頭辞の後にキーのサブ文字列。
String

3.4.28. S3 bucket policies

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 の認証情報と一致します。

3.4.29. 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

3.4.30. S3 set the request payment configuration on a bucket

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

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

構文

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

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

Payer
説明
ダウンロードおよびリクエストの費用の課金を指定します。
Enum
RequestPaymentConfiguration
説明
Payer のコンテナー。
Container

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

クライアントアプリケーションがバケットにアクセスする場合は、常に特定ユーザーの認証情報で動作します。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 形式をマルチテナンシーと併用する必要があります。

関連情報

  • 詳細は、Red Hat Ceph Storage Object Gateway ガイドユーザー管理マルチテネンシー セクションを参照してください。

3.4.32. S3 ブロックパブリックアクセス

S3 のパブリックアクセスのブロック機能を使用して、Amazon S3 リソースへのパブリックアクセスの管理に役立つアクセスポイント、バケット、アカウントを設定できます。

この機能を使用すると、バケットポリシー、アクセスポイントポリシー、およびオブジェクトの権限をオーバーライドしてパブリックアクセスを許可できます。デフォルトでは、新しいバケット、アクセスポイント、およびオブジェクトはパブリックアクセスを許可しません。

Ceph Object Gateway の S3 API は、AWS パブリックアクセス設定のサブセットをサポートしています。

  • BlockPublicPolicy : ユーザーがアクセスポイントとバケットのポリシーを管理できるようにする設定を定義します。この設定では、ユーザーがバケットまたはバケットに含まれるオブジェクトをパブリックに共有することはできません。既存のアクセスポイントとバケットのポリシーは、この設定を有効にしても影響を受けません。このオプションを TRUE に設定すると、S3 は次のようになります。

    • PUT Bucket ポリシーへの呼び出しを拒否します。
    • バケットの同じアカウントのすべてのアクセスポイントに対する PUT アクセスポイントポリシーへの呼び出しを拒否するには。
重要

この設定を account レベルで適用すると、ユーザーは特定のバケットのパブリックアクセスのブロック設定を変更できなくなります。

注記

TRUE 設定は、指定されたポリシーでパブリックアクセスが許可されている場合にのみ機能します。

  • RestrictPublicBuckets: これは、パブリックポリシーを使用してバケットまたはアクセスポイントへのアクセスを制限する設定を定義します。この制限は、AWS サービスプリンシパルと、バケット所有者のアカウントおよびアクセスポイント所有者のアカウント内の承認されたユーザーにのみ適用されます。これにより、指定された場合を除き、アクセスポイントまたはバケットへのクロスアカウントアクセスがブロックされますが、アカウント内のユーザーは引き続きアクセスポイントまたはバケットを管理できます。この設定を有効にしても、既存のアクセスポイントまたはバケットポリシーには影響しません。これは、Amazon S3 が、特定のアカウントへの非公開委任を含む、パブリックアクセスポイントまたはバケットポリシーに由来するパブリックアクセスおよびクロスアカウントアクセスをブロックすることのみを定義します。
注記

アクセス制御リスト (ACL) は現在、Red Hat Ceph Storage ではサポートされていません。

特に定義されていない限り、バケットポリシーはパブリックであるとみなされます。パブリックアクセスをブロックするには、バケットポリシーで次の 1 つ以上の固定値へのアクセスのみを許可する必要があります。

注記

固定値には、ワイルドカード (*) または AWS Identity and Access Management ポリシー変数は含まれません。

  • AWS プリンシパル、ユーザー、ロール、またはサービスプリンシパル
  • aws:SourceIp を使用したクラスレスドメイン間ルーティング (CIDR) のセット
  • aws:SourceArn
  • aws:SourceVpc
  • aws:SourceVpce
  • aws:SourceOwner
  • aws:SourceAccount
  • s3:x-amz-server-side-encryption-aws-kms-key-id
  • aws:userid、パターン AROLEID:* の外
  • s3:DataAccessPointArn

    注記

    バケットポリシーで使用する場合、アカウント ID が固定されている限り、ポリシーを公開せずに、この値にアクセスポイント名のワイルドカードを含めることができます。

  • s3:DataAccessPointPointAccount

次のポリシー例はパブリックとみなされます。

{
		"Principal": "*",
		"Resource": "*",
		"Action": "s3:PutObject",
		"Effect": "Allow",
		"Condition": { "StringLike": {"aws:SourceVpc": "vpc-*"}}
	}

ポリシーを非公開にするには、固定値を持つ条件キーのいずれかを含めます。

{
		"Principal": "*",
		"Resource": "*",
		"Action": "s3:PutObject",
		"Effect": "Allow",
		"Condition": {"StringEquals": {"aws:SourceVpc": "vpc-91237329"}}
	}

関連情報

3.4.33. S3 GET PublicAccessBlock

S3 ブロックパブリックアクセス機能を設定するには、GET を使用して宛先 AWS アカウントを指定します。

構文

GET /v20180820/configuration/publicAccessBlock HTTP/1.1
Host: cname.domain.com
x-amz-account-id: _ACCOUNTID_

リクエストヘッダー

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

レスポンス

応答は HTTP 200 応答であり、XML 形式で返されます。

3.4.34. S3 PUT PublicAccessBlock

これを使用して、S3 バケットの PublicAccessBlock 設定を作成または変更します。

この操作を使用するには、s3:PutBucketPublicAccessBlock 権限が必要です。

重要

PublicAccessBlock 設定がバケットとアカウント間で異なる場合、Amazon S3 はバケットレベルとアカウントレベルの設定の最も制限的な組み合わせを使用します。

構文

PUT /?publicAccessBlock HTTP/1.1
Host: Bucket.s3.amazonaws.com
Content-MD5: ContentMD5
x-amz-sdk-checksum-algorithm: ChecksumAlgorithm
x-amz-expected-bucket-owner: ExpectedBucketOwner
<?xml version="1.0" encoding="UTF-8"?>
<PublicAccessBlockConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
   <BlockPublicAcls>boolean</BlockPublicAcls>
   <IgnorePublicAcls>boolean</IgnorePublicAcls>
   <BlockPublicPolicy>boolean</BlockPublicPolicy>
   <RestrictPublicBuckets>boolean</RestrictPublicBuckets>
</PublicAccessBlockConfiguration>

リクエストヘッダー

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

レスポンス

応答は HTTP 200 応答であり、空の HTTP 本文が返されます。

3.4.35. S3 delete PublicAccessBlock

これを使用して、S3 バケットの PublicAccessBlock 設定を削除します。

構文

DELETE /v20180820/configuration/publicAccessBlock HTTP/1.1
Host: s3-control.amazonaws.com
x-amz-account-id: AccountId

リクエストヘッダー

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

レスポンス

応答は HTTP 200 応答であり、空の HTTP 本文が返されます。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.