3分で理解するAmazon API GatewayとAWS Lambda


Amazon API Gateway

APIの作成、アプリケーションの通信の窓口。
いわゆるエンドポイントを作成する。
AWSのマネジメントコンソールから作成する。実処理は書かない。
認証機能も搭載、環境を分けてデプロイ、スケーリングしてくれる。

AWS Lambda

コードの実行をおこなうサービス。
Lambda関数と呼ばれる関数を作成して、処理を書く。
AWSのマネジメントコンソールで直接書くこともできるが、基本的にはコードをアップロードする。
処理さえ書けばよくて、サーバ管理、スケーリング、ログ記録1もやってくれる。

上の2つを組み合わせると何ができるの?

APIが5分で作れる。
フレームワーク探してー、APIアプリケーション探してー、EC2にデプロイしてー、
スケーリング考えてーとか一切いらない。
アプリ開発者で、サーバ側全然わかんないけどAPIとか作りたいんだよ!っていう人に向いている。

お高いんでしょ?

安心してください。従量課金です。

なんでみんな使わないの??

俺が聞きたい。
けど、以下のような理由なんじゃないかな。

  1. 比較的新しいサービスで、まだ導入実績が少ない
  2. 大規模アクセスがあり、性能にシビアなシステムには向いていない。2

2017/03/14 実際に使用して気付いたことを加筆
3. API Gatewayのタイムアウトは30秒固定で変更できない。よって、処理に時間のかかるLambda(バッチ)をキックするとかには向いていない。
そういうLambdaは、AWS CLIから呼び出す。(か、後にAWS Batch から呼べるようになるはず)
4. AWS Lambdaを動作させられる最大時間は5分。5分過ぎると処理が中断する。これを考慮して作成するのが中々大変。


  1. ログは、CloudWatchLogsに出力される。コード内で明示的にログ出力することも可能。 

  2. Lambdaは自動でスケーリングしてくれるけど、最初からスケーリングしておくことができない。あくまでアクセスが多量になってきたら、スケーリングされるので、そのときにレスポンスが落ちる。