狠狠撸

狠狠撸Share a Scribd company logo
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ページを構築する……いずれ

More Related Content

AWSで自作CGIをサーバレス実装してみた ?その3