だいぶご無沙汰しています。
どーも、のぶこふです。
「あれ、タイトルがAWSだけど、Blockchain関連じゃなかったんかワレ」と思った方、鋭いですね。
今年から弊社はAWSにも注力していて、ご多分に漏れず私もAWSを触る機会がが増えてきました。
最近、社内向け勉強会(現地とZoomのハイブリット開催)にて、資料を作成したので、こちらにも投稿します。
各詳細は、Githubを参照していただくとして、Qiitaでは寄り道に逸れた内容とか勉強会の振り返りを書いていこうと思います。
あ、Blockchain(Cordaとか)はBlockchainで、EKS上にNode立てたりしてますので、遠からず。
(゚∀゚)アヒャ
全体像
構成図としては、下記の通りです。
Serverlessな構成としては、RDSを使っていることを除けば、ごくごく一般的な内容です。
API Gatway
今回は、RESTを使用しています。
本当は、HTTPのほうが良いなー思ったのですが、時間の関係もあり無難なRESTを選択。
Lambda
Java8で書いてます。
Q:なんでJavaつかってるの?
A:社内向けと考えたときに、馴染みがあるのがJavaだったというだけや
最初、Java17とかで書いていて、Lambdaさんから怒られたりしました。
一番のハマりどころとしては、「FatJarにしないと、Lambda実行時に他Jarを読み取れなかった」ということでした。
今回の例でいうと、Jackson使うとか、そういうところです。
あと、社内ハンズオンをやるにあたり、「Javaのバージョンが揃っていない」「そもそもJavaが入っていない」みたいなケースがあったので、CloudShellにJDKを入れて、そちらでBuildをするようにしています。
Cloud9とかで環境を整えてあげるのも良かったのですが、そこまでコードを書いてもらうつもりはなかったので、CloudShellでBuildが完結したのは良かったところだと思います。
あとあと、LambdaへのUploadも、CloudShellからCLI叩いているのもミソですね。
画面から操作してもらうよりも、コピペしてコマンドを叩いてもらうほうが、ミスも少ないですし。
反面、「これ、なにしてるんだっけ?」というコメントも頂いたので、そういうところは補足する必要はありそうです。
RDS
Q:なんでRDSつかってるの?
A:社内向けと考えたときに、馴染みがあるのがRDB(=RDS)だったというだけや
いや、まぁ、ほんと、ただそれだけの理由なんですよね。
DynamoDBにしようかとも思いましたが、NoSQLの説明するのも面倒だったので、RDSを使ってます。
のちのち、RDS Proxyとか使ってみたいです
全体を通して
何もつまずくことがなければ、それぞれ10分ずつくらいで終わる分量だと思ってましたが、やはりつまずく人はつまずく。
ただ、手順は大分細かく書いていたので、遅れたりとか、後から来た人でもキャッチアップ出来たし、なんなら当日来れなかった人でも実施することが出来たのは良かったかなぁ、と。
進行とかの関係上、時々「どうですかー?」とか声掛けするんですが、オンライン側からの反応が薄かったので、進んでよいのかどうか迷う時がよくありました。
ここらへんは、どうにか変えていきたいなーと思っています。良い案は浮かんでませんが。
今回は、Inputに「-nyan」をつけて返すAPIの作成だったので、Inputを「nyan」にすれば「nyan-nyan」になるし、「Jiba」にすれば、あれになるので、そういうネタみたいなのも組み込んでいて楽しかったです。
おわりに
今後も定期的にハンズオンを開催予定なので、実施したらQiitaに後日談的な感じで投稿していこうと思います。
今回は以上です。
ありがとうございました。