4.6. Swift オブジェクト操作
開発者は、Ceph Object Gateway 経由で Swift アプリケーションのプログラミングインターフェイス (API) を使用してオブジェクト操作を行うことができます。オブジェクトをリスト表示、作成、更新、および削除することができます。オブジェクトのメタデータを追加または更新することもできます。
4.6.1. 前提条件
- 稼働中の Red Hat Ceph Storage クラスターがある。
- RESTful クライアント。
4.6.2. Swift オブジェクト操作
オブジェクトは、データおよびメタデータを保存するコンテナーです。コンテナーには多くのオブジェクトがありますが、オブジェクト名は一意である必要があります。この API により、クライアントはオブジェクトの作成、アクセス制御およびメタデータの設定、オブジェクトのデータおよびメタデータの取得、およびオブジェクトの削除を行うことができます。この API は特定のユーザーのアカウントの情報に関連するリクエストを行うため、この API のすべてのリクエストを認証する必要があります。コンテナーまたはオブジェクトのアクセス制御が意図的に公開されていない限り、つまり匿名の要求を許可している場合を除きます。
4.6.3. Swift がオブジェクトを取得
オブジェクトを取得するには、API バージョン、アカウント、コンテナー、およびオブジェクト名を使用して GET
リクエストを行います。コンテナー内のオブジェクトを取得するには、コンテナーの読み取り権限が必要です。
構文
GET /API_VERSION/ACCOUNT/TENANT:CONTAINER/OBJECT HTTP/1.1 Host: FULLY_QUALIFIED_DOMAIN_NAME X-Auth-Token: AUTH_TOKEN
リクエストヘッダー
range
- 説明
- オブジェクトの内容のサブセットを取得するには、バイト範囲を指定します。
- 型
- 日付
- 必須
- いいえ
If-Modified-Since
- 説明
-
ソースオブジェクトの
last_modified
属性の日時以降に変更された場合のみコピーします。 - 型
- 日付
- 必須
- いいえ
If-Unmodified-Since
- 説明
-
ソースオブジェクトの
last_modified
属性の日時以降に変更した場合のみコピーします。 - 型
- 日付
- 必須
- いいえ
Copy-If-Match
- 説明
- リクエストの ETag がソースオブジェクトの ETag と一致する場合にのみコピーします。
- 型
- ETag
- 必須
- いいえ
Copy-If-None-Match
- 説明
-
リクエストの
ETag
がソースオブジェクトの ETag と一致しない場合にのみコピーします。 - 型
- ETag
- 必須
- いいえ
レスポンスヘッダー
Content-Range
- 説明
- オブジェクトコンテンツのサブセットの範囲。range ヘッダーフィールドがリクエストで指定されている場合にのみ返されます。
4.6.4. Swift でオブジェクトの作成または更新
新規オブジェクトを作成するには、API バージョン、アカウント、コンテナー名、および新規オブジェクトの名前を使用して PUT
要求を行います。オブジェクトを作成または更新するには、コンテナーに書き込みパーミッションが必要です。オブジェクト名は、コンテナー内で一意である必要があります。PUT
リクエストはべき等ではないため、一意の名前を使用しないと、リクエストによりオブジェクトが更新されます。ただし、オブジェクト名に疑似階層構文を使用して、別の疑似階層ディレクトリーにある場合は、同じ名前の別のオブジェクトと区別することができます。リクエストには、アクセス制御ヘッダーおよびメタデータヘッダーを含めることができます。
構文
PUT /API_VERSION/ACCOUNT/TENANT:CONTAINER HTTP/1.1 Host: FULLY_QUALIFIED_DOMAIN_NAME X-Auth-Token: AUTH_TOKEN
リクエストヘッダー
ETag
- 説明
- オブジェクトの内容の MD5 ハッシュ。推奨。
- 型
- String
- 有効な値
- 該当なし
- 必須
- いいえ
Content-Type
- 説明
- オブジェクトの内容の MD5 ハッシュ。
- 型
- String
- 有効な値
- 該当なし
- 必須
- いいえ
Transfer-Encoding
- 説明
- オブジェクトが大規模な集約オブジェクトの一部であるかどうかを示します。
- 型
- String
- 有効な値
-
chunked
- 必須
- いいえ
4.6.5. Swift でオブジェクトの削除
オブジェクトを削除するには、API バージョン、アカウント、コンテナー、およびオブジェクト名を使用して DELETE
リクエストを行います。コンテナー内のオブジェクトを削除するには、コンテナーに対する書き込み権限が必要です。オブジェクトが正常に削除されると、オブジェクト名を再利用できます。
構文
DELETE /API_VERSION/ACCOUNT/TENANT:CONTAINER/OBJECT HTTP/1.1 Host: FULLY_QUALIFIED_DOMAIN_NAME X-Auth-Token: AUTH_TOKEN
4.6.6. Swift でオブジェクトのコピー
オブジェクトのコピーを使用すると、オブジェクトをダウンロードしたり、別のコンテナーにアップロードしたりしなくてもよいように、オブジェクトのサーバー側のコピーを作成できます。あるオブジェクトのコンテンツを別のオブジェクトにコピーするには、API バージョン、アカウント、およびコンテナー名で PUT
要求または COPY
要求を行います。
PUT
要求の場合は、要求で宛先コンテナーおよびオブジェクト名、および要求ヘッダーのソースコンテナーおよびオブジェクトを使用します。
Copy
リクエストには、要求でソースコンテナーおよびオブジェクト、および要求ヘッダーの宛先コンテナーおよびオブジェクトを使用します。オブジェクトをコピーするには、コンテナーに書き込みパーミッションが必要です。宛先オブジェクト名は、コンテナー内で一意である必要があります。リクエストはべき等ではないため、一意の名前を使用しないと、リクエストにより宛先オブジェクトが更新されます。宛先オブジェクトが別の疑似階層ディレクトリーにある場合は、オブジェクト名に疑似階層構文を使用して、同じ名前のソースオブジェクトと区別できます。リクエストには、アクセス制御ヘッダーおよびメタデータヘッダーを含めることができます。
構文
PUT /API_VERSION/ACCOUNT/TENANT:CONTAINER HTTP/1.1 X-Copy-From: TENANT:SOURCE_CONTAINER/SOURCE_OBJECT Host: FULLY_QUALIFIED_DOMAIN_NAME X-Auth-Token: AUTH_TOKEN
または、次のようになります。
構文
COPY /API_VERSION/ACCOUNT/TENANT:SOURCE_CONTAINER/SOURCE_OBJECT HTTP/1.1 Destination: TENANT:DEST_CONTAINER/DEST_OBJECT
リクエストヘッダー
X-Copy-From
- 説明
-
ソースコンテナー/オブジェクトパスを定義するために
PUT
リクエストで使用されます。 - 型
- String
- 必須
-
はい (
PUT
を使用している場合)
宛先
- 説明
-
宛先コンテナー/オブジェクトパスを定義するために
COPY
要求で使用されます。 - 型
- String
- 必須
-
はい (
COPY
を使用している場合)
If-Modified-Since
- 説明
-
ソースオブジェクトの
last_modified
属性の日時以降に変更された場合のみコピーします。 - 型
- 日付
- 必須
- いいえ
If-Unmodified-Since
- 説明
-
ソースオブジェクトの
last_modified
属性の日時以降に変更した場合のみコピーします。 - 型
- 日付
- 必須
- いいえ
Copy-If-Match
- 説明
- リクエストの ETag がソースオブジェクトの ETag と一致する場合にのみコピーします。
- 型
- ETag
- 必須
- いいえ
Copy-If-None-Match
- 説明
-
リクエストの
ETag
がソースオブジェクトの ETag と一致しない場合にのみコピーします。 - 型
- ETag
- 必須
- いいえ
4.6.7. Swift でオブジェクトメタデータの取得
オブジェクトのメタデータを取得するには、API バージョン、アカウント、コンテナー、およびオブジェクト名を使用して HEAD
リクエストを行います。コンテナー内のオブジェクトからメタデータを取得するには、コンテナーの読み取り権限が必要です。このリクエストは、オブジェクト自体の要求と同じヘッダー情報を返しますが、オブジェクトのデータを返しません。
構文
HEAD /API_VERSION/ACCOUNT/TENANT:CONTAINER/OBJECT HTTP/1.1 Host: FULLY_QUALIFIED_DOMAIN_NAME X-Auth-Token: AUTH_TOKEN
4.6.8. Swift によるオブジェクトメタデータの追加または更新
オブジェクトにメタデータを追加するには、API バージョン、アカウント、コンテナー、およびオブジェクト名で POST
リクエストを行います。メタデータを追加または更新するには、親コンテナーに対する書き込み権限が必要です。
構文
POST /API_VERSION/ACCOUNT/TENANT:CONTAINER/OBJECT HTTP/1.1 Host: FULLY_QUALIFIED_DOMAIN_NAME X-Auth-Token: AUTH_TOKEN
リクエストヘッダー
X-Object-Meta-KEY
- 説明
- 任意の文字列の値を取得するユーザー定義のメタデータキー。
- 型
- String
- 必須
- いいえ