Python-swiftclientとは、オブジェクトストレージを操作できるコマンドライン・ツールです。
以下ではCnetOS6系の場合のPython-swiftclientによるオブジェクトストレージの操作方法をご案内します。なお、オブジェクトストレージの詳細なAPI操作につきましては、APIリファレンスの「ObjectStorage API v1」にてご確認ください。
操作手順
[ 1 ] 任意のサーバーにSSHもしくはコンソールにて接続します。[ 2 ] Python-swiftclientをインストールします。
# yum -y install epel-release # yum -y install https://centos6.iuscommunity.org/ius-release.rpm # yum -y install python35u python35u-devel gcc python35u-pip # pip3.5 install python-keystoneclient python-swiftclient |
[ 3 ] クライアント環境変数を設定します。
OS_AUTH_URL | 認証のエンドポイントを入力します。コントロールパネル内のAPIメニューから「Identity Service」をご確認ください。 |
OS_TENANT_NAME | テナント名を入力します。コントロールパネル内のAPIメニューから「テナント名」をご確認ください。 |
OS_USERNAME | APIユーザー名を入力します。コントロールパネル内のAPIメニューからAPIユーザーを作成ください。 |
OS_PASSWORD | APIユーザーのパスワードを入力します。コントロールパネルのAPIメニューからAPIユーザーを作成する際に設定するパスワードです。 |
環境変数はログオフすると初期化されますので、次回以降も省略されたい場合は「/etc/profiled.d/」以下に設定ファイルを作成してください。
# export OS_AUTH_URL=’認証のエンドポイント’ # export OS_TENANT_NAME=’テナント名’ # export OS_USERNAME=’APIユーザー名’ # export OS_PASSWORD=’APIユーザーのパスワード’ |
[ 4 ] オブジェクトストレージへの接続を確認します。
# swift stat Account: ******************************* |
以降は、オブジェクトストレージに対して以下操作が可能になります。
操作一覧
・コンテナリストの確認
# swift list |
・コンテナの作成
# swift post コンテナ名 |
・コンテナ情報の確認
# swift stat コンテナ名 |
・コンテナの削除
# swift delete コンテナ名 |
・オブジェクトリストの確認
# swift list コンテナ名 |
・オブジェクトのアップロード ※5GB未満のオブジェクトの場合
# swift upload コンテナ名 オブジェクト名 |
・ラージオブジェクトのアップロード ※5GB以上のオブジェクトの場合
分割サイズはByte単位で数値み入力します。
例)1073741824 と入力した場合、1GBに分割されます。
# swift upload -S 分割サイズ コンテナ名 オブジェクト名 |
・オブジェクトのダウンロード
# swift download コンテナ名 オブジェクト名 |
・オブジェクトの削除
# swift delete コンテナ名 オブジェクト名 |
・指定した時間が経過後にオブジェクトを削除(秒)
# swift post -H ‘X-Delete-After: 秒数’ コンテナ名 オブジェクト名 |
・指定した日時にオブジェクトを削除
1.指定する日時をエポックフォーマットに変換 # date +%s -d “2016/11/22 02:23:00“ |
2.エポックフォーマットでスケジュール削除のリクエストを送信 # swift post -H ‘X-Delete-At: エポックフォーマットの日時’ コンテナ名 オブジェクト名 |
・コンテナのWeb公開
# swift post -H “X-Container-Read: .r:*” コンテナ名 |
本リファレンスは S-port cloud EVA にてサーバーをご利用いただく場合の一例であり、お客様の運用やポリシーによってその限りではございません。お客様のご利用用途に応じて必要な設定や操作をおこなってください。
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” オブジェクトストレージのエンドポイント/コンテナ名 |
・ラージオブジェクトのアップロード(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.pyimport 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 |
本リファレンスはS-Port Cloud EVAにてサーバーをご利用いただく場合の一例であり、お客様の運用やポリシーによってその限りではございません。
お客様のご利用用途に応じて必要な設定や操作をおこなってください。