操作例:cURL

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

 操作手順

[ 1 ] 任意のサーバーにSSHもしくはコンソールにて接続します。
[ 2 ] API認証を行い、トークンの取得ならびに発行されたトークンIDを確認します。
認証の
エンドポイント
コントロールパネル内のAPIメニューから「Identity Service」をご確認ください。
ユーザー名 コントロールパネル内のAPIメニューからAPIユーザーを作成ください。
パスワード コントロールパネルのAPIメニューからAPIユーザーを作成する際に設定するパスワード。
テナントID コントロールパネル内のAPIメニューから「テナントID」をご確認ください。
# curl '認証のエンドポイント/tokens' -X POST -H "Accept: application/json" -H "Content-Type: application/json" -d '{"auth":{"passwordCredentials":{"username":"APIユーザー名","password":"パスワード"},"tenantId":"テナントID"}}'

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

[ 3 ] オブジェクトストレージのエンドポイントに接続し、オブジェクトストレージの情報を確認します。
オブジェクトストレージのエンドポイント コントロールパネル内のAPIメニューから「Object Storage Service」をご確認ください。
# curl -X GET -H "X-Auth-Token: トークンID" オブジェクトストレージのエンドポイント

以降は、オブジェクトストレージに対して以下操作が可能になります。

 操作一覧

・コンテナリストの確認

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

・コンテナの作成

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

・コンテナ情報の確認

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

・コンテナの削除

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

・オブジェクト情報の確認

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

・オブジェクトのアップロード ※5GB未満のオブジェクトの場合

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

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

1.該当ファイルを分割します。※以下では1G単位で分割します。
# split -b 1G -d ファイル名 segment_ファイル名_ 
2.トークンID発行
# curl '認証のエンドポイント/tokens' -X POST -H 'Accept: application/json' -H 'Content-Type: application/json' -d '{"auth":{"passwordCredentials":{"username":"APIユーザー名","password":"パスワード"},"tenantId":"テナントID"}}'
3.コンテナを作成
# curl -X PUT -H "X-Auth-Token: トークンID" オブジェクトストレージのエンドポイント/コンテナ名
4.分割ファイルのアップロード用のコンテナ作成
# curl -X PUT -H "X-Auth-Token: トークンID" オブジェクトストレージのエンドポイント/コンテナ名_segments
5.分割ファイルのアップロード
# curl -X PUT -H "X-Auth-Token: トークンID" オブジェクトストレージのエンドポイント/ファイル名_segments/ -T アップロードする分割ファイル1
# curl -X PUT -H "X-Auth-Token: トークンID" オブジェクトストレージのエンドポイント/ファイル名_segments/ -T アップロードする分割ファイル2
# curl -X PUT -H "X-Auth-Token: トークンID" オブジェクトストレージのエンドポイント/ファイル名_segments/ -T アップロードする分割ファイル3
# curl -X PUT -H "X-Auth-Token: トークンID" オブジェクトストレージのエンドポイント/ファイル名_segments/ -T アップロードする分割ファイル4
# curl -X PUT -H "X-Auth-Token: トークンID" オブジェクトストレージのエンドポイント/ファイル名_segments/ -T アップロードする分割ファイル5
6.manifestファイルの作成
# curl -X PUT -H "X-Auth-Token: トークンID" -H  'X-Object-Manifest: コンテナ名_segments/segment_ファイル名_' オブジェクトストレージのエンドポイント/作成したコンテナ名/ファイル名 --data-binary ''

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

