lambdaとapi gatewayを使ってみた

53
API Gateway と Lambda と ととととと ! 2016/03/23 @ Shibuya Mark City 13F ととと LT

Upload: yoshitaka-hirai

Post on 22-Jan-2017

548 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: LambdaとAPI Gatewayを使ってみた

API Gateway と Lambda を使ってみた !

2016/03/23 @ Shibuya Mark City 13F道玄坂 LT

Page 2: LambdaとAPI Gatewayを使ってみた

自己紹介平井 芳孝 ( ひらい よしたか )

• 2015 年 4 月 CyberAgent 入社• 2015 年 7 月 CyberZ 配属

@hryshtk (Hirai Yoshitaka)

Page 3: LambdaとAPI Gatewayを使ってみた

ところで

Page 4: LambdaとAPI Gatewayを使ってみた

もしもちょっとした Web API を作ろうと思ったら

Page 5: LambdaとAPI Gatewayを使ってみた

どうしますか?

Page 6: LambdaとAPI Gatewayを使ってみた

たとえば

Page 7: LambdaとAPI Gatewayを使ってみた

AWS で EC2 作ってEC2 にログインしてPHP などインストールしてLaravel などインストールして・・・

Page 8: LambdaとAPI Gatewayを使ってみた

めんどくさい!

Page 9: LambdaとAPI Gatewayを使ってみた

なにがめんどくさいのか?

Page 10: LambdaとAPI Gatewayを使ってみた

サーバーの構築サーバーの管理サーバーの監視などなど

Page 11: LambdaとAPI Gatewayを使ってみた

サーバーについて考えること!

Page 12: LambdaとAPI Gatewayを使ってみた

そこで

Page 13: LambdaとAPI Gatewayを使ってみた

Amazon API Gateway

+ AWS Lambda

Page 14: LambdaとAPI Gatewayを使ってみた

※AWS の回し者でありません

Page 15: LambdaとAPI Gatewayを使ってみた

基本的な作業手順

1. Lambda でラムダ関数を作成し ソースコードをアップロード2. API Gateway で API を作成し ラムダ関数に紐付ける

Page 16: LambdaとAPI Gatewayを使ってみた

超かんたん!

Page 17: LambdaとAPI Gatewayを使ってみた

AWS Lambda とはソースコードをアップロードすることで ソースコードの実行を代行してくれる コンピューティングサービス

Page 18: LambdaとAPI Gatewayを使ってみた

AWS Lambda の特徴 (1)

• サーバー管理が不要• サーバーにログインしなくていい• 処理系とかをインストールしなくていい• ネットワークとかセキュリティの設定をしなくていい

Page 19: LambdaとAPI Gatewayを使ってみた

AWS Lambda の特徴 (2)

• ほかの AWS サービスと連携できる• API Gateway と連携することでイベントドリブンな アプリケーションを実現できる• S3 と連携することで プログラムの実行結果を保存できる

• サポートされてるプログラミング言語• Java 8• Python 2.7• Node.js v0.10.36

Page 20: LambdaとAPI Gatewayを使ってみた

AWS Lambda の設定 (1)

Page 21: LambdaとAPI Gatewayを使ってみた

AWS Lambda の設定 (2)

Page 22: LambdaとAPI Gatewayを使ってみた

AWS Lambda の設定 (3)

Page 23: LambdaとAPI Gatewayを使ってみた

AWS Lambda の設定 (4)

Page 24: LambdaとAPI Gatewayを使ってみた

AWS Lambda の設定 (5)

Page 25: LambdaとAPI Gatewayを使ってみた

AWS Lambda の設定 (6)

Page 26: LambdaとAPI Gatewayを使ってみた

AWS Lambda の設定 (7)

Page 27: LambdaとAPI Gatewayを使ってみた

Amazon API Gateway とは

AWS Lambda を含む AWS サービスに対してREST API を作成することができるサービス

Page 28: LambdaとAPI Gatewayを使ってみた

Amazon API Gateway の特徴• スケールアウトが容易に可能• Stages で本番環境や検証環境などのステージをつくれる• ステージごとに以下の設定が可能• キャッシュ ( 期限と容量を指定できる )• Cloud Watch(AWS のモニタリングサービス )• スロットリング (1 秒当たりの最大リクエスト数 )

