web-dev-qa-db-ja.com

Application Load BalancerとAPI Gateway

AWSにはApplication Load Balancerというサービスが付属しており、ラムダ関数のトリガーになる可能性があります。このようなラムダ関数を呼び出す方法は、HTTP/HTTPS要求をALBに送信することです。

今私の質問は、これがAPI Gatewayを使用することとどのように違うのですか?また、API Gateway(またはその逆)でALBを使用する必要があるのはいつですか?

8
Mehran

ALBを使用する代わりにラムダ関数の前でAPIゲートウェイを使用する最大の理由の1つは、API GWが備えているネイティブIAM(IDおよびアクセス管理)統合です。 ID作業を自分で行う必要はありません。すべてIAMに委任されています。さらに、API GWにはクエリ文字列パラメーターとヘッダーの検証を含む組み込みのリクエスト検証があります。簡単に言うと、API GWに付属しているすぐに使える統合が非常に多いため、ALBを使用するルートに進むと、さらに多くの作業を行う必要があります。

5
Chris D'Englere

それは長い議論です。 APIゲートウェイでALBを使用する必要がある場合。ラムダで両方のサービスを使用することの詳細な違いについては、この記事を参照してください。

https://serverless-training.com/articles/api-gateway-vs-application-load-balancer-technical-details/

1
matesio

ALBを使用するとリクエスト/レスポンスの制限が低くなり、WebSocketはサポートされないようです:

Lambda関数に送信できるリクエスト本文の最大サイズは1 MBです。関連するサイズ制限については、HTTPヘッダーの制限をご覧ください。

Lambda関数が送信できる応答JSONの最大サイズは1 MBです。

WebSocketsはサポートされていません。アップグレードリクエストはHTTP 400コードで拒否されます。

参照: https://docs.aws.Amazon.com/elasticloadbalancing/latest/application/lambda-functions.html

API Gatewayのペイロード制限については、こちらで説明しています: AWS API Gatewayでのペイロード制限の要求

また、@ matesioがすでに言及している記事には、ALBとAPI Gatewayのどちらを選択するかを検討する際の追加事項に関する情報が記載されています。

上記の記事で言及されている注目のツイート:

APIを構築していて、AuthN/Z、リクエストの検証、レート制限、SDK生成、直接AWSサービスバックエンドを利用する場合は、#APIGatewayを使用します。 ALBの背後にある既存のWebアプリにLambdaを追加する場合は、必要なルートに追加するだけです。

(From:Dougal Ballantyne、Amazon API Gatewayの製品責任者)

1
TommyN