俺とサーバレスアーキテクチャ aws cognito + aws api gateway 編
TRANSCRIPT
俺とサーバレスアーキテクチャAWS Cognito + AWS API Gateway 編
2016-11-25 JAWS-UG 金沢 第 16 会勉強会ふぁらお加藤
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
ゴール• みんな大好き REST API をサーバレスで作ることができる• 加えて、 iOS / Android でその REST を叩く SDK まで作ってくれる !
• らを学びサーバレスで REST API 作りたくなる• そしてサーバレスでウェブアプリも作りたくなる
サーバレス とは
ここでは ミドルウェアレイヤーより以下のメンテナンスが不要なサービスと定義する
かつ、充分に安い、お金でスケールする。
そもそもの話を考えて欲しい
ウェブアプリ作りたいなーってときにサーバーは「しょうがなく」借りている
まぁしょうがないサーバ借りるレンタル料金払うにしてもなんで使ってない時もレンタルしてることになってんの?
ユーザーがアクセスのあったときだけサーバ貸してくれよ
そんな「本来の要求」の大権現が サーバーレス アーキテクチャ
さて本題
REST API 作ってますか ?
リソースを URL にマップしGET PUT POST DELETEでリクエストされ、レスポンスをかえす
例
GET /petsペット一覧取得
POST /petsペットを追加
PUT /pets/1ペット ID1 を更新
DELETE /pets/1ID1 のペットを削除 ( かなしい )
この REST API のインタフェイス定義専用のツール swagger をご存知ですか ?
swagger
API 定義を YAML や JSON でかける(YAML のほうが人類に読めるよね )
とにかく、エディタもあるので、これでまずはインタフェイスだけを定義する
さて、定義したらこれを動かすところがほしい・・・
API Gateway
Amazon API Gateway isウェブアプリ、リソース API 作成口にできるサービス
こいつにさっきの定義をインポートしてやることができる
つまり、特にウェブアプリをインターネットにサーバ借りて置かなくてもエンドポイントを作ることができる!
エンドポイントはわかった実装はどうするの !?ただのリバースプロキシでサーバいるじゃん !?
lambda
Lambda isコード実行サービス、 AWS 上で発生するいろんなイベントをトリガーにコードを実行できる
node.js や Java が使えるAWS SDK も使える
つまり、 AWS の各種サービスを叩ける !なんでもできる !
なんでもされたら困る・・・認証がいる
Cognito
Cognito isユーザーサインイン・サインアップ・データ保存場所提供サービス
これでログイン (Facebook やら twitter も対応 )してくれればその認証情報を API Gateway までもっていける
インターフェイス・実装はわかったあとはこの URL をモバイルデバイスから叩くだけだよね
そのだけがめんどくさいなー。
なんとアクセス用各種 SDK を自動で生成してくれます!
SDK の生成
JavaScript SDK petsGetRequest がみえる
まとめ• swagger 型式で REST API を定義し、それを API
Gateway に流し込める。• API Gateway へは Cognito で認証つきアクセスを提供でき、その先で AWS サービスをなんでも使える。• API Gateway に流し込んだインタフェイスを叩く
SDK を生成してもらえた。• これでサーバなしでウェブアプリ作れるぞ!
ご清聴ありがとうございました