Page 29: LambdaとAPI Gatewayを使ってみた

Amazon API Gateway の設定 (1)

Page 30: LambdaとAPI Gatewayを使ってみた

Amazon API Gateway の設定 (2)

Page 31: LambdaとAPI Gatewayを使ってみた

Amazon API Gateway の設定 (3)

Page 32: LambdaとAPI Gatewayを使ってみた

Amazon API Gateway の設定 (4)

Page 33: LambdaとAPI Gatewayを使ってみた

Amazon API Gateway の設定 (5)

Page 34: LambdaとAPI Gatewayを使ってみた

Amazon API Gateway の設定 (6)

Page 35: LambdaとAPI Gatewayを使ってみた

Amazon API Gateway の設定 (7)

Page 36: LambdaとAPI Gatewayを使ってみた

Amazon API Gateway の設定 (8)

Page 37: LambdaとAPI Gatewayを使ってみた

Amazon API Gateway の設定 (9)

Page 38: LambdaとAPI Gatewayを使ってみた

Amazon API Gateway の設定 (10)

Page 39: LambdaとAPI Gatewayを使ってみた

Amazon API Gateway の設定 (11)

Page 40: LambdaとAPI Gatewayを使ってみた

Amazon API Gateway の設定 (12)

Page 41: LambdaとAPI Gatewayを使ってみた

Amazon API Gateway の設定 (13)

Page 42: LambdaとAPI Gatewayを使ってみた

Amazon API Gateway の設定 (14)

Page 43: LambdaとAPI Gatewayを使ってみた

ELB + EC2 -> API Gateway + Lambda

Page 44: LambdaとAPI Gatewayを使ってみた

設定時に対する感想

Page 45: LambdaとAPI Gatewayを使ってみた

API Gateway や Lambda でいいなーと思うことインフラの構成が超シンプル

設定が超らくGUI で設定できてわかりやすい

Page 46: LambdaとAPI Gatewayを使ってみた

API Gateway や Lambda で直して欲しいなーと思うこと

ラムダ関数に何のファイルがアップロードされているのかGUI 画面からわからない (>_<)

Stages で Save Changes をクリックしても何も起こらないので設定が反映されているのかどうかわからなくて不安になる (>_<)

API Gateway

Lambda

Page 47: LambdaとAPI Gatewayを使ってみた

機能面に対する感想

Page 48: LambdaとAPI Gatewayを使ってみた

API Gateway や Lambda に向いていること

一個一個の処理は短時間だけどそれが大量にある処理( 自動でスケールアウトされるので )

Page 49: LambdaとAPI Gatewayを使ってみた

API Gateway や Lambda に向いてないこと

長時間動かすバッチ( タイムアウトの設定が最大で 5 分なので )

Page 50: LambdaとAPI Gatewayを使ってみた

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

Page 51: LambdaとAPI Gatewayを使ってみた

おまけ

Page 52: LambdaとAPI Gatewayを使ってみた

AWS Lambda を使う前に考えておくこと項目 説明ラムダ関数名 AWS で管理するプログラムの名前ランタイム Node.js, Java 8, Python 2.7

アップロードするソースコード 基本的に zip で Java なら jar でも OK

ハンドラー名 例 : com.example.Main

ロール名 例 : lambda_basic_execution

メモリ 128MB 〜 1536MB, 64MB 刻みで選択可能タイムアウト 1sec 〜 300sec(5min), 1sec 単位で選択可

能VPC No VPC, 各 VPC から選択可能

Page 53: LambdaとAPI Gatewayを使ってみた

Amazon API Gateway を使う前に考えておくこと項目 説明API 名 AWS で管理する API の名前リソース名 (+ メソッドの種類 ) 実際の URI の一部になるものIntegration Type Lambda Function, Http Proxy などステージ名 prd や dev などCache Capacity 0.5GB 〜 237GB

Cache TTL(Time-To-Live) 0sec 〜 3600sec(1hour)

Cloud Watch Logs 有効にするかどうかCloud Watch Metrics 有効にするかどうかThrottling Settings 1 秒当たりの最大リクエスト数