3.6. Swift オブジェクト操作
開発者は、Ceph Object Gateway 経由で Swift アプリケーションのプログラミングインターフェイス (API) を使用してオブジェクト操作を行うことができます。オブジェクトを一覧表示、作成、更新、および削除することができます。オブジェクトのメタデータを追加または更新することもできます。
3.6.1. 前提条件
- 稼働中の Red Hat Ceph Storage クラスターがある。
- RESTful クライアント。
3.6.2. Swift オブジェクト操作
オブジェクトは、データおよびメタデータを保存するコンテナーです。コンテナーには多くのオブジェクトがありますが、オブジェクト名は一意である必要があります。この API により、クライアントはオブジェクトの作成、アクセス制御およびメタデータの設定、オブジェクトのデータおよびメタデータの取得、およびオブジェクトの削除を行うことができます。この API は特定のユーザーのアカウントの情報に関連するリクエストを行うため、この API のすべてのリクエストを認証する必要があります。コンテナーまたはオブジェクトのアクセス制御が意図的に公開されていない限り、つまり匿名の要求を許可している場合を除きます。
3.6.3. Swift がオブジェクトを取得
オブジェクトを取得するには、API バージョン、アカウント、コンテナー、およびオブジェクト名を使用して GET
リクエストを行います。コンテナー内のオブジェクトを取得するには、コンテナーの読み取り権限が必要です。
構文
GET /AP_VERSION/ACCOUNT/TENANT:CONTAINER/OBJECT HTTP/1.1 Host: FULLY_QUALIFIED_DOMAIN_NAME X-Auth-Token: AUTH_TOKEN
Name | 説明 | 型 | 必須 |
---|---|---|---|
| オブジェクトの内容のサブセットを取得するには、バイト範囲を指定します。 | Date | いいえ |
|
ソースオブジェクトの | Date | いいえ |
|
ソースオブジェクトの | Date | いいえ |
| リクエストの ETag がソースオブジェクトの ETag と一致する場合にのみコピーします。 | ETag. | いいえ |
| リクエストの ETag がソースオブジェクトの ETag と一致しない場合にのみコピーします。 | ETag. | No |
Name | 説明 |
---|---|
| オブジェクトコンテンツのサブセットの範囲。range ヘッダーフィールドがリクエストで指定されている場合にのみ返されます。 |
3.6.4. Swift でオブジェクトの作成または更新
新規オブジェクトを作成するには、API バージョン、アカウント、コンテナー名、および新規オブジェクトの名前を使用して PUT
要求を行います。オブジェクトを作成または更新するには、コンテナーに書き込みパーミッションが必要です。オブジェクト名は、コンテナー内で一意である必要があります。PUT
リクエストはべき等ではないため、一意の名前を使用しないと、リクエストによりオブジェクトが更新されます。ただし、オブジェクト名に疑似階層構文を使用して、別の疑似階層ディレクトリーにある場合は、同じ名前の別のオブジェクトと区別することができます。リクエストには、アクセス制御ヘッダーおよびメタデータヘッダーを含めることができます。
構文
PUT /AP_VERSION/ACCOUNT/TENANT:CONTAINER HTTP/1.1 Host: FULLY_QUALIFIED_DOMAIN_NAME X-Auth-Token: AUTH_TOKEN
Name | 説明 | 型 | 必須 | 有効な値 |
---|---|---|---|---|
| オブジェクトの内容の MD5 ハッシュ。推奨されます。 | 文字列 | No | 該当なし |
| オブジェクトに含まれるコンテンツのタイプ。 | 文字列 | No | 該当なし |
| オブジェクトが大規模な集約オブジェクトの一部であるかどうかを示します。 | 文字列 | いいえ |
|
3.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
3.6.6. Swift でオブジェクトのコピー
オブジェクトのコピーを使用すると、オブジェクトをダウンロードしたり、別のコンテナーにアップロードしたりしなくてもよいように、オブジェクトのサーバー側のコピーを作成できます。あるオブジェクトのコンテンツを別のオブジェクトにコピーするには、API バージョン、アカウント、およびコンテナー名で PUT
要求または COPY
要求を行います。
PUT
要求の場合は、要求で宛先コンテナーおよびオブジェクト名、および要求ヘッダーのソースコンテナーおよびオブジェクトを使用します。
Copy
リクエストには、要求でソースコンテナーおよびオブジェクト、および要求ヘッダーの宛先コンテナーおよびオブジェクトを使用します。オブジェクトをコピーするには、コンテナーに書き込みパーミッションが必要です。宛先オブジェクト名は、コンテナー内で一意である必要があります。リクエストはべき等ではないため、一意の名前を使用しないと、リクエストにより宛先オブジェクトが更新されます。宛先オブジェクトが別の疑似階層ディレクトリーにある場合は、オブジェクト名に疑似階層構文を使用して、同じ名前のソースオブジェクトと区別できます。リクエストには、アクセス制御ヘッダーおよびメタデータヘッダーを含めることができます。
構文
PUT /AP_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 /AP_VERSION/ACCOUNT/TENANT:SOURCE_CONTAINER/SOURCE_OBJECT HTTP/1.1 Destination: TENANT:DEST_CONTAINER/DEST_OBJECT
Name | 説明 | 型 | 必須 |
---|---|---|---|
|
ソースコンテナー/オブジェクトパスを定義するために | 文字列 |
はい ( |
|
宛先コンテナー/オブジェクトパスを定義するために | 文字列 |
はい ( |
|
ソースオブジェクトの | Date | いいえ |
|
ソースオブジェクトの | Date | いいえ |
| リクエストの ETag がソースオブジェクトの ETag と一致する場合にのみコピーします。 | ETag. | いいえ |
| リクエストの ETag がソースオブジェクトの ETag と一致しない場合にのみコピーします。 | ETag. | No |
3.6.7. Swift でオブジェクトメタデータの取得
オブジェクトのメタデータを取得するには、API バージョン、アカウント、コンテナー、およびオブジェクト名を使用して HEAD
リクエストを行います。コンテナー内のオブジェクトからメタデータを取得するには、コンテナーの読み取り権限が必要です。このリクエストは、オブジェクト自体の要求と同じヘッダー情報を返しますが、オブジェクトのデータを返しません。
構文
HEAD /AP_VERSION/ACCOUNT/TENANT:CONTAINER/OBJECT HTTP/1.1 Host: FULLY_QUALIFIED_DOMAIN_NAME X-Auth-Token: AUTH_TOKEN
3.6.8. Swift によるオブジェクトメタデータの追加または更新
オブジェクトにメタデータを追加するには、API バージョン、アカウント、コンテナー、およびオブジェクト名で POST
リクエストを行います。メタデータを追加または更新するには、親コンテナーに対する書き込み権限が必要です。
構文
POST /AP_VERSION/ACCOUNT/TENANT:CONTAINER/OBJECT HTTP/1.1 Host: FULLY_QUALIFIED_DOMAIN_NAME X-Auth-Token: AUTH_TOKEN
Name | 説明 | 型 | 必須 |
---|---|---|---|
| 任意の文字列の値を取得するユーザー定義のメタデータキー。 | 文字列 | No |