自己満足度★×∞
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派なのです。。。