API GatewayのバックエンドとしてはLambdaが王道ではあるが、他のサービスと連携させたいときに何が選べて、どうすれば実現できるのかいまいち不明だったので軽く調べてみた。

 

特にECSと直接連携できるのか気になった。間にALBまたはサービスディスカバリ(ECSの機能)を挟む必要があるらしい。あとこの場合RESTではなくHTTP APIになる模様。それともどっちでもいける? あといずれのパターンでも、GatewayがVPC内のリソースにアクセスするためにVPCリンクを作成する必要がある。

 

チュートリアル: Amazon ECS サービスへのプライベート統合を使用した HTTP API の構築 ※間にALBを挟む例 ECSをAPI Gatewayと組み合わせる ※サービスディスカバリ事例
API Gateway 統合を使用して Fargate で実行されているマイクロサービスを呼び出す ※Step Functions使用例

 

以下は若干古い記事なので現在の仕様と異なる可能性あり。つまり過去は制約があってこの構成になったが、今なら先のリンクのような別のソリューションがある。一応参考までに貼っておく。

API Gateway経由でのみアクセス可能なAPIをECSで構築する
API GatewayとAPIサーバの連携

 

これも貼っておく。REST APIの事例も欲しい。

API Gateway の HTTP API が 5つのAWSサービスとの統合をサポート

 

(追記)
ECSとの統合例として、以下記事はREST/HTTP両方のパターンを比較できる。REST APIでもECS統合はできるがALBに加えてNLBも挟むなど複雑化する。そういえばこの構成で途中までPoCした記憶もうっすらあるのだが、リソース間の依存関係が複雑でものすごくわかりにくかった(VPCリンクとNLBが曲者)
【AWS】HTTP API vs REST API ECS FargateとAPI Gatewayの統合をする上での比較

 

ついでにAPI Gateway + ALB統合の事例も貼っておく。API GatewayからALBのパターンはあり。逆は多分ない。(ALBのターゲットグループでターゲットに指定可能なのはIP, EC2, Lambda。転送先としてならURLの指定可能)

API Gateway REST API を Application Load Balancer と統合する方法を教えてください。
ExternalのApplication Load Balancer(ALB)をAPIGateway+InternalのALBに置き換えてみた ※HTTP APIの事例
ALB(Application Load Balancer)とAmazon API Gatewayの違い

 

Sakura


関連がありそうな記事