Swift/サーバの起動とテスト
の編集
http://eucalyptus.linux4u.jp/wiki/index.php?Swift%2F%E3%82%B5%E3%83%BC%E3%83%90%E3%81%AE%E8%B5%B7%E5%8B%95%E3%81%A8%E3%83%86%E3%82%B9%E3%83%88
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
] [
リンク元
]
-- 雛形とするページ --
BracketName
Ceph/install
Ceph/memo
Ceph/mount
Ceph/概要
ChangeLog_v1.5.2
CloudStack
CloudStack/インストール方法
CloudStack/ネットワーク解説
CloudStack/ネットワーク設定
CloudStack/メモ
CloudStack/仮想マシン
CloudStack/初期設定
CloudStack/概要
Doc/EucalyptusImageManagement_v1.5.2
Documents
DynamicDNSGuide
Elasticfox
Euca2ools と EC2 Tools との違い
Euca2oolsCentosInstall
Euca2oolsGuide
Euca2oolsImageManagement
Euca2oolsInstallJaunty
Euca2oolsLennyInstall
Euca2oolsNetworking
Euca2oolsOpensuseInstall
Euca2oolsSourceInstall
Euca2oolsSqueezeInstall
Euca2oolsStorage
Euca2oolsUsing
Euca2oolsVmControl
Eucalyptus (OSS Elastic Computing) 日本語情報
Eucalyptus + Euca2ools + Elasticfox で作るプライベートクラウド環境
Eucalyptus - OSS Elastic Computing
Eucalyptus - Ubuntu 9.04 で作るプライベートクラウド環境
Eucalyptus 1.5.2
Eucalyptus 日本語情報 wiki - OSS Elastic Computing
Eucalyptus-Upgrade-1.6.1
Eucalyptus-Upgrade-1.6.2
EucalyptusAdministratorGuide_v1.5.2
EucalyptusAdministratorGuide_v1.6
EucalyptusAdvanced_v1.6
EucalyptusBlockStoreInteracting_v1.5.2
EucalyptusConfiguration_v1.5.2
EucalyptusFeatures_v1.5.2
EucalyptusGettingStarted_v1.5.2
EucalyptusImageManagement_v1.5.2
EucalyptusImageManagement_v1.6
EucalyptusInstall_v1.5.2
EucalyptusInstall_v1.6
EucalyptusInstallationCentos_v1.5.2
EucalyptusInstallationCentos_v1.6
EucalyptusInstallationDebianLenny_v1.5.2
EucalyptusInstallationDebianSqueeze_v1.5.2
EucalyptusInstallationDebianSqueeze_v1.6
EucalyptusInstallationOpensuse_v1.5.2
EucalyptusInstallationOpensuse_v1.6
EucalyptusInstallationUbuntuJaunty_v1.5.2
EucalyptusInstallationUbuntuJaunty_v1.6
EucalyptusKnownBugs_v1.5.2
EucalyptusKnownBugs_v1.5.2)
EucalyptusManagement_v1.5.2
EucalyptusManagement_v1.6
EucalyptusMonitoring_v1.6
EucalyptusNetworking_v1.5.2
EucalyptusNetworking_v1.6
EucalyptusOverview
EucalyptusPrerequisites_v1.5.2
EucalyptusRocksInstallation_v1.5.2
EucalyptusSourceCodeInstallation_v1.5.2
EucalyptusTroubleshooting_v1.5.2
EucalyptusTroubleshooting_v1.6
EucalyptusUpgrade_v1.5.2
EucalyptusUserGuide_v1.5.2
EucalyptusUserImageCreatorGuide_v1.5.2
EucalyptusWalrusInteracting_v1.5.2
FAQ
FormattingRules
FrontPage
Help
Hibari
Hibari/インストール
Hibari/データモデル
Hibari/データ操作
Hibari/特徴
InterWiki
InterWikiName
InterWikiSandBox
Links
MenuBar
OpenNebula/その他
OpenNebula/クラスタノードの構築
OpenNebula/ゲストOSのネットワークの設定
OpenNebula/ゲストOSの構築
OpenNebula/フロントエンドノードの構築
OpenNebula/仮想ネットワークの構築
OpenNebula/概要
OpenStack
PHP
Presentations
PressRelease/2010_Feb_9
PukiWiki
PukiWiki/1.4
PukiWiki/1.4/Manual
PukiWiki/1.4/Manual/Plugin
PukiWiki/1.4/Manual/Plugin/A-D
PukiWiki/1.4/Manual/Plugin/E-G
PukiWiki/1.4/Manual/Plugin/H-K
PukiWiki/1.4/Manual/Plugin/L-N
PukiWiki/1.4/Manual/Plugin/O-R
PukiWiki/1.4/Manual/Plugin/S-U
PukiWiki/1.4/Manual/Plugin/V-Z
RHEL5 にセットアップ(RPM)
RecentDeleted
RightScale
S3_Compatibility_1.5.2
SandBox
Scalaris/JSON APIの利用
Scalaris/Java-API用CLIツール
Scalaris/インストール方法
Scalaris/分散環境の設定
Scalaris/利用方法
Scalaris/概要
Sheepdog/インストール方法
Sheepdog/インストール方法(SL6)
Sheepdog/デザイン
Sheepdog/ユーザ会
Sheepdog/利用方法
Sheepdog/問題点
Sheepdog/概要
Swift/Rings
Swift/memo
Swift/インストール方法
Swift/サーバの起動とテスト
Swift/メッセージの流れ
Swift/使い方
Swift/概要
Swift/設定ファイルの作成
Swift/起動用スクリプトの作成
ToolsEcosystem
ToolsEcosystem_EC2Dream
ToolsEcosystem_Elasticfox
ToolsEcosystem_boto
ToolsEcosystem_cloud42
ToolsEcosystem_right_aws
ToolsEcosystem_s3cmd
ToolsEcosystem_s3fs
ToolsEcosystem_tAWS
ToolsEcosystem_typica
UEC/CDInstall
UEC/CreateYourImage
Ubuntu 9.04 Server Edition のダウンロード方法
Ubuntu Enterprise Cloud 入門
Ubuntu Enterprise Cloudで作るプライベートクラウド環境
Ubuntu/Eucalyptus
Ubuntu/Eucalyptus+bridge
Ubuntu/Eucalyptus+environment
Ubuntu/KVM
Ubuntu/libvirt
Ubuntu/ubuntu-vm-builder
UbuntuEnterpriseCloud
WikiEngines
WikiName
WikiWikiWeb
YukiWiki
backup-eucalyptus-16
configuration
first-time-setup-16
hypervisor-configuration
installation-distribution-specific-binary-packages
installing-eucalyptus-source-16
s3curl
sample-s3cmd-config
sample-s3cmd-config-s3
トラブル事例
*Swift/サーバの起動とテスト [#a8cc6ac8] [[インストール>Swift/インストール方法]]、[[設定ファイルの作成>Swift/設定ファイルの作成]]、[[起動用スクリプトの作成>Swift/起動用スクリプトの作成]]が終わったら実際に動かしてみましょう。 *サーバの起動 [#a6ef2a90] スクリプトを使用して、各種サーバを起動させます。~ まずはRingを構築します。 # remakerings テストを行ないます。~ # cd ~/swift/trunk; ./.unittests ...................................................................... ====================================================================== FAIL: test_whataremyips (test.unit.common.test_utils.TestUtils) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/nanodayo/swift/trunk/test/unit/common/test_utils.py", line 226, in test_whataremyips self.assert_(len(myips) > 1) AssertionError Name Stmts Exec Cover Missing ---------------------------------------------------------- swift 0 0 100% swift.account 0 0 100% (中略) ---------------------------------------------------------- TOTAL 5414 3969 73% ---------------------------------------------------------------------- Ran 371 tests in 37.550s FAILED (failures=1) 特にエラーがなければサーバを起動します。~ こちらの環境では上記のようにAssertionErrorが出て、FAILEDになっていますが~ 起動等は問題なく行えます。 # startmain rootユーザ以外だと、"Unable to increase file descriptor limit. Running as non-root?"と出ますが問題なく起動します。 # startrest updaterなども同様に起動させます。 *アカウントの作成 [#r4612128] テスト用のswiftのアカウントを作成します。~ devauthの値は、auth-serverに設定されているものにします。~ ※-aを付けて作成しないと、後の操作ができないようです。 # swift-auth-add-user -K devauth -a test tester testing *curlでのテスト [#yebe07c8] アカウント作成後、X-Storage-UrlとX-Auth-Tokenを取得します。 # curl -v -H 'X-Storage-User: test:tester' -H 'X-Storage-Pass: testing' http://127.0.0.1:11000/v1.0 * About to connect() to 127.0.0.1 port 11000 (#0) * Trying 127.0.0.1... connected * Connected to 127.0.0.1 (127.0.0.1) port 11000 (#0) > GET /v1.0 HTTP/1.1 > User-Agent: curl/7.19.7 (i486-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15 > Host: 127.0.0.1:11000 > Accept: */* > X-Storage-User: test:tester > X-Storage-Pass: testing > < HTTP/1.1 204 No Content < X-Storage-Url: http://127.0.0.1:9000/v1/ef7a92d3-a959-4dcd-9ab1-82028fd67d6b < X-Storage-Token: tkc3f4640b-68fa-4ffd-bb09-29d80ee64ab4 < X-Auth-Token: tkc3f4640b-68fa-4ffd-bb09-29d80ee64ab4 < Content-Length: 0 < Date: Wed, 01 Sep 2010 00:07:13 GMT < * Connection #0 to host 127.0.0.1 left intact * Closing connection #0 出力結果から、X-Storage-UrlとX-Auth-Tokenを取り出し、その後の操作に使用します。~ //X-Storage-Urlはポート番号9000番という結果が返ってきますが、Swiftには9000番を使用しているサービスはありません。~ //プロクシサーバのポート(8080)を指定すると想定する動作を行うので、ここでは8080に置き換えて使用します。~ //※現在のバージョンでは治っているようです。 以下のようにしてHTTPのGETメソッドでテストを行ないます。 # curl -v -H 'X-Auth-Token: tkc3f4640b-68fa-4ffd-bb09-29d80ee64ab4' http://127.0.0.1:8080/v1/ef7a92d3-a959-4dcd-9ab1-82028fd67d6b * About to connect() to 127.0.0.1 port 8080 (#0) * Trying 127.0.0.1... connected * Connected to 127.0.0.1 (127.0.0.1) port 8080 (#0) > GET /v1/ef7a92d3-a959-4dcd-9ab1-82028fd67d6b HTTP/1.1 > User-Agent: curl/7.19.7 (i486-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15 > Host: 127.0.0.1:8080 > Accept: */* > X-Auth-Token: tkc3f4640b-68fa-4ffd-bb09-29d80ee64ab4 > < HTTP/1.1 204 No Content < X-Container-Object-Count: 0 < X-Container-Bytes-Used: 0 < Content-Length: 0 < Date: Wed, 01 Sep 2010 00:11:51 GMT < * Connection #0 to host 127.0.0.1 left intact * Closing connection #0 この時点ではまだ何もオブジェクトがないため、No Contentと表示されます。 他にもPUTメソッドでディレクトリの作成やファイルのアップロードが行なえます。~ ディレクトリの作成は、以下のように、-XオプションでPUTメソッドを指定し、作成するディレクトリ名をURLの末尾に追加します。 # curl -X PUT -v -H 'X-Auth-Token: tkc3f4640b-68fa-4ffd-bb09-29d80ee64ab4' http://127.0.0.1:8080/v1/ef7a92d3-a959-4dcd-9ab1-82028fd67d6b/aaaa * About to connect() to 127.0.0.1 port 8080 (#0) * Trying 127.0.0.1... connected * Connected to 127.0.0.1 (127.0.0.1) port 8080 (#0) > PUT /v1/ef7a92d3-a959-4dcd-9ab1-82028fd67d6b/aaaa HTTP/1.1 > User-Agent: curl/7.19.7 (i486-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15 > Host: 127.0.0.1:8080 > Accept: */* > X-Auth-Token: tkc3f4640b-68fa-4ffd-bb09-29d80ee64ab4 > < HTTP/1.1 201 Created < Content-Length: 18 < Content-Type: text/plain; charset=UTF-8 < Date: Wed, 01 Sep 2010 00:17:51 GMT < 201 Created * Connection #0 to host 127.0.0.1 left intact * Closing connection #0 201 Createdがでれば成功です。~ 既にディレクトリがある場合は202 Acceptedと出るようです。 ファイルのアップロードは以下のようにします。~ # curl -X PUT -T test -v -H 'X-Auth-Token: tkc3f4640b-68fa-4ffd-bb09-29d80ee64ab4' http://127.0.0.1:8080/v1/ef7a92d3-a959-4dcd-9ab1-82028fd67d6b/aaaa/ * About to connect() to 127.0.0.1 port 8080 (#0) * Trying 127.0.0.1... connected * Connected to 127.0.0.1 (127.0.0.1) port 8080 (#0) > PUT /v1/ef7a92d3-a959-4dcd-9ab1-82028fd67d6b/aaaa/test HTTP/1.1 > User-Agent: curl/7.19.7 (i486-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15 > Host: 127.0.0.1:8080 > Accept: */* > X-Auth-Token: tkc3f4640b-68fa-4ffd-bb09-29d80ee64ab4 > Content-Length: 17 > Expect: 100-continue > < HTTP/1.1 100 Continue < HTTP/1.1 201 Created < Content-Length: 118 < Content-Type: text/plain; charset=UTF-8 < Etag: 7276c6ddf848dc69460b7873bd6ddb77 < Last-Modified: Wed, 01 Sep 2010 00:22:20 GMT < Date: Wed, 01 Sep 2010 00:22:20 GMT < <html> <head> <title>201 Created</title> </head> <body> <h1>201 Created</h1> <br /><br /> </body> * Connection #0 to host 127.0.0.1 left intact * Closing connection #0 アップロードしたファイルは、GETメソッドで確認できます。~ hogehogeの部分に、ファイルの内容が表示されます。 # curl -v -H 'X-Auth-Token: tkc3f4640b-68fa-4ffd-bb09-29d80ee64ab4' http://127.0.0.1:8080/v1/ef7a92d3-a959-4dcd-9ab1-82028fd67d6b/aaaa/test * About to connect() to 127.0.0.1 port 8080 (#0) * Trying 127.0.0.1... connected * Connected to 127.0.0.1 (127.0.0.1) port 8080 (#0) > GET /v1/ef7a92d3-a959-4dcd-9ab1-82028fd67d6b/aaaa/test HTTP/1.1 > User-Agent: curl/7.19.7 (i486-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15 > Host: 127.0.0.1:8080 > Accept: */* > X-Auth-Token: tkc3f4640b-68fa-4ffd-bb09-29d80ee64ab4 > < HTTP/1.1 200 OK < Last-Modified: Wed, 01 Sep 2010 00:22:20 GMT < Etag: 7276c6ddf848dc69460b7873bd6ddb77 < Content-Length: 17 < Content-Type: application/octet-stream < Date: Wed, 01 Sep 2010 00:31:55 GMT < hogehoge hogege * Connection #0 to host 127.0.0.1 left intact * Closing connection #0 DELETEメソッドで、削除も行うことができます。~ ファイル・ディレクトリどちらも削除可能ですが、ディレクトリは空である必要があります。 # curl -X DELETE -v -H 'X-Auth-Token: tkc3f4640b-68fa-4ffd-bb09-29d80ee64ab4' http://127.0.0.1:8080/v1/ef7a92d3-a959-4dcd-9ab1-82028fd67d6b/aaaa/test * About to connect() to 127.0.0.1 port 8080 (#0) * Trying 127.0.0.1... connected * Connected to 127.0.0.1 (127.0.0.1) port 8080 (#0) > DELETE /v1/ef7a92d3-a959-4dcd-9ab1-82028fd67d6b/aaaa/test HTTP/1.1 > User-Agent: curl/7.19.7 (i486-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15 > Host: 127.0.0.1:8080 > Accept: */* > X-Auth-Token: tkc3f4640b-68fa-4ffd-bb09-29d80ee64ab4 > < HTTP/1.1 204 No Content < Content-Length: 0 < Content-Type: text/plain; charset=UTF-8 < Date: Fri, 08 Oct 2010 02:24:01 GMT < * Connection #0 to host 192.50.109.158 left intact * Closing connection #0 stという、Swiftに含まれているコマンドでもテストを行ないます。 # st -A http://127.0.0.1:11000/v1.0 -U test:tester -K testing stat Account: AUTH_dcff3fa2cf494e1e8d211b791b461e4f Containers: 1 Objects: 1 Bytes: 0 アカウントの、利用状況が確認できます。 *スクリプトでのテスト [#l5bbaf07] 上で説明した、curlでの操作を行うスクリプトを作成してあります。 -swift_create_token #!/bin/bash curl -k -v -H "X-Storage-User: $1:$2" -H "X-Storage-Pass: $3" "http://$4/v1.0" > ~/.swift/token_tmp 2>&1 grep X-Auth-Token token_tmp | awk -F ": " '{print $2}' > ~/.swift/token grep X-Storage-Url token_tmp | awk -F ": " '{print $2}' > ~/.swift/url 実行は以下のようにします。~ カレントディレクトリにファイルを作り、X-Storage-UrlとX-Auth-Tokenの値をそれぞれに保存します。 # swift_create_token test tester testing 127.0.0.1:11000 -swift_get #!/bin/bash TOKEN=`sed -e 's/\r//' ~/.swift/token` URL=`sed -e 's/\r//' ~/.swift/url` curl -v -H "X-Auth-Token: $TOKEN" $URL/$1 swift_create_tokenで作成したファイルからTokenとURLを読み、GETを実行します。~ 引数にはURLを指定することができて、directory/fileなどと指定すればdirectoryの中にあるfileの内容を表示できます。~ 省略すれば一番上の階層で、リストを見ることが出来ます。 -swift_put #!/bin/bash TOKEN=`sed -e 's/\r//' ~/.swift/token` URL=`sed -e 's/\r//' ~/.swift/url` curl -k -v -X PUT -H "X-Auth-Token: $TOKEN" $URL/$1 以下のように実行し、引数で指定した名前のディレクトリを作成します。 # swift_put directory -swift_upload #!/bin/bash TOKEN=`sed -e 's/\r//' ~/.swift/token` URL=`sed -e 's/\r//' ~/.swift/url` curl -k -v -T $2 -X PUT -H "X-Auth-Token: $TOKEN" $URL/$1/ 以下のように実行し、1つ目の引数で指定したディレクトリに、2つ目の引数で指定したファイルをアップロードします。 # swift_upload directory file -swift_delete #!/bin/bash TOKEN=`sed -e 's/\r//' ~/.swift/token` URL=`sed -e 's/\r//' ~/.swift/url` curl -k -v -X DELETE -H "X-Auth-Token: $TOKEN" $URL/$1 ファイル・ディレクトリの削除を行ないます。~ 削除したいファイル・ディレクトリを引数で渡して使用します。 *リンク [#t87a358e] [[Swift All In One>http://swift.openstack.org/development_saio.html]]
タイムスタンプを変更しない
*Swift/サーバの起動とテスト [#a8cc6ac8] [[インストール>Swift/インストール方法]]、[[設定ファイルの作成>Swift/設定ファイルの作成]]、[[起動用スクリプトの作成>Swift/起動用スクリプトの作成]]が終わったら実際に動かしてみましょう。 *サーバの起動 [#a6ef2a90] スクリプトを使用して、各種サーバを起動させます。~ まずはRingを構築します。 # remakerings テストを行ないます。~ # cd ~/swift/trunk; ./.unittests ...................................................................... ====================================================================== FAIL: test_whataremyips (test.unit.common.test_utils.TestUtils) ---------------------------------------------------------------------- Traceback (most recent call last): File "/home/nanodayo/swift/trunk/test/unit/common/test_utils.py", line 226, in test_whataremyips self.assert_(len(myips) > 1) AssertionError Name Stmts Exec Cover Missing ---------------------------------------------------------- swift 0 0 100% swift.account 0 0 100% (中略) ---------------------------------------------------------- TOTAL 5414 3969 73% ---------------------------------------------------------------------- Ran 371 tests in 37.550s FAILED (failures=1) 特にエラーがなければサーバを起動します。~ こちらの環境では上記のようにAssertionErrorが出て、FAILEDになっていますが~ 起動等は問題なく行えます。 # startmain rootユーザ以外だと、"Unable to increase file descriptor limit. Running as non-root?"と出ますが問題なく起動します。 # startrest updaterなども同様に起動させます。 *アカウントの作成 [#r4612128] テスト用のswiftのアカウントを作成します。~ devauthの値は、auth-serverに設定されているものにします。~ ※-aを付けて作成しないと、後の操作ができないようです。 # swift-auth-add-user -K devauth -a test tester testing *curlでのテスト [#yebe07c8] アカウント作成後、X-Storage-UrlとX-Auth-Tokenを取得します。 # curl -v -H 'X-Storage-User: test:tester' -H 'X-Storage-Pass: testing' http://127.0.0.1:11000/v1.0 * About to connect() to 127.0.0.1 port 11000 (#0) * Trying 127.0.0.1... connected * Connected to 127.0.0.1 (127.0.0.1) port 11000 (#0) > GET /v1.0 HTTP/1.1 > User-Agent: curl/7.19.7 (i486-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15 > Host: 127.0.0.1:11000 > Accept: */* > X-Storage-User: test:tester > X-Storage-Pass: testing > < HTTP/1.1 204 No Content < X-Storage-Url: http://127.0.0.1:9000/v1/ef7a92d3-a959-4dcd-9ab1-82028fd67d6b < X-Storage-Token: tkc3f4640b-68fa-4ffd-bb09-29d80ee64ab4 < X-Auth-Token: tkc3f4640b-68fa-4ffd-bb09-29d80ee64ab4 < Content-Length: 0 < Date: Wed, 01 Sep 2010 00:07:13 GMT < * Connection #0 to host 127.0.0.1 left intact * Closing connection #0 出力結果から、X-Storage-UrlとX-Auth-Tokenを取り出し、その後の操作に使用します。~ //X-Storage-Urlはポート番号9000番という結果が返ってきますが、Swiftには9000番を使用しているサービスはありません。~ //プロクシサーバのポート(8080)を指定すると想定する動作を行うので、ここでは8080に置き換えて使用します。~ //※現在のバージョンでは治っているようです。 以下のようにしてHTTPのGETメソッドでテストを行ないます。 # curl -v -H 'X-Auth-Token: tkc3f4640b-68fa-4ffd-bb09-29d80ee64ab4' http://127.0.0.1:8080/v1/ef7a92d3-a959-4dcd-9ab1-82028fd67d6b * About to connect() to 127.0.0.1 port 8080 (#0) * Trying 127.0.0.1... connected * Connected to 127.0.0.1 (127.0.0.1) port 8080 (#0) > GET /v1/ef7a92d3-a959-4dcd-9ab1-82028fd67d6b HTTP/1.1 > User-Agent: curl/7.19.7 (i486-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15 > Host: 127.0.0.1:8080 > Accept: */* > X-Auth-Token: tkc3f4640b-68fa-4ffd-bb09-29d80ee64ab4 > < HTTP/1.1 204 No Content < X-Container-Object-Count: 0 < X-Container-Bytes-Used: 0 < Content-Length: 0 < Date: Wed, 01 Sep 2010 00:11:51 GMT < * Connection #0 to host 127.0.0.1 left intact * Closing connection #0 この時点ではまだ何もオブジェクトがないため、No Contentと表示されます。 他にもPUTメソッドでディレクトリの作成やファイルのアップロードが行なえます。~ ディレクトリの作成は、以下のように、-XオプションでPUTメソッドを指定し、作成するディレクトリ名をURLの末尾に追加します。 # curl -X PUT -v -H 'X-Auth-Token: tkc3f4640b-68fa-4ffd-bb09-29d80ee64ab4' http://127.0.0.1:8080/v1/ef7a92d3-a959-4dcd-9ab1-82028fd67d6b/aaaa * About to connect() to 127.0.0.1 port 8080 (#0) * Trying 127.0.0.1... connected * Connected to 127.0.0.1 (127.0.0.1) port 8080 (#0) > PUT /v1/ef7a92d3-a959-4dcd-9ab1-82028fd67d6b/aaaa HTTP/1.1 > User-Agent: curl/7.19.7 (i486-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15 > Host: 127.0.0.1:8080 > Accept: */* > X-Auth-Token: tkc3f4640b-68fa-4ffd-bb09-29d80ee64ab4 > < HTTP/1.1 201 Created < Content-Length: 18 < Content-Type: text/plain; charset=UTF-8 < Date: Wed, 01 Sep 2010 00:17:51 GMT < 201 Created * Connection #0 to host 127.0.0.1 left intact * Closing connection #0 201 Createdがでれば成功です。~ 既にディレクトリがある場合は202 Acceptedと出るようです。 ファイルのアップロードは以下のようにします。~ # curl -X PUT -T test -v -H 'X-Auth-Token: tkc3f4640b-68fa-4ffd-bb09-29d80ee64ab4' http://127.0.0.1:8080/v1/ef7a92d3-a959-4dcd-9ab1-82028fd67d6b/aaaa/ * About to connect() to 127.0.0.1 port 8080 (#0) * Trying 127.0.0.1... connected * Connected to 127.0.0.1 (127.0.0.1) port 8080 (#0) > PUT /v1/ef7a92d3-a959-4dcd-9ab1-82028fd67d6b/aaaa/test HTTP/1.1 > User-Agent: curl/7.19.7 (i486-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15 > Host: 127.0.0.1:8080 > Accept: */* > X-Auth-Token: tkc3f4640b-68fa-4ffd-bb09-29d80ee64ab4 > Content-Length: 17 > Expect: 100-continue > < HTTP/1.1 100 Continue < HTTP/1.1 201 Created < Content-Length: 118 < Content-Type: text/plain; charset=UTF-8 < Etag: 7276c6ddf848dc69460b7873bd6ddb77 < Last-Modified: Wed, 01 Sep 2010 00:22:20 GMT < Date: Wed, 01 Sep 2010 00:22:20 GMT < <html> <head> <title>201 Created</title> </head> <body> <h1>201 Created</h1> <br /><br /> </body> * Connection #0 to host 127.0.0.1 left intact * Closing connection #0 アップロードしたファイルは、GETメソッドで確認できます。~ hogehogeの部分に、ファイルの内容が表示されます。 # curl -v -H 'X-Auth-Token: tkc3f4640b-68fa-4ffd-bb09-29d80ee64ab4' http://127.0.0.1:8080/v1/ef7a92d3-a959-4dcd-9ab1-82028fd67d6b/aaaa/test * About to connect() to 127.0.0.1 port 8080 (#0) * Trying 127.0.0.1... connected * Connected to 127.0.0.1 (127.0.0.1) port 8080 (#0) > GET /v1/ef7a92d3-a959-4dcd-9ab1-82028fd67d6b/aaaa/test HTTP/1.1 > User-Agent: curl/7.19.7 (i486-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15 > Host: 127.0.0.1:8080 > Accept: */* > X-Auth-Token: tkc3f4640b-68fa-4ffd-bb09-29d80ee64ab4 > < HTTP/1.1 200 OK < Last-Modified: Wed, 01 Sep 2010 00:22:20 GMT < Etag: 7276c6ddf848dc69460b7873bd6ddb77 < Content-Length: 17 < Content-Type: application/octet-stream < Date: Wed, 01 Sep 2010 00:31:55 GMT < hogehoge hogege * Connection #0 to host 127.0.0.1 left intact * Closing connection #0 DELETEメソッドで、削除も行うことができます。~ ファイル・ディレクトリどちらも削除可能ですが、ディレクトリは空である必要があります。 # curl -X DELETE -v -H 'X-Auth-Token: tkc3f4640b-68fa-4ffd-bb09-29d80ee64ab4' http://127.0.0.1:8080/v1/ef7a92d3-a959-4dcd-9ab1-82028fd67d6b/aaaa/test * About to connect() to 127.0.0.1 port 8080 (#0) * Trying 127.0.0.1... connected * Connected to 127.0.0.1 (127.0.0.1) port 8080 (#0) > DELETE /v1/ef7a92d3-a959-4dcd-9ab1-82028fd67d6b/aaaa/test HTTP/1.1 > User-Agent: curl/7.19.7 (i486-pc-linux-gnu) libcurl/7.19.7 OpenSSL/0.9.8k zlib/1.2.3.3 libidn/1.15 > Host: 127.0.0.1:8080 > Accept: */* > X-Auth-Token: tkc3f4640b-68fa-4ffd-bb09-29d80ee64ab4 > < HTTP/1.1 204 No Content < Content-Length: 0 < Content-Type: text/plain; charset=UTF-8 < Date: Fri, 08 Oct 2010 02:24:01 GMT < * Connection #0 to host 192.50.109.158 left intact * Closing connection #0 stという、Swiftに含まれているコマンドでもテストを行ないます。 # st -A http://127.0.0.1:11000/v1.0 -U test:tester -K testing stat Account: AUTH_dcff3fa2cf494e1e8d211b791b461e4f Containers: 1 Objects: 1 Bytes: 0 アカウントの、利用状況が確認できます。 *スクリプトでのテスト [#l5bbaf07] 上で説明した、curlでの操作を行うスクリプトを作成してあります。 -swift_create_token #!/bin/bash curl -k -v -H "X-Storage-User: $1:$2" -H "X-Storage-Pass: $3" "http://$4/v1.0" > ~/.swift/token_tmp 2>&1 grep X-Auth-Token token_tmp | awk -F ": " '{print $2}' > ~/.swift/token grep X-Storage-Url token_tmp | awk -F ": " '{print $2}' > ~/.swift/url 実行は以下のようにします。~ カレントディレクトリにファイルを作り、X-Storage-UrlとX-Auth-Tokenの値をそれぞれに保存します。 # swift_create_token test tester testing 127.0.0.1:11000 -swift_get #!/bin/bash TOKEN=`sed -e 's/\r//' ~/.swift/token` URL=`sed -e 's/\r//' ~/.swift/url` curl -v -H "X-Auth-Token: $TOKEN" $URL/$1 swift_create_tokenで作成したファイルからTokenとURLを読み、GETを実行します。~ 引数にはURLを指定することができて、directory/fileなどと指定すればdirectoryの中にあるfileの内容を表示できます。~ 省略すれば一番上の階層で、リストを見ることが出来ます。 -swift_put #!/bin/bash TOKEN=`sed -e 's/\r//' ~/.swift/token` URL=`sed -e 's/\r//' ~/.swift/url` curl -k -v -X PUT -H "X-Auth-Token: $TOKEN" $URL/$1 以下のように実行し、引数で指定した名前のディレクトリを作成します。 # swift_put directory -swift_upload #!/bin/bash TOKEN=`sed -e 's/\r//' ~/.swift/token` URL=`sed -e 's/\r//' ~/.swift/url` curl -k -v -T $2 -X PUT -H "X-Auth-Token: $TOKEN" $URL/$1/ 以下のように実行し、1つ目の引数で指定したディレクトリに、2つ目の引数で指定したファイルをアップロードします。 # swift_upload directory file -swift_delete #!/bin/bash TOKEN=`sed -e 's/\r//' ~/.swift/token` URL=`sed -e 's/\r//' ~/.swift/url` curl -k -v -X DELETE -H "X-Auth-Token: $TOKEN" $URL/$1 ファイル・ディレクトリの削除を行ないます。~ 削除したいファイル・ディレクトリを引数で渡して使用します。 *リンク [#t87a358e] [[Swift All In One>http://swift.openstack.org/development_saio.html]]
テキスト整形のルールを表示する