Fluctの進捗

週末にハッカソンに参加して、少し進捗した。

FunctionごとにARNを保存していたのを廃止した

https://github.com/r7kamura/fluct/issues/19

AWS Lambdaに新しいFunctionを追加するたびに手元の ./actions/*/package.json にFunctionのARNを自動記述する方式だったのを不要にした。これまではデプロイのタイミングで新しいFunctionが生成された場合、ARNを追記する都合で自動で package.json が更新されてしまっていたのだけど、CIからデプロイするなどのことを考えるとそのタイミングで手元の (Gitにindexingされる) ファイルが更新されるというのは運用上でかなり困りそうだったので、Account IDを書いてもらうという方式にした。Account IDをそのまま利用するというのはあまり想定されていない使い方っぽいし、そもそもAccount IDを取得するみたいなAPIが提供されてなかったり、少しまずい感じではあるが、結局FunctionのARNをpackage.jsonに記述する場合でもAccount IDはそこに含まれてしまうわけだから、いまより悪くなることは無いだろうと思って変更した。

任意のステータスコードを返せるようにした

https://github.com/r7kamura/fluct/issues/21

actionのメタデータ (package.jsonのfluctプロパティの内容) にstatusCodeというプロパティを用意し、この値をステータスコードとして返すようにした。これまでは200で決め打ちだった。

DynamoDBを簡単に使えることことが分かった

DynamoDBは簡単ではないが、簡単にDynamoDBを使えるということは分かった。usersテーブルをつくって、Cookieに暗号化したIDを入れて (session相当という想定)、それを元に現在ログインしているユーザの名前を画面に表示する、という実験をした。

レスポンスヘッダを動的に変更できないことが分かった

https://github.com/r7kamura/fluct/issues/17

ステータスコードを302にも変えられるようになったので、単純にリダイレクトができるようになるかと思いきや、Amazon API Gatewayの仕様上それは出来なかった。レスポンスヘッダを設定することはできるが、AWS Lambdaを利用する場合はあらかじめ指定しておいたレスポンスヘッダしか指定できないので、動的にレスポンスヘッダを変えるということができない。もちろん「トップページに戻る」みたいな決め打ちの値でよければ、Locationヘッダに "/" などを入れておけばそれで済むけれども。この辺は動的に指定できるようになってもらわないとかなり困る。今は、とりあえずJavaScriptで遷移させるようにしたり、Set-CookieなんかもJavaScriptで設定するという風にして対処してる。上のIssueにもあるように、ログイン機能を持つようなWebアプリをつくるというユースケースを想定していて、レスポンスヘッダはそこで必要になっている。

その他

メールアドレスとパスワードでログインできて、Markdownで文章を書いて投稿したらHTMLに描画されるて表示される、ぐらいの簡単なサイトを簡単につくれるところを目標に気長にやっていきたい。