okuyama 画像サーバ概要及び API 仕様書 Version 1.0.0 株式会社

okuyama 画像サーバ概要及び API 仕様書
Version
1.0.0
株式会社 神戸デジタル・ラボ
変更履歴
Version
1.0.0
履歴
新規作成
日付
2011/11/25
担当
岩瀬 高博
1. 画像サーバ概要
画像サーバは分散 KVS である okuayam をストレージとして利用し、画像コンテンツ
を冗長化された環境で高速、安全に取り扱うためのソフトウェアです。
以下に画像サーバの構成図に示します。
」
・WebAPI サーバ群
外部とのアクセス用の API を提供し全ての操作はこの WebAPI サーバ群を介して
行います。API は Restful な API で提供されます。
保存したコンテンツは全て URL 指定にて取り出す(通常の画像等の取得のよう
に)ことが可能です。
・okuyama サーバ群
okuyama を利用したストレージ領域
2. 機能概要
画像サーバはあらかじめドメインを取得し(ローカルネットワークのみの場合は
HOSTS 等でも可能)ドメインに画像サーバの IP アドレスを紐付けることでドメイン
単位で領域が独立する VirtualHost と似たような仕組みで稼働します。1 つの画像
サーバ(1 つのグローバル IP)で複数のドメイン配下の画像を管理することが可能
です。
またストレージの層は API 経由にて一般的なファイルシステムを扱うかのうよう
な操作を実現します。
※画像サーバは画像データ以外のデータも扱うことができます。取り扱うことが可
能なデータは拡張子付きのデータに限定され、扱うことが可能な拡張子は本資料の
最後の拡張子一覧に記載しています。
3. 操作 API
管理者用 API
※管理 API は直接画像サーバの IP を指定して実行します。
※管理 API は全て管理者用の authkey が必要になります。
管理者用の authkey は画像サーバ構築時に決定します。
※管理者用 API の説明では画像サーバの IP アドレスを”画像 SVIP”と表記します
1. ドメイン名登録:/mt/mainteadduser
ドメイン名およびユーザ情報をシステムに登録し、画像サーバを利用可能状態
にします。
(呼び出し例)
http://画像 SVIP/mt/mainteadduser? domainname=example.com &domainid=101&
customername=KDL&userauthkey=keyXXX&publicaccess=true&authkey=authZZZ
(戻り値)
“Success”もしくはエラーメッセージ
パラメータ説明)
・domainname:登録するドメイン名
・domainid:ドメイン名を管理するユニークな ID(3 桁の整数)
・customername=ユーザ名(半角英数)
・userauthkey:ドメイン単位での認証キー
・publicaccess:コンテンツに対する外部アクセスの可否
・authkey:管理 API 用 authkey
戻り値説明)
・成功の場合は”Success”の文字列。失敗の場合はエラーメッセージ
2. ユーザ情報一覧:/mt/mainteuserlist
現在利用中のドメインの情報一覧
(呼び出し例)
http://画像 SVIP/mt/mainteuserlist?authkey=authZZZ
(戻り値)
domainname= example.com,domainid=101,customername=KDL,usesize=8192
----domainname= example2.org,domainid=102,customername=KDL2,usesize=1024
パラメータ説明)
・authkey:管理 API 用 authkey
戻り値説明)
ドメイン単位の情報
・domainname:ドメイン名
・domainid:ドメイン ID
・customername:ユーザ名
・usesize:現在の保存容量(単位はバイト)
※複数ユーザが存在する場合は、” ----- “で区切られて出力される
3. ユーザ削除:/mt/maintedeluser
ユーザの削除を行う
(呼び出し例)
http://画像 SVIP/mt/maintedeluser?domainname=example.com&domainid=101&
authkey=authZZZ
(戻り値)
Success RemoveUser[example.com]
パラメータ説明)
・domainname:削除するドメイン名
・domainid:削除するドメイン ID
・authkey:管理 API 用 authkey
戻り値説明)
・成功の場合は”Success”の文字列と削除したドメイン名。
失敗の場合はエラーメッセージ
一般用 API
4. ファイル Upload:/mt/fput
画像データを Upload する
※POST での Upload のみサポート
(呼び出し例)※本例は curl コマンドを使用
※ローカルの/var/tmp/sample.png を http://example.com/base/sample.png にアップロ
ード
$ curl -F "file=@/var/tmp/sample.png"
-F "fullname=/base/sample.png" \
http://example.com/mt/fput?authkey=keyXXX
(戻り値)
Success
※ここで Upload されたファイルは以下の URL でアクセス可能
http://example.com/base/sample.png
パラメータ説明)
・file:アップロードファイル
・fullname:ファイルアップロード先パス
・http://example.com/mt/fput?authkey=keyXXX:画像サーバの API の URL
authkey に”ドメイン単位での認証キー”の指定が必要
※上記以外に以下の HTTP のヘッダ情報を設定することが可能(全て省略可能)
・contenttype:Content-Type を指定
※対応タイプは可能な限りの標準 Content-Type
・contentlanguage:Content-Language を指定
・etag:ETag を指定
※デフォルトはアップロードされたデータの MD5 値
・pragma:Pragma 要素を指定
・expires:Expire 指定(RFC1123 準拠例: Wed, 28 Sep 2011 15:16:35 GMT )
・lastmodified:Last-Modified 指定(RFC1123 準拠)※デフォルトは現在時間
・cachecontrol:Cache-Control を指定
※デフォルト表記がなくパラメータの指定がないヘッダ情報は何も返しません。
戻り値説明)
・成功時は”Success”の文字列。失敗の場合はエラーメッセージ
5. ファイルの削除:/mt/fdel
画像データを削除する
(呼び出し例)
http://example.com/mt/fdel?filepath=/base/sample.png&authkey=keyXXX
(戻り値)
Success
パラメータ説明)
・filepath:削除したいファイルの画像サーバ上でのパス
・authkey:ドメイン単位での認証キー
戻り値説明)
・成功の場合は”Success”の文字列。失敗の場合はエラーメッセージ
6. ファイルダウンロード:/mt/fget
画像データをバイナリデータとして取得する
(呼び出し例)
http://example.com/mt/fget?filepath=/base/sample.png&authkey=keyXXX
(戻り値)
存在する場合はファイルデータ
(MIME タイプは"application/octet-stream"で返されます)
※存在しない場合は HTTP のステータスコード 404
パラメータ説明)
・filepath:取得したいファイルの画像サーバ上でのパス
・authkey:ドメイン単位での認証キー
戻り値説明)
・ファイルが存在する場合は画像データが返却される
その際 MIME タイプは全て"application/octet-stream"で固定される
※存在しない場合は HTTP ステータスコード 404 が応答される
7. ファイル情報取得:/mt/fattr
画像データの属性情報を取得する
(呼び出し例)
http://example.com/mt/fattr?filepath=/base/sample.png&authkey=keyXXX
(戻り値)
fullname = /base/sample.png
datasize = 1024
createdate = Fri Sep 30 15:53:50 JST 2011
Content-Type =
Last-Modified = Fri, 30 Sep 2011 06:53:50 GMT
Content-Language =
ETag = 803a6d95f58654e76554a08ef4bb0873
Cache-control =
Pragma =
Expires =
※存在しない場合は HTTP のステータスコード 404
パラメータ説明)
・filepath:情報を取得したいファイルの画像サーバ上でのパス
・authkey:ドメイン単位での認証キー
戻り値説明)
・fullname:ファイルの画像サーバ上でのパス
・datasize:ファイルサイズ
・createdate:ファイルを作成した日時
・Content-Type:ファイルの
Content-Type
・Last-Modified:ファイルの
Last-Modified
・Content-Language:ファイルの Content-Language
・ETag
:ファイルの ETag
・Cache-control:ファイルの
・Pragma:ファイルの
Cache-control
Pragma
・Expires:ファイルの
Expires
※存在しない場合は HTTP ステータスコード 404 が応答される
8. ディレクトリ一覧の表示:/mt/lsdir
画像サーバ上のディレクトリ一覧を表示する
(呼び出し例)
http://example.com/mt/lsdir?authkey=keyXXX
(戻り値)
/base
/base/dir0
/base/dir1
/base/dir1/pic1
/users
/users/pic1
パラメータ説明)
・authkey:ドメイン単位での認証キー
戻り値説明)
・ディレクトリの一覧を LF 改行で返却
9. ディレクトリ内容の表示:/mt/flist
画像サーバ上のディレクトリ内容のファイル一覧を表示する
(呼び出し例)
http://example.com/mt/flist?dirpath=/base&authkey=keyXXX
(戻り値)
Success
Count=3
/base/sample1.jpg
/base/sample2.png
/base/sample3.gif
パラメータ説明)
・dirpath:一覧を表示したいディレクトリパス
・authkey:ドメイン単位での認証キー
戻り値説明)
・Success:成功文字列
・Count:ディレクトリ内のファイル数
・以下ファイル名の一覧
改行は LF
10. ディレクトリの作成:/mt/mkdir
画像サーバ上にディレクトリを作成する
(呼び出し例)
http://example.com/mt/mkdir?dirpath=/base&disr=true&authkey=keyXXX
※/base ディレクトリを作成
※http://example.com/base としてアクセス可能なディレクトリ
(戻り値)
Success
パラメータ説明)
・dirpath:作成するディレクトリパス
※指定したディレクトリの途中に存在しないディレクトリがある場合は
自動的に作成される
・disr:既にディレクトリが存在する場合にエラーとするかどうかの指定
true の場合エラーとならず処理が完了する。false の場合はエラーになる
省略も可能でありその場合は false となる
・authkey:ドメイン単位での認証キー
戻り値説明)
・成功の場合は”Success”の文字列。失敗の場合はエラーメッセージ
11. ディレクトリ削除:/mt/rmdir
画像サーバ上のディレクトリを削除する
ディレクトリ内の画像も削除される
(呼び出し例)
http://example.com/mt/rmdir?dirpath=/base&authkey=keyXXX
(戻り値)
Success
パラメータ説明)
・dirpath:削除するディレクトリパス
・authkey:ドメイン単位での認証キー
戻り値説明)
・成功の場合は”Success”の文字列。失敗の場合はエラーメッセージ
12. 保存容量の表示:/mt/df
画像サーバ上の全保存容量を表示する
(呼び出し例)
http://example.com/mt/df?authkey=keyXXX
(戻り値)
Use size = 879634 byte
パラメータ説明)
・authkey:ドメイン単位での認証キー
戻り値説明)
・Use
size:現在の容量をバイト単位で表示
13. ドメイン単位での認証キー変更:/mt/moduser
一般操作 API 利用時に指定するドメイン単位の認証キーを変更する
(呼び出し例)
http://example.com/mt/moduser?newauthkey=keyXXX&authkey=keyYYY
(戻り値)
Success
パラメータ説明)
・newauthkey:変更後のドメイン単位での認証キー
・authkey:変更前のドメイン単位での認証キー
戻り値説明)
・成功の場合は”Success”の文字列。失敗の場合はエラーメッセージ
14. 画像データへの外部公開・非公開の設定:/mt/moduser
画像サーバに保存されているデータの通常 URL でのアクセス制限を変更する
(呼び出し例)
http://example.com/mt/moduser?publicaccess=true&authkey=keyXXX
(戻り値)
Success
パラメータ説明)
・publicaccess:true を指定した場合は通常 URL でアクセス可能。false を指定した場合は
通常 URL ではアクセス不可となり/mt/fget コマンドのみ取得可能
・authkey:ドメイン単位での認証キー
戻り値説明)
・成功の場合は”Success”の文字列。失敗の場合はエラーメッセージ
画像サーバ仕様
画像サーバには次のシステム制限が存在します。ただし一部変更可能なため、
変更が必要な場合は別途ご相談ください。
1. Upload 出来るファイルサイズの上限:54,526,976 byte ( 約 50 MB )
2. ファイル名の最大長:2000byte(ディレクトリ名も含む)
3. ファイル名・デイレクトリ名に使用可能な文字列:英数字および「-」
「_」
「~」
「.」
4. 拡張子の無いファイルは Upload 出来ない
5. / 直下にファイルは Upload 出来ない
6. API でのアクセス時に authkey が間違っていてもエラーコード等の応答はない
7. 規定の拡張子以外のファイルを/mt/fput の”Content-Type”引数なしで Upload
することは出来ない。
取り扱うことの出来る拡張子一覧(MIME 形式)
ここで定義されている拡張子のファイルは自動的に画像サーバが適切な
MIME ヘッダーを付与する
abs
exe
midi
ots
qtif
txt
ai
gif
mif
ott
ras
ulw
aif
gtar
mov
ogx
rdf
ustar
aifc
gz
movie
ogv
rgb
vxml
aiff
hdf
mp1
oga
rm
xbm
aim
hqx
mp2
ogg
roff
xht
art
htc
mp3
spx
rtf
xhtml
asf
htm
mp4
flac
rtx
xls
asx
html
mpa
anx
sh
xml
au
hqx
mpe
axa
shar
xpm
avi
ief
mpeg
axv
smf
xsl
avx
jad
mpega
xspf
sit
xslt
bcpio
jar
mpg
pbm
snd
xul
bin
java
mpv2
pct
src
xwd
bmp
jnlp
ms
pdf
sv4cpio
vsd
body
jpe
nc
pgm
sv4crc
wav
cdf
jpeg
oda
pic
svg
wbmp
cer
jpg
odb
pict
svgz
wml
class
js
odc
pls
swf
wmlc
cpio
jsf
odf
png
t
wmls
csh
jspf
odg
pnm
tar
wmlscriptc
css
kar
odi
pnt
tcl
wmv
dib
latex
odm
ppm
tex
wrl
doc
m3u
odp
ppt
texi
wspolicy
dtd
mac
ods
pps
texinfo
Z
dv
man
odt
ps
tif
z
dvi
mathml
otg
psd
tiff
zip
eps
me
oth
qt
tr
etx
mid
otp
qti
tsv