2.4. S3 バケット操作
開発者は、Ceph Object Gateway 経由で Amazon S3 アプリケーションプログラミングインターフェイス (API) を使用してバケット操作を実行できます。
以下の表は、バケットの Amazon S3 機能操作と関数のサポートステータスを示しています。
機能 | 状態 | 注記 |
---|---|---|
サポート対象 | ||
サポート対象 | 固定 ACL のさまざまなセット。 | |
一部サポート対象 |
| |
一部サポート対象 |
| |
サポート対象 | ||
サポート対象 | ||
サポート対象 | ||
サポート対象 | ||
サポート対象 | ||
サポート対象 | ||
サポート対象 | 固定 ACL のさまざまなセット | |
サポート対象 | 固定 ACL のさまざまなセット | |
サポート対象 | ||
サポート対象 | ||
サポート対象 | ||
サポート対象 | ||
サポート対象 | ||
サポート対象 | ||
一部サポート対象 | ||
サポート対象 | ||
サポート対象 | ||
サポート対象 |
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
イベント (例: put
、post
、multipartUpload
、および copy
) をサポートします。また、Red Hat は、object_delete
、s3_multi_object_delete
などの ObjectRemove
イベントをサポートしています。
リクエストエンティティー
NotificationConfiguration
- 詳細
-
TopicConfiguration
エンティティーのリスト。 - 型
- Container
- Required
- はい
TopicConfiguration
- 詳細
-
イベントエンティティーの
Id
、Topic
、およびlist
。 - 型
- Container
- Required
- はい
id
- 詳細
- 通知の名前。
- 型
- 文字列
- 必須
- はい
トピック
- 説明
トピック Amazon リソース名 (ARN)
注記トピックは事前に作成する必要があります。
- タイプ
- 文字列
- 必須
- はい
Event
- 詳細
- サポートされるイベントの一覧。複数のイベントエンティティーを使用できます。省略すると、すべてのイベントが処理されます。
- 型
- 文字列
- 必須
- いいえ
フィルター
- 詳細
-
S3Key
、S3Metadata
、およびS3Tags
エンティティー。 - 型
- Container
- Required
- いいえ
S3Key
- 詳細
-
オブジェクトキーに基づくフィルタリングの
FilterRule
エンティティーの一覧。3 つのエンティティーが一覧に含まれる場合があります。たとえば、Name
は、prefix
、suffix
、またはregex
になります。リスト内のフィルタールールはすべて、フィルターが一致するために一致している必要があります。 - 型
- Container
- Required
- いいえ
S3Metadata
- 詳細
-
オブジェクトメタデータに基づくフィルタリングの
FilterRule
エンティティーの一覧。リスト内のフィルタールールはすべて、オブジェクトで定義されたメタデータと一致する必要があります。ただし、フィルターにリストされていない他のメタデータエントリーがある場合には、オブジェクトは一致するままになります。 - 型
- Container
- Required
- いいえ
S3Tags
- 詳細
-
オブジェクトタグに基づいてフィルタリングする
FilterRule
エンティティーの一覧。リスト内のフィルタールールはすべて、オブジェクトで定義されたタグと一致する必要があります。ただし、フィルターに他のタグがリストされていない場合、オブジェクトは引き続き一致します。 - 型
- Container
- Required
- いいえ
S3Key.FilterRule
- 詳細
-
Name
エンティティーおよびValue
エンティティーです。Name は、prefix
、suffix
、または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
- 詳細
-
イベントエンティティーの
Id
、Topic
、および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
Name | 型 | 詳細 |
---|---|---|
| コンテナー | バケットの一覧用のコンテナー。 |
| コンテナー | バケット情報用のコンテナー |
| 文字列 | バケット名。 |
| Date | バケットが作成された時点の UTC 時間。 |
| コンテナー | 結果のコンテナー。 |
| コンテナー |
バケット所有者の |
| 文字列 | バケット所有者の ID。 |
| 文字列 | バケットの所有者の表示名。 |
2.4.7. S3 はバケットオブジェクトの一覧を返します。
バケットオブジェクトの一覧を返します。
構文
GET /BUCKET?max-keys=25 HTTP/1.1
Host: cname.domain.com
名前 | 型 | 詳細 |
---|---|---|
| 文字列 | 指定された接頭辞が含まれるオブジェクトのみを返します。 |
| 文字列 | 接頭辞と他のオブジェクト名の間に挿入される区切り文字。 |
| 文字列 | 返されるオブジェクトリストの開始インデックス。 |
| 整数 | 返すキーの最大数。デフォルトは 1000 です。 |
HTTP ステータス | ステータスコード | 詳細 |
---|---|---|
| OK | 取得されるバケット |
GET /BUCKET
は、以下のフィールドが含まれるバケットのコンテナーを返します。
Name | 型 | 詳細 |
---|---|---|
| エンティティー | オブジェクト一覧のコンテナー。 |
| 文字列 | コンテンツが返されるバケットの名前。 |
| 文字列 | オブジェクトキーの接頭辞。 |
| 文字列 | 返されるオブジェクトリストの開始インデックス。 |
| 整数 | 返されるキーの最大数。 |
| 文字列 |
設定されている場合は、同じ接頭辞を持つオブジェクトが |
| ブール値 |
|
| コンテナー | 複数のオブジェクトに同じ接頭辞が含まれる場合は、この一覧に表示されます。 |
ListBucketResult
にはオブジェクトが含まれ、各オブジェクトは Contents
コンテナー内にあります。
Name | 型 | 詳細 |
---|---|---|
| Object | オブジェクトのコンテナー。 |
| 文字列 | オブジェクトのキー。 |
| Date | オブジェクトの最後に変更した日時。 |
| 文字列 | オブジェクトの MD-5 ハッシュ (entity タグ) |
| 整数 | オブジェクトのサイズ。 |
| 文字列 |
常に |
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
名前 | 説明 | 有効な値 | 必須 |
---|---|---|---|
| 固定 ACL。 |
| いいえ |
HTTP レスポンス
バケット名が一意で、制約内で未使用であると、操作は成功します。同じ名前のバケットがすでに存在し、ユーザーがバケット所有者である場合は、操作が成功します。バケット名が使用中の場合は、操作が失敗します。
HTTP ステータス | ステータスコード | 詳細 |
---|---|---|
| BucketAlreadyExists | バケットは、異なるユーザーの所有権に存在します。 |
2.4.9. S3 バケットの削除
バケットを削除します。バケットの削除が正常に行われた後にバケット名を再利用できます。
構文
DELETE /BUCKET HTTP/1.1 Host: cname.domain.com Authorization: AWS ACCESS_KEY:HASH_OF_HEADER_AND_SECRET
HTTP ステータス | ステータスコード | 詳細 |
---|---|---|
| コンテンツなし | バケットが削除されました。 |
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>
関連情報
- バケットライフサイクルの取得に関する詳細は、Red Hat Ceph Storage 開発者ガイドの バケットライフサイクルの取得 を参照してください。
- バケットライフサイクルの作成に関する詳細は、Red Hat Ceph Storage 開発者ガイドを バケットライフサイクルの作成 を参照してください。
- バケットライフサイクルの削除に関する詳細は、Red Hat Ceph Storage 開発者ガイドの バケットライフサイクルの削除 を参照してください。
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>
Name | 説明 | 有効な値 | 必須 |
---|---|---|---|
content-md5 | メッセージの base64 でエンコードされた MD-5 ハッシュ | 文字列。デフォルトや制約はありません。 | No |
関連情報
- 一般的な Amazon S3 リクエストヘッダーに関する詳細は、Red Hat Ceph Storage 開発者ガイドの Amazon S3 リクエストヘッダー を参照してください。
- Amazon S3 バケットライフサイクルに関する詳細は、Red Hat Ceph Storage 開発者ガイドの Amazon S3 バケットライフサイクル を参照してください。
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
リクエストヘッダー
リクエストには特別な要素が含まれません。
レスポンス
レスポンスは、一般的なレスポンスのステータスを返します。
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
Name | 型 | 詳細 |
---|---|---|
| 文字列 | バケットが存在するゾーングループ (デフォルトゾーングループ用の空の文字列) |
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
Name | 型 | 詳細 |
---|---|---|
| コンテナー | 要求のコンテナー。 |
| 文字列 | バケットのバージョン状態を設定します。有効な値: 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
Name | 型 | 詳細 |
---|---|---|
| コンテナー | レスポンスのコンテナー。 |
| コンテナー | ACL 情報用のコンテナー |
| コンテナー |
バケット所有者の |
| 文字列 | バケット所有者の ID。 |
| 文字列 | バケットの所有者の表示名。 |
| コンテナー |
|
| コンテナー |
パーミッションを付与されるユーザーの |
| 文字列 |
|
2.4.18. S3 でバケットのアクセス制御リストを取得
既存のバケットへのアクセス制御を設定します。ユーザーはバケットの所有者である必要があります。または、バケットの WRITE_ACP
パーミッションが付与されている必要があります。
以下のように、acl
サブリソースをバケット要求に追加します。
構文
PUT /BUCKET?acl HTTP/1.1
Name | 型 | 詳細 |
---|---|---|
| コンテナー | 要求のコンテナー。 |
| コンテナー | ACL 情報用のコンテナー |
| コンテナー |
バケット所有者の |
| 文字列 | バケット所有者の ID。 |
| 文字列 | バケットの所有者の表示名。 |
| コンテナー |
|
| コンテナー |
パーミッションを付与されるユーザーの |
| 文字列 |
|
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
のパラメーターを指定できますが、いずれも不要です。
名前 | 型 | 詳細 |
---|---|---|
| 文字列 | 指定の接頭辞が含まれるキーが含まれる進行中のアップロードを返します。 |
| 文字列 | 接頭辞と他のオブジェクト名の間に挿入される区切り文字。 |
| 文字列 | アップロード一覧の最初のマーカー。 |
| 整数 | 進行中のアップロードの最大数。デフォルト値は 1000 です。 |
| 文字列 | リストを開始するオブジェクトバージョンを指定します。 |
Name | 型 | 詳細 |
---|---|---|
| 文字列 |
|
| 文字列 |
|
| 文字列 |
|
| ブール値 |
|
| 整数 | アップロードした部分のサイズ。 |
| 文字列 | 所有者の表示名。 |
| 文字列 | 所有者の ID。 |
| コンテナー |
オブジェクトを所有するユーザーの |
| 文字列 |
作成されるオブジェクトを保存するために使用されるメソッド。 |
| コンテナー | バージョン情報のコンテナー |
| 文字列 | オブジェクトのバージョン ID。 |
| 文字列 | 省略されたレスポンスのキーの最後のバージョン。 |
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
のパラメーターを指定できますが、いずれも不要です。
名前 | 型 | 詳細 |
---|---|---|
| 文字列 | 指定の接頭辞が含まれるキーが含まれる進行中のアップロードを返します。 |
| 文字列 | 接頭辞と他のオブジェクト名の間に挿入される区切り文字。 |
| 文字列 | アップロード一覧の最初のマーカー。 |
| 整数 | 進行中のアップロードの最大数。デフォルト値は 1000 です。 |
| 整数 | マルチパートアップロードの最大数。1-1000 の範囲。デフォルト値は 1000 です。 |
| 文字列 |
|
Name | 型 | 詳細 |
---|---|---|
| コンテナー | 結果のコンテナー |
| 文字列 |
|
| 文字列 | バケットのコンテンツを受け取るバケット。 |
| 文字列 |
|
| 文字列 |
|
| 文字列 |
|
| 文字列 |
|
| 整数 |
|
| 文字列 |
設定されている場合は、同じ接頭辞を持つオブジェクトが |
| ブール値 |
|
| コンテナー |
|
| 文字列 | マルチパートアップロードが完了した後のオブジェクトのキー。 |
| 文字列 |
マルチパートアップロードを識別する |
| コンテナー |
アップロードを開始したユーザーの |
| 文字列 | イニシエーターの表示名。 |
| 文字列 | イニシエーターの ID。 |
| コンテナー |
アップロードしたオブジェクトを所有するユーザーの |
| 文字列 |
作成されるオブジェクトを保存するために使用されるメソッド。 |
| Date | ユーザーがアップロードを開始した日時。 |
| コンテナー | 複数のオブジェクトに同じ接頭辞が含まれる場合は、この一覧に表示されます。 |
| 文字列 |
|
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
Name | 型 | 詳細 |
---|---|---|
| 列挙 | ダウンロードおよびリクエストの費用の課金を指定します。 |
| コンテナー |
|
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. 関連情報
- バケット Web サイトの設定に関する詳細は、Red Hat Ceph Storage Object Gateway 設定および管理ガイド を参照してください。