「AWS用REST API風のもの」の版間の差分
提供: もみあげうぃき
(ページの作成:「 VYATTA USERS MEETING Spring 2014 に行ってきたら、結構いろんなクラウドにはREST APIが用意されているのに、AWSにはServiceごとにまちま...」) |
(→作り方の雰囲気) |
||
17行: | 17行: | ||
AmazonLinuxをLaunch | AmazonLinuxをLaunch | ||
+ | |||
sshでAmazonLinuxに入る | sshでAmazonLinuxに入る | ||
2014年4月7日 (月) 20:02時点における版
VYATTA USERS MEETING Spring 2014 に行ってきたら、結構いろんなクラウドにはREST APIが用意されているのに、AWSにはServiceごとにまちまちにしか用意されてなさそうだったので、REST API風に見せかけるやつをあれしました。
ただ単純に、HTTPで受けたのをAWS CLIに食わせるだけという暴挙を行っております。
Security的などなどいろいろ問題はありますが、まあ内部で利用する分にはいいよね!ってことで割り切って使えばいいかな?
※ちゃんと作るつもりはありません。
※キーをおもいっきりURLに書いちゃってるところが熱いのですが、内部用としてはいいかな?って思ってます
※せめてHTTPSにしましょう
作り方の雰囲気
あくまでも雰囲気なので、この通りやってもだめかもしれません。
AmazonLinuxをLaunch
sshでAmazonLinuxに入る
sudo yum -y install httpd python mod_python aws-cli
で必要そうなものを入れる
/etc/httpd/conf.d/python.conf に
Alias /test/ "/var/www/test/" <Directory "/var/www/test"> AllowOverride None Order allow,deny Allow from all AddHandler mod_python .py PythonHandler mod_python.publisher PythonDebug On </Directory>
こんな感じに足す
/var/www/test/aws.py
を
#!/usr/bin/python2 # -*- coding: utf-8 -*- import os import shutil import sys import codecs import datetime import locale import commands from mod_python import apache,util def escapecmd(arg): ret = arg.replace(";", "") ret = ret.replace("<", "") ret = ret.replace(">", "") ret = ret.replace("$", "") return ret def restapi(req, awsid, awskey, region, cmd, subcmd, options): ret = apache.OK json = "" req.content_type = "application/json" awsid = escapecmd(awsid) awskey = escapecmd(awskey) region = escapecmd(region) cmd = escapecmd(cmd) subcmd = escapecmd(subcmd) options = escapecmd(options) line = " export AWS_ACCESS_KEY_ID=" + awsid line += " ; export AWS_SECRET_ACCESS_KEY=" + awskey line += " ; aws " line += " --output json" line += " --region " + region line += " " + cmd line += " " + subcmd line += " " + options c_status, c_output = commands.getstatusoutput(line) json = c_output if 0 != c_status: ret = apache.HTTP_BAD_REQUEST req.write(json) return ret
こんな感じで作る
※ちゃんとサニタジングとかエラートラップとか必要ないimportとかあれするのがおすすめ!
sudo service httpd restart
で反映!
で curl なり wget なり Browser なりで、
でアクセス!
例.
※繰り返しではございますが、せめてHTTPSにはしましょうね