1.該当ファイルを分割します。※以下では1G単位で分割します。
# split -b 1G -d ファイル名 segment_ファイル名_ 
2.トークンID発行
# curl '認証のエンドポイント/tokens' -X POST -H 'Accept: application/json' -H 'Content-Type: application/json' -d '{"auth":{"passwordCredentials":{"username":"APIユーザー名","password":"パスワード"},"tenantId":"テナントID"}}'
3.コンテナを作成
# curl -X PUT -H "X-Auth-Token: トークンID" オブジェクトストレージのエンドポイント/コンテナ名
4.作成した分割ファイル用のコンテナ作成
# curl -X PUT -H "X-Auth-Token: トークンID" オブジェクトストレージのエンドポイント/コンテナ名
5.分割ファイルを分割ファイル用のコンテナにアップロード
# curl -X PUT -H "X-Auth-Token: トークンID" オブジェクトストレージのエンドポイント/分割ファイル用のコンテナ名/ -T segment_ファイル名_00
# curl -X PUT -H "X-Auth-Token: トークンID" オブジェクトストレージのエンドポイント/分割ファイル用のコンテナ名/ -T segment_ファイル名_01
# curl -X PUT -H "X-Auth-Token: トークンID" オブジェクトストレージのエンドポイント/分割ファイル用のコンテナ名/ -T segment_ファイル名_02
# curl -X PUT -H "X-Auth-Token: トークンID" オブジェクトストレージのエンドポイント/分割ファイル用のコンテナ名/ -T segment_ファイル名_03
# curl -X PUT -H "X-Auth-Token: トークンID" オブジェクトストレージのエンドポイント/分割ファイル用のコンテナ名/ -T segment_ファイル名_04
# curl -X PUT -H "X-Auth-Token: トークンID" オブジェクトストレージのエンドポイント/分割ファイル用のコンテナ名/ -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 -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": ファイルサイズ}]' オブジェクトストレージのエンドポイント/manifestファイル用のコンテナ名/ファイル名?multipart-manifest=put

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

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

・オブジェクトの削除

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

・指定した時間が経過後にオブジェクトを削除(秒)

# curl -X POST -H "Accept: application/json" -H "X-Auth-Token: トークンID" -H 'X-Delete-After: 秒数' オブジェクトストレージのエンドポイント/コンテナ名/オブジェクト名

・指定した日時にオブジェクトを削除

1.指定する日時をエポックフォーマットに変換
# date +%s -d "2016/11/22 02:23:00"
2.エポックフォーマットでスケジュール削除のリクエストを送信
# curl -X POST -H "Accept: application/json" -H "X-Auth-Token: トークンID" -H 'X-Delete-At: エポックフォーマットの日時' オブジェクトストレージのエンドポイント/コンテナ名/オブジェクト名

・コンテナのWeb公開

# curl -X POST -H "Accept: application/json" -H "X-Auth-Token: トークンID" -H "X-Container-Read: .r:*" オブジェクトストレージのエンドポイント/コンテナ名

・一時的なオブジェクトのWeb公開 ※ワンタイムURL

1.tempurl用のKeyを登録します。
# curl -X POST -H "Accept: application/json" -H "X-Auth-Token: トークンID" -H 'X-Account-Meta-Temp-URL-Key: test-key' オブジェクトストレージのエンドポイント
2.tempurl生成するため、下記モジュールを作成します。 ※24時間で生成する場合
# vim create-tempurl.py

import hmac
from hashlib import sha1
from time import time
method = 'GET'
duration_in_seconds = 60*60*24
expires = int(time() + duration_in_seconds)
path = '/v1/ze_テナントID/コンテナ名/オブジェクト名
key = 'test-key'
hmac_body = '%s\n%s\n%s' % (method, expires, path)
sig = hmac.new(key, hmac_body, sha1).hexdigest()
s = 'https://{host}{path}?temp_url_sig={sig}&temp_url_expires={expires}'
url = s.format(host='object-storage.jpt1.cloud.z.com', path=path, sig=sig, expires=expires)
print '%s' % url
3.モジュールを実行します。
# /usr/bin/python create-tempurl.py


本リファレンスはZ.com Cloudにてサーバーをご利用いただく場合の一例であり、お客様の運用やポリシーによってその限りではございません。
お客様のご利用用途に応じて必要な設定や操作をおこなってください。

Internet for everyone

Copyright (c) 2024 GMO Internet Group, Inc. All Rights Reserved.