Transcript
Page 1: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

俺とサーバレスアーキテクチャAWS Cognito + AWS API Gateway 編

2016-11-25 JAWS-UG 金沢 第 16 会勉強会ふぁらお加藤

Page 2: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

Profile

Nameふぁらお加藤 / @PharaohKJHobbyCamera / subcultureJob & WorksPhalanXware (Freelancer)OCR system com / .NETISDB-T MFC / Linux C++Social Game PHP / JavaERP+CRM AngularJS / CordovaInformation App AngularJS / CakePHPFactory Automation .NET

Page 3: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

ゴール• みんな大好き REST API をサーバレスで作ることができる• 加えて、 iOS / Android でその REST を叩く SDK まで作ってくれる !

• らを学びサーバレスで REST API 作りたくなる• そしてサーバレスでウェブアプリも作りたくなる

Page 4: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

サーバレス とは

Page 5: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

ここでは ミドルウェアレイヤーより以下のメンテナンスが不要なサービスと定義する

Page 6: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

かつ、充分に安い、お金でスケールする。

Page 7: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

そもそもの話を考えて欲しい

Page 8: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

ウェブアプリ作りたいなーってときにサーバーは「しょうがなく」借りている

Page 9: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

まぁしょうがないサーバ借りるレンタル料金払うにしてもなんで使ってない時もレンタルしてることになってんの?

Page 10: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

ユーザーがアクセスのあったときだけサーバ貸してくれよ

Page 11: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

そんな「本来の要求」の大権現が サーバーレス アーキテクチャ

Page 12: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

さて本題

Page 13: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

REST API 作ってますか ?

Page 14: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

リソースを URL にマップしGET PUT POST DELETEでリクエストされ、レスポンスをかえす

Page 15: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

Page 16: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

GET /petsペット一覧取得

Page 17: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

POST /petsペットを追加

Page 18: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

PUT /pets/1ペット ID1 を更新

Page 19: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

DELETE /pets/1ID1 のペットを削除 ( かなしい )

Page 20: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

この REST API のインタフェイス定義専用のツール swagger をご存知ですか ?

Page 21: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

swagger

Page 22: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

API 定義を YAML や JSON でかける(YAML のほうが人類に読めるよね )

Page 23: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

とにかく、エディタもあるので、これでまずはインタフェイスだけを定義する

Page 24: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

さて、定義したらこれを動かすところがほしい・・・

Page 25: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

API Gateway

Page 26: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

Amazon API Gateway isウェブアプリ、リソース API 作成口にできるサービス

Page 27: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

こいつにさっきの定義をインポートしてやることができる

Page 28: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

つまり、特にウェブアプリをインターネットにサーバ借りて置かなくてもエンドポイントを作ることができる!

Page 29: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

エンドポイントはわかった実装はどうするの !?ただのリバースプロキシでサーバいるじゃん !?

Page 30: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

lambda

Page 31: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

Lambda isコード実行サービス、 AWS 上で発生するいろんなイベントをトリガーにコードを実行できる

Page 32: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

node.js や Java が使えるAWS SDK も使える

Page 33: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

つまり、 AWS の各種サービスを叩ける !なんでもできる !

Page 34: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

なんでもされたら困る・・・認証がいる

Page 35: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

Cognito

Page 36: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

Cognito isユーザーサインイン・サインアップ・データ保存場所提供サービス

Page 37: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

これでログイン (Facebook やら twitter も対応 )してくれればその認証情報を API Gateway までもっていける

Page 38: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

インターフェイス・実装はわかったあとはこの URL をモバイルデバイスから叩くだけだよね

Page 39: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

そのだけがめんどくさいなー。

Page 40: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

なんとアクセス用各種 SDK を自動で生成してくれます!

Page 41: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

SDK の生成

Page 42: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

JavaScript SDK petsGetRequest がみえる

Page 43: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

まとめ• swagger 型式で REST API を定義し、それを API

Gateway に流し込める。• API Gateway へは Cognito で認証つきアクセスを提供でき、その先で AWS サービスをなんでも使える。• API Gateway に流し込んだインタフェイスを叩く

SDK を生成してもらえた。• これでサーバなしでウェブアプリ作れるぞ!

Page 44: 俺とサーバレスアーキテクチャ Aws cognito + aws api gateway 編

ご清聴ありがとうございました


Recommended