先日AWSがJavascriptSDKのDeveloperプレビューをローンチしました。

http://aws.typepad.com/aws_japan/2013/11/developer-preview-aws-sdk-for-javascript.html

 

ということで、S3との連携をやってみました。

 

基本的な流れは

1. Web Federationの設定

2.AWS側の設定(CORS,IAM Role等)

3. javascriptコーディング

って感じ。

 

1. AWS Web Identity Federation

AWS Web Identity Federation ってのは別のWebサービスを利用したID連携のことです。

OpenID的なもの?

詳しくはこちら↓

http://aws.amazon.com/jp/iam/

http://docs.aws.amazon.com/STS/latest/UsingSTS/CreatingWIF.html

 

JavaScriptでKeyとSecretをハードコーディングして指定してしまうやり方も出来るんだけど、

そうするとクレデンシャルが丸見えなので

Roleでアクセスコントロールをかなり厳しくしとかないとNG。

その点Web Identity FederationはOAuthみたいにクレデンシャルを一切外部に公開しないため

セキュアということで、今回はWeb Identity Federationを採用。

 

facebookあんまり好きじゃないので天下のAmazonさん(Login with Amazon)を利用。

認証アプリの作成方法は

1. AmazonのDeveloperアカウントをとる

2. アプリ登録

3. アプリのAppIDとClientIDをメモ

でOK。

 

 2.AWS側の設定(CORS,IAM Role等)

S3を利用する場合はCORSをバケットに対して設定する。

Web Identity FederationのためのIAM(Role)を作成する。

IAM>Role>Create New Roleで

Role for Web Identity Provider Accessを選択してあとはウィザード形式で作成。

www.amazon.com:app_idはアプリ登録で取得したApp IDを入力。

 

ポリシーはこんな感じになる。

詳細はここらへん参照。

 

作成後は対象Roleのarnをメモ。

 

3. javascriptコーディング

全ての準備が整ったらあとは書くだけ!

こんな感じです。

テキトー&8割型コピペなのでご容赦を。

 

Role ArnとアプリのClientIDをそれぞれ書き込めば動きます。

 

JavaScript単体で動くっていうことはS3のStatic Web Hostingにhtml&JS置いて

S3にオブジェクト置いたり、取得したりっていうS3だけで完結するアプリが書けるようになったってこと。

しかもS3だけじゃなくてDynamoDBとかSNSとかモバイル向けのサービスにもアクセス出来る。

 

やっぱり時代の流れはモバイルか!