AWS CloudFormation 用の ActionScript API
挑戦状が来たので早速30分ぐらいで作りました。
こんなかんじで書けます。
var cfm:CFM = new CFM(CFM.US_EAST_1);
cfm.setAWSCredentials(AWSKey.key,AWSKey.sec);
cfm.addEventListener(AWSEvent.RESULT,awsHandler);
cfm.executeRequest(CFM.DESCRIBE_STACKS);
ActionScript API for AWS (Amazon Web Services)
https://github.com/satoshi7/ActionScript-API-for-AWS-Amazon-Web-Services-
Amazon Web Services のセキュリティについて
Amazon Web Services のセキュリティについて、自分用のメモ書きです。ちょっとだけ加筆しました。
- SAS70(財務諸表に係る内部統制に関連する受託業務の評価の基準)取得
- FISMA(連邦情報セキュリティマネジメント法)取得
- HIPAA(医療保険の相互運用性と説明責任に関する法律)対応
- ISO 27001(情報セキュリティマネジメントシステム - ISMS)取得
- DoD 5220.22-M(国立産業セキュリティプログラム作業マニュアル)準拠の廃棄処理
- AWS セキュリティセンター
- AWS セキュリティプロセス抜粋
-
- 複数のセキュリティレベル
- ホストオペレーティングシステム:多要素認証
- ゲストオペレーティングシステム:証明書ベースのSSHv2 を使用
- ファイヤウォール:強制インバウンドファイヤウォールは、デフォルトでは拒否モードに設定
- ハイパーバイザー:ゲストOS はCPU に対して高度なアクセスをもちません。
- インスタンスの分離:物理的RAM も分離しています。
- 障害分離:インスタンスを複数のアベイラビリティゾーン(Availability Zone) だけでなく、複数の地理的に離れたリージョン(Region)に配置できる柔軟性を提供。各アベイラビリティゾーンは、障害分離が可能なようデザインされています。つまり、個々のアベイラビリティゾーンは、一般的な都市地域内で物理的に分離されており、地震や洪水での影響が同時に及ばないような場所が考慮されています。個別の無停電電源装置(UPS)やオンサイトのバックアップ生成施設に加え、さらにシングルポイントの障害の可能性を減らすために、別々の電力供給施設から異なる配管網を経由して、個別に電力供給を行なっています。これらはすべて、冗長的に、複数のTier-1 プロバイダに接続されています。
- 複数のセキュリティレベル
- ・補足資料
- クラウドめぐり日米5社がディスカッション
- Cloud Computing World 2010 基調トークセッション(後編)
- http://news.livedoor.com/article/detail/4982468/
- クラウド・コンピューティングにおける
- 情報セキュリティ管理の課題と対応
- http://www.imes.boj.or.jp/japanese/jdps/2010/10-J-24.pdf
- クラウドとは
- ユーザーが、クラウドのサービス提供者側の人間を介することなく、必要に応じてサービスの利用を開始したり設定を変更したりできること。
- 機能がネットワーク経由で提供され、標準的な仕組みを使って多様なクライアント・プラットフォームからアクセスできること。
- サービス提供者の計算資源が複数のユーザーに対してマルチテナント・モデルによって提供されるように確保されており、顧客のニーズに従って物理的・仮想的な資源が動的に割り当てられること。
- 機能が迅速かつ柔軟に提供され、ユーザーが必要に応じて使用する計算資源の量を動的に増減させることができること。
- クラウドの利用状況を監視・制御して計算資源の利用を最適化し、当該利用者とサービス提供者に報告すること。
- ユーザーが、クラウドのサービス提供者側の人間を介することなく、必要に応じてサービスの利用を開始したり設定を変更したりできること。
AWS API の認証の種類について
ここでミニLTです。
AWSが提供しているQueryAPIを解析していますと、認証周りで違いがあることが分かります。そこで、まとめます。
- 0:HTTPヘッダで認証する方法その1
- 暗号化アルゴリズム:HMACSHA1
- 使われているサービス:S3
- 認証生成に使う文字:Date,Resources,HTTP-Verbなどなど
- 1:EC2等で使われていたがdepricatedになった認証方法
- 2:GETパラメータで認証する最もメジャーな認証方法
- 暗号化アルゴリズム:HMACSHA1
- 使われているサービス:EC2, CloudWatch, Import Export, Auto Scaling, Elastic Beanstalk, Elastic Load Balancing, Elastic MapReduce, Identity and Access Management, Relational Database Service, SimpleDB, Simple Notification Service,Simple Queue Service, Virtual Private Cloud
- 認証生成に使う文字:Action,SignatureVersion,SignatureMethod,AWSAccessKeyId,Timestampなどなど
- 3:HTTPヘッダで認証する方法その2
- 暗号化アルゴリズム:HMACSHA256
- 使われているサービス:Route 53, Simple Email Service
- 認証生成に使う文字:Date
- 4:HTTPヘッダで認証する方法その3
- 暗号化アルゴリズム:HMACSHA1
- 使われているサービス:CloudFront
- 認証生成に使う文字:Date
詳しくはこちらをお試しください。
https://github.com/satoshi7/ActionScript-API-for-AWS-Amazon-Web-Services-
以下のAPIと接続確認ができています。
- EC2 - Amazon Elastic Compute Cloud
- EMR - Amazon Elastic MapReduce
- RDS - Amazon Relational Database Service
- SNS - Amazon Simple Notification Service
- SDB - Amazon SimpleDB
- SQS - Amazon Simple Queue Service
- ACW - Amazon CloudWatch
- IAM - AWS Identity and Access Management
- EBT - AWS Elastic Beanstalk
- SES - Amazon Simple Email Service
- ASC - Auto Scaling
- ELB - Amazon Elastic Load Balancing
- S3 - Amazon Simple Storage Service
- VPC - Amazon Virtual Private Cloud
- ACF - Amazon CloudFront
- AIE - Amazon Import/Export -- under development..
- R53 - Amazon Route 53
次新しいのが出たら即日対応してやるっ!!!(挑戦状)
ではでは。
ActionScript API for Amazon Simple Email Service
とりあえず作ってみた。
GitHubに上げました。
とりあえず、、、動きますw。
以前とSignatureが変わっててちょっとだけ苦労しました。
ActionScript API for AWS (Amazon Web Services)
https://github.com/satoshi7/ActionScript-API-for-AWS-Amazon-Web-Services-
AWS Elastic Beanstalk を使う その9
TomcatでRails動きました。
jruby-rack.jarのバージョンが問題だったみたい。
1.0.5 から 1.0.3 に下げたらうまくいけました。
これでrailsアプリからTomcat用のwarファイル生成OKですー。
>gem uninstall jruby-rack >gem install jruby-rack -v 1.0.3 >sudo warble config >sudo warble
しかーし、生成されたwarファイルが大きすぎてアップロードできないし。。
って、Management Console から Upload New Version って指定したら怒られたのに、Environment の Action から Deploy a Different Version ってやったらアップロードできた!
そして、Beanstalk で Ruby on Rails の動作環境が整いました〜。
オレオレHerokuだねー。
AWS Elastic Beanstalk を使う その11
色々環境が揃ってきたので、Tomcat の Session Persistence を拡張しようと思った感じですw。
まずはじめに Tomcat のソースをダウンロードしてEclipseにインポートしてビルドに必要なライブラリを追加します。
次に参考にするStoreクラスのソースを見ます。
FileStoreとJDBCStoreが参考になりますね。
んじゃ、これを参考に SimpleDBStoreを作りましょう。
FileStore と JDBCStore は StoreBase抽象クラスを継承してStoreインタフェースを実装しています。同じようにクラス定義します。
雛形はこんな感じかな。
package jp.cm.aws.tomcat.session; import java.io.IOException; import org.apache.catalina.Session; import org.apache.catalina.Store; import org.apache.catalina.session.StandardSession; import org.apache.catalina.session.StoreBase; public class SimpleDBStore extends StoreBase implements Store{ @Override public int getSize() throws IOException { return 1; } @Override public String[] keys() throws IOException { String[] ks = {"keykeykey"}; return ks; } @Override public Session load(String id) throws ClassNotFoundException, IOException { System.out.println("load"); StandardSession session = (StandardSession) manager.createEmptySession(); return session; } @Override public void remove(String id) throws IOException { System.out.println("remove"); } @Override public void clear() throws IOException { System.out.println("clear"); } @Override public void save(Session session) throws IOException { System.out.println("save"); } }
後はここにSessionの永続化と復元の処理を入れればOKのはず。
続きまして、上記の雛形がちゃんと動くか確認します。
アプリケーションフォルダの下にMETA-INFフォルダを作ってcontext.xmlを作ります。中身はこんな感じ。
<?xml version='1.0' encoding='utf-8'?> <Context docBase="${catalina.home}/webapps/simpledb" path="/simpledb" reloadable="true" source="org.eclipse.jst.j2ee.server:test" backgroundProcessorDelay="1" > <Manager className="org.apache.catalina.session.PersistentManager" distributable="true" duplicates="0" saveOnRestart="true" maxActive="0" maxActiveSessions="0" minIdleSwap="0" maxIdleSwap="0" maxIdleBackup="0" maxInactiveInterval="0" sessionCounter="0" > <Store className="jp.cm.aws.tomcat.session.SimpleDBStore"/> <!-- <Store className="org.apache.catalina.session.FileStore" directory="${catalina.home}/logs/sessions" > </Store> --> <!-- <Store className="org.apache.catalina.session.JDBCStore" checkInterval="1" connectionURL="jdbc:mysql://mydb.csnpjudtgu1o.us-east-1.rds.amazonaws.com:3306/awstest" driverName="com.mysql.jdbc.Driver" sessionAppCol="app_name" sessionDataCol="session_data" sessionIdCol="session_id" sessionLastAccessedCol="last_access" sessionMaxInactiveCol="max_inactive" sessionTable="tomcat_sessions" sessionValidCol="valid_session" /> --> </Manager> </Context>
このままだとSimpleDBStoreクラスが見つからないと怒られるので、
TOMCAT_HOME/libにクラスをコピーして置きます。jar化してもOK。
さて、無事にSession Persistenceをしてくれるカスタムクラスの作成に成功しました〜。
ちゃんと動いているか確認してみましょう。
このアプリにひとつjspを作って以下のようにセッションに書き込みをしてみます。
session.setAttribute("key1","value1");
このjspをブラウザから叩くと、以下のようにTomcatのログが出ました!!
2011/01/23 22:27:44 org.apache.catalina.session.PersistentManagerBase swapIn
あとは、SimpleDBにセッション情報を書き込む処理だけですね。
これは、AWS SDK for Java をダウンロードしてlibにjarを追加してごにょごにょすればすぐにできるはず。
今日はここまで。