awsで自作cgiをサーバレス実装してみた 〜その3

Post on 10-Jan-2017

959 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

AWS で自作 CGI をサーバレス実装してみた 〜その 3株式会社クリック 夏目祐樹

自己紹介 夏目祐樹 ( ナツメユウタ ) 新卒 2 年目の新人 SE(?) 正社員だけど電気屋さんの子会社に派遣される Chef Guy

自作 CGI Web-Library 自炊した書籍をブラウザ経由で読むためのもの 本以外でも画像ファイルであれば読める 家のサーバで動かしているがレスポンス等もあり

AWS に移植を決める

間に合いませんでした

間に合わなかった理由 画像ファイルが 60G もあったため軽量化を図る必要があった。かつ、その調査やコンバートに時間がかかった。 Cognito User Pools をつかったアクセス制御のいい方法が思いつかず、調査に時間をかけすぎた Node.js の非同期処理に不慣れで

Lambda の実装に時間がかかった。 艦これ Arcade とか空の軌跡とかに浮気してた

アジェンダ設計の変遷苦労したこと

設計の変遷 第一次設計

初めての LT で話した構成 S3 の静的ホスティングを使って運用 アクセス制御はバケットのポリシーを使用

設計の変遷 第二次設計

LT 後の助言をもとに改良した構成 Web 公開部分を CloudFront に変更。それに伴いアクセス制御を WAF に。 WAF の詳細は過去の LT 資料に http://www.slideshare.net/

yutanatsume5/awscgi-2

設計の変遷 第三次設計

Dynamo で困ったこととデータ設計の結果、Dynamo を使用しないことにした

現状この設計で実装中

設計の変遷 第四次設計 ( 渇望 ) 実装の方法もまだよくわからないため渇望に近い設計 容量的に小さい管理データは Dynamo に、

大きいものは S3 に ユーザー認証を Cognito User Pools に一任 現在手動でやっている管理系の機能を

EC2 上に構築

苦労したこと Lambda

テストの容易さから Web コンソールで編集を行う そのため、 npm を使ったライブラリの追加等ができなかった。 Lambda のファンクションをグループ分けできないので、テスト用にファンクションを大量に作ったとき探すのが大変だった。

苦労したこと DynamoDB

JSON でデータの更新取得ができる できるものの、取得時に JSON 内部で型情報を持っているためパースしないと使いにくい Lambda を Web コンソールで書いているためパーサーのライブラリを導入できない

苦労したこと WAF

String matchig で URI を選択するとFQDN 部をマッチングできない。

正規表現が使えない。 若干高い。

苦労したこと Cognito User Pools

最近できたサービスで情報が少ない アクセストークンを取得できるものの、トークンが有効なものか確認する方法がわからない アクセストークンをユーザーデータに格納して有効か確認しようと思ったが、

Lambda に渡せるデータにアクセストークンがない

まとめ 開発は間に合いませんでした S3, CroudFront, ACM, API Gateway, Lambda,

WAF, Route53 を使用して開発を行っている DynamoDB を使用して一部のデータを管理する……たぶん EC2 上に管理用の Webページを構築する……いずれ

top related