夜な夜な夜なべしてサーバレスアーキテクチャにTRY!!

  • 9
    いいね
  • 1
    コメント
この記事は最終更新日から1年以上が経過しています。

自己満足度★×∞
JavaScript+S3のWebホスティング機能でSPA
→AWS API Gatewayで外部公開
→AWS Lambda+DynamoDBでマイクロサービスを作成
http://blog.serverworks.co.jp/tech/2016/06/06/what_is_serverless/

1. AWS Lambda事始め

http://qiita.com/Keisuke69/items/fc39a2f464d14480a432
Mavenプロジェクトを整備してLambdaサンプルを作成:勿論Java!!(!?)...コンパイル言語のJavaだとLambdaのインラインエディタが使えないのね。

2. API Gatewayに登録

ここで少々嵌る。API GatewayとLambdaのマッピングがうまくいっていない...一度作成したAPIを削除してLambdaから登録し直したらOK
http://qiita.com/r7kamura/items/6420538789da95cd2f47

3. CSVからDynamoDBへのデータロード

Data Pipelineを使おうとしたが断念...ErrorsやWarningsなんてそう簡単に消えない。
https://docs.aws.amazon.com/ja_jp/datapipeline/latest/DeveloperGuide/dp-importexport-ddb-part1.html

3’【方針変換】CSVからDynamoDBへデータロードするJavaアプリを実装!

AWS DynamoDB SDK for Javaを駆使。
https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/AppendixSampleDataCodeJava.html
MavenにDynamoDB SDKを追加。
https://mvnrepository.com/artifact/com.amazonaws/aws-java-sdk-dynamodb/1.9.0
Java8のStream/ラムダ式コーディングをやってみたよ。
http://acro-engineer.hatenablog.com/entry/2014/03/12/112402

4. 接続先DynnamoDBのRegion変更方法

ここで少々嵌る。DynamoDB Java SDKの接続先Regionがどうしてもus-east-1(デフォルト)になる(日本でなく太平洋を渡ってしまう)...AmazonDynamoDBClilentの接続先Regionを変更する方法を突き止めた!
https://java.awsblog.com/post/Tx2IHRMVOFHSUO1/Working-with-Different-AWS-Regions

5. High-Level API: DynameDBMapperもチェキ。

https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/DynamoDBMapper.html

6. LambdaアプリへのDynamoDB SDKの組み込み

これは造作もない...はずだった。
Lambdaサーバ上でAWS Credentialsを指定するにはどーすんだ???
→LambdaにDynamoDBアクセスロールを付与すればOK
。。。最終的には、Lambdaに割り当てていたメモリサイズ(128MB)が小さすぎてAbortしていた、という結論...(Lambda初回読み出しは高負荷)

7. API GatewayのCORS(Cross-Origin Resource Sharing)制限に引っかかる...

この頁↓がネ申っている。
http://qiita.com/naomichi-y/items/999328ad910e5ab9589d

8. AjaxでPOST通信するワザ

SPA(Single Page Application)の真髄、
http://codaholic.org/?p=716

9. Web APIはとうとう完成だ。ハカセ,オメデトウゴザイマス!!

クライアント側をJavaScript/jQueryで実装中、ここでも嵌まる。JSONレスポンスがパースできない...まさか、送信時だけでなく、受信時にも「JSON.stringify()」が必要だったとは...orz
http://qiita.com/kazu56/items/56c717d98e29c6b72967

10. SPAクライアントHTML/JavaScriptを、S3(Webホスティング機能ON)に置いて、サーバレスアーキテクチャの完成ですっ!☆☆★

。。。ここまでやって本当は、薄々気づいている。Java、要らなかったんぢゃね?
「DynamoDBへの接続も、Lambdaアプリの実装も、JavaScriptでできる(Javaの必然性はない)。
 JavaScript(コンパイル不要)なら、AWS画面上のインラインエディタで開発できる。しかも画面周りはどうせJavaScriptぢゃないか」

でも、それでも、なんといわれようと、自分はJava派なのです。。。