Trello の API から取得した成果を印刷するページをAWS Lambda IDE完結で作りたかった 

欲しかったのもの 

Lineのスタンプを手書きで書いてもらうための、印刷のフォーマット
これを作るために何を使ってやればいいだろうか
 
最初に考えたはGoogle スプレッドシートでも使って、いい感じに表示すればいいかなと考えた
 
しかしながら、Todoリストで項目の管理もしたかった
 
Google スプレッドシートで作ったToDoリストは携帯から簡単に操作できないと感じている
 
なので ToDoリストは別で管理してその内容を何かしらの形で出力した法が良いのではないかと思った
 
 
 
ToDoリストは一番好きなのは Google Keepである
 
しかし今回はかんばん方式にして終わったものや現在進行中のものなど管理できるし、APIがあるためTrelloを使うことにした
 
 
 そして、今回は出力に AWS Lambda を使って出力したいと考えた
 
API を叩くとなるとTokenなどがたいてい必要になり、JSでやろうとするとTokenの公開が必要になる。
が、それはしたくなかった
 
と、なるとバックエンドでやったほうが良いことになり、そこで目をつけたのがLambdaだ。
 
AWS Lambda layers  がリリースされたので、ライブラリも使いやすくなった
 
おそらくWebのIDEだけでコード書いて完結できるはずだ、と思いLambdaでやってみることにした
 
 
まずは Lambda layers に使いたいライブラリーをアップする 
 
言語はこういう簡単なものを扱うときに便利なPythonにした
 
使いたいライブラリだけを ZIP に固めて アップロードする CI を前に作ったので flask とリクエストを Lambda layers に登録した
 
 
 
そして後は AWS Lambda  layersを使うように設定し、コードを書いていく
 
時々保存しながらテストを実行し 思い思い通りの動作になるかをデバッグしつつ進めていく
 
API にリクエストを投げて リストのデータを取得するところの実装は簡単にできた。
 
 
 
後はそれを テンプレートエンジンに投げて Web として出力したい
 
flask が必要になるかと思っていたが、欲しいのはテンプレートの機能だったので、flask が使っているJinja2のテンプレートの機能のみを使った
 

最終的なコードがこちら

gist.github.com

 
印刷するようの レイアウトの調整は paper-cssを使って A 4にきちんと収まるように収まるように コードペンを使って整えた
 
templateのコード
 

gist.github.com

 
 

最後にWebで叩いて、htmlになるようにする

 
  • Lambdaのレスポンスheadersのcontent-typeを設定する作業
  • API GatewayでアクセスできるようにLambda プロクシにする
  • API Gatewayのデプロイをする

成果

 
Lambda layersやはり、今後も使い所が多そうだなと感じた