LoginSignup
9
10

More than 5 years have passed since last update.

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

Posted at

自己満足度★×∞
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もチェキ。

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派なのです。。。

9
10
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
10