15
AWS ででで CGI でででででででででで でで ででで 3 でででででででで ででで

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

  • Upload
    -

  • View
    959

  • Download
    0

Embed Size (px)

Citation preview

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

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

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

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

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

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

AWS に移植を決める

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

間に合いませんでした

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

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

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

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

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

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

設計の変遷 第一次設計

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

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

設計の変遷 第二次設計

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

yutanatsume5/awscgi-2

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

設計の変遷 第三次設計

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

現状この設計で実装中

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

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

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

EC2 上に構築

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

苦労したこと Lambda

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

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

苦労したこと DynamoDB

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

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

苦労したこと WAF

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

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

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

苦労したこと Cognito User Pools

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

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

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

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

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