操作例:cURL

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

なお、オブジェクトストレージの詳細なAPI操作につきましては、APIリファレンスの「ObjectStorage API v1」にてご確認ください。

 コンテナ一覧取得手順

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

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

[3] オブジェクトストレージのエンドポイントに接続し、コンテナ一覧情報を確認します。
オブジェクトストレージエンドポイント コントロールパネル内のAPIメニュー内の「API情報」をご確認ください。
curl -i -X GET \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Auth-Token: トークンID" \
オブジェクトストレージエンドポイント


 コンテナ情報の確認

curl -i -X GET \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Auth-Token: トークンID" \
オブジェクトストレージエンドポイント/コンテナ名


 コンテナの作成

curl -i -X PUT \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Auth-Token: トークンID" \
オブジェクトストレージエンドポイント/コンテナ名


 コンテナの削除

curl -i -X DELETE \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Auth-Token: トークンID" \
オブジェクトストレージエンドポイント/コンテナ名


 オブジェクト情報の取得

curl -i -X GET \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Auth-Token: トークンID" \
オブジェクトストレージエンドポイント/コンテナ名/オブジェクト名


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

curl -i -X PUT \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Auth-Token: トークンID" \
-T アップロードするファイルのパス \
オブジェクトストレージエンドポイント/コンテナ名/オブジェクト名


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

[1] ファイルを分割します。
※以下では1G単位で分割します。またファイル名を「largefile」とします。
split -b 1G largefile largefile_
[2] manifestファイル用のコンテナを作成します。
※以下ではコンテナ名を「dlo_container」とします。
curl -i -X PUT \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Auth-Token: トークンID" \
オブジェクトストレージエンドポイント/dlo_container
[3] セグメントファイル用のコンテナを作成します。
※以下ではセグメントファイル用のコンテナ名を「dlo_container_segment」とします。
curl -i -X PUT \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Auth-Token: トークンID" \
オブジェクトストレージエンドポイント/dlo_container_segment
[4] セグメントファイルをアップロードします。
curl -i -X PUT -H "X-Auth-Token: トークンID" オブジェクトストレージエンドポイント/dlo_container_segment/ -T largefile_aa

curl -i -X PUT -H "X-Auth-Token: トークンID" オブジェクトストレージエンドポイント/dlo_container_segment/ -T largefile_ab

curl -i -X PUT -H "X-Auth-Token: トークンID" オブジェクトストレージエンドポイント/dlo_container_segment/ -T largefile_ac

curl -i -X PUT -H "X-Auth-Token: トークンID" オブジェクトストレージエンドポイント/dlo_container_segment/ -T largefile_ad

curl -i -X PUT -H "X-Auth-Token: トークンID" オブジェクトストレージエンドポイント/dlo_container_segment/ -T largefile_ae

curl -i -X PUT -H "X-Auth-Token: トークンID" オブジェクトストレージエンドポイント/dlo_container_segment/ -T largefile_af
[5] manifestファイルを作成します。
※ここではmanifestファイル名を「manifestfile」とします。
curl -i -X PUT \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Auth-Token: トークンID" \
-H "X-Object-Manifest: dlo_container_segment/largefile_" \
オブジェクトストレージエンドポイント/dlo_container/manifestfile --data-binary ''


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

[1] ファイルを分割します。
※以下では1G単位で分割します。またファイル名を「largefile」とします。
split -b 1G largefile largefile_
[2] manifestファイル用のコンテナを作成します。
※以下ではコンテナ名を「slo_container」とします。
curl -i -X PUT \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Auth-Token: トークンID" \
オブジェクトストレージエンドポイント/slo_container
[3] セグメントファイル用のコンテナを作成します。
※以下ではセグメントファイル用のコンテナ名を「slo_container_segment」とします。
curl -i -X PUT \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Auth-Token: トークンID" \
オブジェクトストレージエンドポイント/slo_container_segment
[4] セグメントファイルをアップロードします。
curl -i -X PUT -H "X-Auth-Token: トークンID" オブジェクトストレージエンドポイント/slo_container_segment/ -T largefile_aa

curl -i -X PUT -H "X-Auth-Token: トークンID" オブジェクトストレージエンドポイント/slo_container_segment/ -T largefile_ab

curl -i -X PUT -H "X-Auth-Token: トークンID" オブジェクトストレージエンドポイント/slo_container_segment/ -T largefile_ac

curl -i -X PUT -H "X-Auth-Token: トークンID" オブジェクトストレージエンドポイント/slo_container_segment/ -T largefile_ad

curl -i -X PUT -H "X-Auth-Token: トークンID" オブジェクトストレージエンドポイント/slo_container_segment/ -T largefile_ae

curl -i -X PUT -H "X-Auth-Token: トークンID" オブジェクトストレージエンドポイント/slo_container_segment/ -T largefile_af
[5] 各セグメントファイルのMD5のハッシュ値を確認
md5sum largefile_a*
MD5のハッシュ値 *largefile_aa
MD5のハッシュ値 *largefile_ab
MD5のハッシュ値 *largefile_ac
MD5のハッシュ値 *largefile_ad
MD5のハッシュ値 *largefile_ae
MD5のハッシュ値 *largefile_af
[6] 各セグメントファイルのファイルサイズを確認
ls -l
[7] manifestファイルを作成します。
※ここではmanifestファイル名を「manifestfile」とします。
curl -i -X PUT \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Auth-Token: トークンID" \
-d '[{"path" : "slo_container_segment/largefile_aa", "etag": "MD5のハッシュ値", "size_bytes": セグメントファイルサイズ},
{"path" : "slo_container_segment/largefile_ab", "etag": "MD5のハッシュ値", "size_bytes": セグメントファイルサイズ},
{"path" : "slo_container_segment/largefile_ac", "etag": "MD5のハッシュ値", "size_bytes": セグメントファイルサイズ},
{"path" : "slo_container_segment/largefile_ad", "etag": "MD5のハッシュ値", "size_bytes": セグメントファイルサイズ},
{"path" : "slo_container_segment/largefile_ae", "etag": "MD5のハッシュ値", "size_bytes": セグメントファイルサイズ},
{"path" : "slo_container_segment/largefile_af", "etag": "MD5のハッシュ値", "size_bytes": セグメントファイルサイズ}]' \
オブジェクトストレージエンドポイント/slo_container/manifestfile?multipart-manifest=put


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

curlコマンドで実行する場合は -O オプションを利用することで保存が可能です。
ラージオブジェクトをダウンロードする場合はmanifestファイルを指定してください。

curl -X GET \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Auth-Token: トークンID" \
オブジェクトストレージエンドポイント/コンテナ名/オブジェクト名 -O


 オブジェクトの複製

curl -i -X COPY \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Auth-Token: トークンID" \
-H "Destination: 複製先のコンテナ名/複製先のオブジェクト名" \
オブジェクトストレージエンドポイント/コンテナ名/オブジェクト名


 オブジェクトの削除

curl -i -X DELETE \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Auth-Token: トークンID" \
オブジェクトストレージエンドポイント/コンテナ名/オブジェクト名


 Web公開(Web Publishing)

任意のコンテナにあるオブジェクトをWeb公開したい場合に使用します。 ACLsにてRead権限をすべて許可する設定となります。
※StaticWeb機能とは異なります。

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




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

Internet for everyone

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