オブジェクトストレージ

操作例:cURL

curlとは?

curlとは、様々なファイル転送用のプロトコルをサポートするコマンドライン・ツールです。
以下ではcurl によるオブジェクトストレージの操作方法をご案内します。
なお、オブジェクトストレージの操作にはAPI情報を利用しますので、予めご確認ください。

API情報の確認方法

 1.該当のサーバーにSSHもしくはコンソールにて接続します。

 2.API認証を行い、トークンの取得ならびに発行されたトークンIDを確認します。

認証のエンドポイントURL (コントロールパネル内のAPI情報から「identity vX.X (認証)」をご確認ください)
ユーザー名 (コントロールパネルログインのユーザー名)
パスワード (コントロールパネルログインのパスワード)
テナントID (コントロールパネル内のAPI情報から「テナントID」をご確認ください)
# curl -i '認証のエンドポイントURL/tokens' -X POST -H 'Accept: application/json' -H 'Content-Type: application/json' -d '{"auth":{"passwordCredentials":{"username":"ユーザー名","password":"パスワード"},"tenantId":"テナントID"}}'

※出力された情報について、「{"access":」の「"token"」に表示されている「"id"」情報がトークンIDになります。

 3.オブジェクトストレージのエンドポイントURLに接続します。

オブジェクトストレージのエンドポイントURL (コントロールパネル内のAPI情報から「Object Storage API vX (オブジェクトストレージ)」をご確認ください)
# curl -i -X HEAD -H "X-Auth-Token: トークンID" オブジェクトストレージのエンドポイントURL

 4.アップロード・ダウンロードなどのオブジェクト操作が可能です。

コンテナリストの確認

# curl -i -X GET -H "X-Auth-Token: トークンID" オブジェクトストレージのエンドポイントURL

コンテナの作成

# curl -i -X PUT -H "X-Auth-Token: トークンID" オブジェクトストレージのエンドポイントURL/コンテナ名

コンテナ情報の確認

# curl -i -X HEAD -H "X-Auth-Token: トークンID" オブジェクトストレージのエンドポイントURL/コンテナ名

コンテナの削除

# curl -i -X DELETE -H "X-Auth-Token: トークンID" オブジェクトストレージのエンドポイントURL/コンテナ名

オブジェクトリストの確認

# curl -i -X GET -H "X-Auth-Token: トークンID" オブジェクトストレージのエンドポイントURL/コンテナ名

オブジェクトのアップロード

# curl -i -X PUT -H "X-Auth-Token: トークンID" オブジェクトストレージのエンドポイントURL/コンテナ名/ -T アップロードするデータのパス

ラージオブジェクトのアップロード(Dynamic Large Objects)

  1.該当ファイルを分割します。※以下では1G単位で分割します。
# split -b 1G -d ファイル名 segment_ファイル名_ 

  2.トークンID発行
# curl -i '認証のエンドポイントURL/tokens' -X POST -H 'Accept: application/json' -H 'Content-Type: application/json' -d '{"auth":{"passwordCredentials":{"username":"ユーザー名","password":"パスワード"},"tenantId":"テナントID"}}'

  3.コンテナを作成
# curl -i -X PUT -H "X-Auth-Token: トークンID" オブジェクトストレージのエンドポイントURL/コンテナ名

  4.分割ファイルのアップロード用のコンテナ作成
# curl -i -X PUT -H "X-Auth-Token: トークンID" オブジェクトストレージのエンドポイントURL/ファイル名_segments

  5.分割ファイルのアップロード
# curl -i -X PUT -H "X-Auth-Token: トークンID" オブジェクトストレージのエンドポイントURL/ファイル名_segments/ -T アップロードする分割ファイル1
# curl -i -X PUT -H "X-Auth-Token: トークンID" オブジェクトストレージのエンドポイントURL/ファイル名_segments/ -T アップロードする分割ファイル2
# curl -i -X PUT -H "X-Auth-Token: トークンID" オブジェクトストレージのエンドポイントURL/ファイル名_segments/ -T アップロードする分割ファイル3
# curl -i -X PUT -H "X-Auth-Token: トークンID" オブジェクトストレージのエンドポイントURL/ファイル名_segments/ -T アップロードする分割ファイル4
# curl -i -X PUT -H "X-Auth-Token: トークンID" オブジェクトストレージのエンドポイントURL/ファイル名_segments/ -T アップロードする分割ファイル5

  6.manifestファイルの作成
# curl -i -X PUT -H "X-Auth-Token: トークンID" -H  'X-Object-Manifest: ファイル名_segments/segment_ファイル名_' オブジェクトストレージのエンドポイントURL/「2.」で作成したコンテナ名/ファイル名 --data-binary ''

ラージオブジェクトのアップロード(static Large Object)

  1.該当ファイルを分割します。※以下では1G単位で分割します。
# split -b 1G -d ファイル名 segment_ファイル名_ 

  2.トークンID発行
# curl -i '認証のエンドポイントURL/tokens' -X POST -H 'Accept: application/json' -H 'Content-Type: application/json' -d '{"auth":{"passwordCredentials":{"username":"ユーザー名","password":"パスワード"},"tenantId":"テナントID"}}'

  3.コンテナを作成
# curl -i -X PUT -H "X-Auth-Token: トークンID" オブジェクトストレージのエンドポイントURL/コンテナ名

  4.作成した分割ファイル用のコンテナ作成
# curl -i -X PUT -H "X-Auth-Token: トークンID" オブジェクトストレージのエンドポイントURL/コンテナ名

  5.分割ファイルを分割ファイル用のコンテナにアップロード
# curl -i -X PUT -H "X-Auth-Token: トークンID" オブジェクトストレージのエンドポイントURL/分割ファイル用のコンテナ名/ -T segment_ファイル名_00
# curl -i -X PUT -H "X-Auth-Token: トークンID" オブジェクトストレージのエンドポイントURL/分割ファイル用のコンテナ名/ -T segment_ファイル名_01
↓
# curl -i -X PUT -H "X-Auth-Token: トークンID" オブジェクトストレージのエンドポイントURL/分割ファイル用のコンテナ名/ -T segment_ファイル名_05

  6.各分割ファイルのMD5のハッシュ値とファイルサイズを確認
# md5sum segment_ファイル名_0*
MD5のハッシュ値 segment_ファイル名_00
MD5のハッシュ値 segment_ファイル名_01
MD5のハッシュ値 segment_ファイル名_02
MD5のハッシュ値 segment_ファイル名_03
MD5のハッシュ値 segment_ファイル名_04
MD5のハッシュ値 segment_ファイル名_05

# ls -l
-rw-r--r-- 1 root root 6396313600  4月 24 13:40 2015 ファイル名
-rw-r--r-- 1 root root 1073741824  5月 18 14:32 2015 segment_ファイル名_00
-rw-r--r-- 1 root root 1073741824  5月 18 14:32 2015 segment_ファイル名_01
-rw-r--r-- 1 root root 1073741824  5月 18 14:32 2015 segment_ファイル名_02
-rw-r--r-- 1 root root 1073741824  5月 18 14:32 2015 segment_ファイル名_03
-rw-r--r-- 1 root root 1073741824  5月 18 14:32 2015 segment_ファイル名_04
-rw-r--r-- 1 root root 1027604480  5月 18 14:33 2015 segment_ファイル名_05

  7.manifestファイルの作成
# curl -i -X PUT -H "Accept: application/json" -H "X-Auth-Token: トークンID" -d '[{"path" : "分割ファイル用のコンテナ名/segment_ファイル名_00", "etag": "MD5のハッシュ値", "size_bytes": ファイルサイズ},{"path" : "分割ファイル用のコンテナ名/segment_ファイル名_01", "etag": "MD5のハッシュ値", "size_bytes": ファイルサイズ},{"path" : "分割ファイル用のコンテナ名/segment_ファイル名_02", "etag": "MD5のハッシュ値", "size_bytes": ファイルサイズ},{"path" : "分割ファイル用のコンテナ名/segment_ファイル名_03", "etag": "MD5のハッシュ値", "size_bytes": ファイルサイズ},{"path" : "分割ファイル用のコンテナ名/segment_ファイル名_04", "etag": "MD5のハッシュ値", "size_bytes": ファイルサイズ},{"path" : "分割ファイル用のコンテナ名/segment_ファイル名_05", "etag": "MD5のハッシュ値", "size_bytes": ファイルサイズ}]' オブジェクトストレージのエンドポイントURL/manifestファイル用のコンテナ名/ファイル名?multipart-manifest=put

オブジェクトのダウンロード

# curl -O -X GET -H "X-Auth-Token: トークンID" オブジェクトストレージのエンドポイントURL/コンテナ名/オブジェクト名

ラージオブジェクトのダウンロード

# curl -O -X GET -H "X-Auth-Token: トークンID" オブジェクトストレージのエンドポイントURL/コンテナ名/オブジェクト名 > オブジェクト名

オブジェクトの削除

# curl -i -X DELETE -H "X-Auth-Token: トークンID" オブジェクトストレージのエンドポイントURL/コンテナ名/オブジェクト名

オブジェクトのスケジュール削除

  ・指定した時間の経過後に削除(秒)
# curl -i -X POST -H "Accept: application/json" -H "X-Auth-Token: トークンID" -H 'X-Delete-After: 秒数' オブジェクトストレージのエンドポイントURL/コンテナ名/オブジェクト名

  ・指定した日時に削除
  1.指定する日時をエポックフォーマットに変換
# date +%s -d "2015/5/8 02:23:00"
1431019380

  2.エポックフォーマットでスケジュール削除のリクエストを送信
# curl -i -X POST -H "Accept: application/json" -H "X-Auth-Token: トークンID" -H 'X-Delete-At: エポックフォーマット日時' オブジェクトストレージのエンドポイントURL/コンテナ名/オブジェクト名

トップに戻る