3.4. S3 バケット操作
開発者は、Ceph Object Gateway 経由で Amazon S3 アプリケーションプログラミングインターフェイス (API) を使用してバケット操作を実行できます。
以下の表は、バケットの Amazon S3 機能操作と関数のサポートステータスを示しています。
機能 | 状態 | 注記 |
---|---|---|
サポート対象 | ||
サポート対象 | 固定 ACL のさまざまなセット。 | |
サポート対象 | ||
サポート対象 | ||
サポート対象 | ||
一部サポート対象 |
| |
一部サポート対象 |
| |
サポート対象 | ||
サポート対象 | ||
サポート対象 | ||
サポート対象 | ||
サポート対象 | ||
サポート対象 | ||
サポート対象 | 固定 ACL のさまざまなセット | |
サポート対象 | 固定 ACL のさまざまなセット | |
サポート対象 | ||
サポート対象 | ||
サポート対象 | ||
サポート対象 | ||
サポート対象 | ||
サポート対象 | ||
一部サポート対象 | ||
サポート対象 | ||
サポート対象 | ||
サポート対象 | ||
サポート対象 | ||
サポート対象 | ||
サポート対象 |
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
イベント (例: put
、post
、multipartUpload
、および copy
) をサポートします。また、Red Hat は、object_delete
、s3_multi_object_delete
などの ObjectRemove
イベントをサポートしています。
リクエストエンティティー
NotificationConfiguration
- 説明
-
TopicConfiguration
エンティティーのリスト。 - 型
- Container
- 必須
- はい
TopicConfiguration
- 説明
-
イベントエンティティーの
Id
、Topic
、およびlist
。 - 型
- Container
- 必須
- はい
id
- 説明
- 通知の名前。
- 型
- String
- 必須
- はい
Topic
- 説明
トピック Amazon リソース名 (ARN)
注記トピックは事前に作成する必要があります。
- 型
- String
- 必須
- はい
Event
- 説明
- サポートされるイベントのリスト。複数のイベントエンティティーを使用できます。省略すると、すべてのイベントが処理されます。
- 型
- String
- 必須
- いいえ
Filter
- 説明
-
S3Key
、S3Metadata
、およびS3Tags
エンティティー。 - 型
- Container
- 必須
- いいえ
S3Key
- 説明
-
オブジェクトキーに基づくフィルタリングの
FilterRule
エンティティーの一覧。リストには最大で 3 つのエンティティーを含めることができます。たとえば、Name
はPrefix
、suffix
、またはregex
になります。リスト内のフィルタールールはすべて、フィルターが一致するために一致している必要があります。 - 型
- Container
- 必須
- いいえ
S3Metadata
- 説明
-
オブジェクトメタデータに基づくフィルタリングの
FilterRule
エンティティーの一覧。リスト内のフィルタールールはすべて、オブジェクトで定義されたメタデータと一致する必要があります。ただし、フィルターにリストされていない他のメタデータエントリーがある場合には、オブジェクトは一致するままになります。 - 型
- Container
- 必須
- いいえ
S3Tags
- 説明
-
オブジェクトタグに基づいてフィルタリングする
FilterRule
エンティティーの一覧。リスト内のフィルタールールはすべて、オブジェクトで定義されたタグと一致する必要があります。ただし、フィルターに他のタグがリストされていない場合、オブジェクトは引き続き一致します。 - 型
- Container
- 必須
- いいえ
S3Key.FilterRule
- 説明
-
Name
エンティティーおよびValue
エンティティーです。Name は、prefix
、suffix
、または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
- 説明
-
イベントエンティティーの
Id
、Topic
、および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_names
が true
に設定されている場合、上記の制約は緩和されます。バケット名は一意である必要があり、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。
- 有効な値
-
private
、public-read
、public-read-write
、authenticated-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>
関連情報
- バケットライフサイクルの取得の詳細については、Red Hat Ceph Storage 開発者ガイド の S3GET バケットライフサイクル セクションを参照してください。
- バケットライフサイクルの作成の詳細については、Red Hat Ceph Storage 開発者ガイド の S3 バケットライフサイクルの作成または置き換え セクションを参照してください。
- バケットライフサイクルの削除の詳細については、Red Hat Ceph Storage 開発者ガイド の S3 によるバケットライフサイクルの削除 セクションを参照してください。
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
リクエストヘッダー
共通リクエストヘッダーの詳細については、付録 B の S3 共通リクエストヘッダー を参照してください。
レスポンス
レスポンスには、バケットライフサイクルとその要素が含まれます。
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
- 説明
-
IsTruncated
がtrue
の場合に後続のリクエストで使用するキーマーカー。 - 型
- String
NextUploadIdMarker
- 説明
-
IsTruncated
がtrue
の場合に後続のリクエストで使用するアップロード 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
- 説明
-
IsTruncated
がtrue
の場合に後続のリクエストで使用するキーマーカー。 - 型
- String
NextUploadIdMarker
- 説明
-
IsTruncated
がtrue
の場合に後続のリクエストで使用するアップロード ID マーカー。 - 型
- String
MaxUploads
- 説明
-
max-uploads
リクエストパラメーターで指定される最大アップロード数。 - 型
- 整数
デリミタ
- 説明
-
設定されている場合は、同じ接頭辞を持つオブジェクトが
CommonPrefixes
リストに表示されます。 - 型
- String
IsTruncated
- 説明
-
true
の場合は、バケットのアップロードコンテンツのサブセットのみが返されます。 - 型
- Boolean
Upload
- 説明
-
Key
、UploadId
、InitiatorOwner
、StorageClass
、およびInitiated
要素のコンテナー。 - 型
- Container
キー
- 説明
- マルチパートアップロードが完了した後のオブジェクトのキー。
- 型
- String
UploadId
- 説明
-
マルチパートアップロードを識別する
ID
。 - 型
- String
イニシエーター
- 説明
-
アップロードを開始したユーザーの
ID
とDisplayName
が含まれます。 - 型
- 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"}} }
関連情報
- PublicAccessBlock の取得の詳細は、Red Hat Ceph Storage 開発者ガイド の S3 GET `PublicAccessBlock` セクションを参照してください。
- PublicAccessBlock の作成または変更の詳細は、Red Hat Ceph Storage 開発者ガイド の S3 PUT `PublicAccessBlock` セクションを参照してください。
- PublicAccessBlock の削除の詳細は、Red Hat Ceph Storage 開発者ガイド の S3 Delete `PublicAccessBlock` セクションを参照してください。
- バケットポリシーの詳細は、Red Hat Ceph Storage 開発者ガイド の S3 バケットポリシー セクションを参照してください。
- Amazon Simple Storage Service (S3) ドキュメントの Amazon S3 ストレージへのパブリックアクセスのブロック セクションを参照してください。
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_
リクエストヘッダー
一般的なリクエストヘッダーの詳細は、付録 B の S3 の一般的なリクエストヘッダー を参照してください。
レスポンス
応答は 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>
リクエストヘッダー
一般的なリクエストヘッダーの詳細は、付録 B の S3 の一般的なリクエストヘッダー を参照してください。
レスポンス
応答は 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
リクエストヘッダー
一般的なリクエストヘッダーの詳細は、付録 B の S3 の一般的なリクエストヘッダー を参照してください。
レスポンス
応答は HTTP 200 応答であり、空の HTTP 本文が返されます。