lambdaとapi gatewayを使ってみた
TRANSCRIPT
API Gateway と Lambda を使ってみた !
2016/03/23 @ Shibuya Mark City 13F道玄坂 LT
自己紹介平井 芳孝 ( ひらい よしたか )
• 2015 年 4 月 CyberAgent 入社• 2015 年 7 月 CyberZ 配属
@hryshtk (Hirai Yoshitaka)
ところで
もしもちょっとした Web API を作ろうと思ったら
どうしますか?
たとえば
AWS で EC2 作ってEC2 にログインしてPHP などインストールしてLaravel などインストールして・・・
めんどくさい!
なにがめんどくさいのか?
サーバーの構築サーバーの管理サーバーの監視などなど
サーバーについて考えること!
そこで
Amazon API Gateway
+ AWS Lambda
※AWS の回し者でありません
基本的な作業手順
1. Lambda でラムダ関数を作成し ソースコードをアップロード2. API Gateway で API を作成し ラムダ関数に紐付ける
超かんたん!
AWS Lambda とはソースコードをアップロードすることで ソースコードの実行を代行してくれる コンピューティングサービス
AWS Lambda の特徴 (1)
• サーバー管理が不要• サーバーにログインしなくていい• 処理系とかをインストールしなくていい• ネットワークとかセキュリティの設定をしなくていい
AWS Lambda の特徴 (2)
• ほかの AWS サービスと連携できる• API Gateway と連携することでイベントドリブンな アプリケーションを実現できる• S3 と連携することで プログラムの実行結果を保存できる
• サポートされてるプログラミング言語• Java 8• Python 2.7• Node.js v0.10.36
AWS Lambda の設定 (1)
AWS Lambda の設定 (2)
AWS Lambda の設定 (3)
AWS Lambda の設定 (4)
AWS Lambda の設定 (5)
AWS Lambda の設定 (6)
AWS Lambda の設定 (7)
Amazon API Gateway とは
AWS Lambda を含む AWS サービスに対してREST API を作成することができるサービス
Amazon API Gateway の特徴• スケールアウトが容易に可能• Stages で本番環境や検証環境などのステージをつくれる• ステージごとに以下の設定が可能• キャッシュ ( 期限と容量を指定できる )• Cloud Watch(AWS のモニタリングサービス )• スロットリング (1 秒当たりの最大リクエスト数 )
Amazon API Gateway の設定 (1)
Amazon API Gateway の設定 (2)
Amazon API Gateway の設定 (3)
Amazon API Gateway の設定 (4)
Amazon API Gateway の設定 (5)
Amazon API Gateway の設定 (6)
Amazon API Gateway の設定 (7)
Amazon API Gateway の設定 (8)
Amazon API Gateway の設定 (9)
Amazon API Gateway の設定 (10)
Amazon API Gateway の設定 (11)
Amazon API Gateway の設定 (12)
Amazon API Gateway の設定 (13)
Amazon API Gateway の設定 (14)
ELB + EC2 -> API Gateway + Lambda
設定時に対する感想
API Gateway や Lambda でいいなーと思うことインフラの構成が超シンプル
設定が超らくGUI で設定できてわかりやすい
API Gateway や Lambda で直して欲しいなーと思うこと
ラムダ関数に何のファイルがアップロードされているのかGUI 画面からわからない (>_<)
Stages で Save Changes をクリックしても何も起こらないので設定が反映されているのかどうかわからなくて不安になる (>_<)
API Gateway
Lambda
機能面に対する感想
API Gateway や Lambda に向いていること
一個一個の処理は短時間だけどそれが大量にある処理( 自動でスケールアウトされるので )
API Gateway や Lambda に向いてないこと
長時間動かすバッチ( タイムアウトの設定が最大で 5 分なので )
ご清聴ありがとうございました
おまけ
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 から選択可能
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 秒当たりの最大リクエスト数