2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS Lambda と ServerlessAdvent Calendar 2024

Day 10

【AWS】HTTP API vs REST API ECS FargateとAPI Gatewayの統合をする上での比較

Last updated at Posted at 2024-12-09

前提

プライベートサブネット内にECS Fargateでアプリケーションがホスティングされており、その前段にALB (Internal)が配置されている構成があるとします。

alb_fargate.drawio.png

普段はALBを通してVPC内のサービスからECSのアプリケーションへ疎通するようにしていますが、VPC外のリソースからアプリケーションに通信したいケースが出てきました。
その際、ALBの前段にAPI Gatewayを構築することにしたのですが、HTTP APIとREST API、どちらを採用するか、今回比較した上で検討してみたいと思います!

ECS Fargateとの統合

API Gatewayの統合機能を用いてECS Fargateと接続する場合、間にVPCリンクを挟む必要があります。
REST API, HTTP APIではVPCリンクの仕様が異なるため、Fargateと接続する際の構成も異なります。

HTTP API

HTTP APIで提供されるプライベート統合では、VPCリンク経由でALBに接続可能。

httpapi_fargate.drawio.png

REST API

REST APIにおいては、VPCリンクのターゲットとしてサポートされているのがNLBのみのため、VPCリンク -> NLB -> ALB(Internal) -> ECS といった構成となり、ALBの前段にNLBを挟む構成になります。

restapi_fargate.drawio.png

セキュリティ周り

WAF / WebACL

HTTP APIではWeb ACLをアタッチすることができない(2024/12現在)

HTTP APIを採用した上でWAFを利用したい場合は、前段にCloudFrontを置く構成にして、CloudFrontにWeb ACLをアタッチすると良いでしょう。

参考

Authorizer / Resource Policy

REST APIと同様, Cognito, IAM, Lambda関数を用いたAuthorizerの設定ができる。

しかしリソースポリシーは利用不可

例えばIP制限を行いたい場合、リソースポリシーの代わりに以下の手段を用いると良いでしょう。

  • 前段にCloudFrontを置く構成にして、WAFによるアクセス制限を行う
  • Lambda関数によるAuthorizerで送信元IPによるアクセス制御を行う

相互TLS認証

mTLSとはMutual Transport Layer Security (相互トランスポート層セキュリティ)の略称で、さらに、略して「相互TLS認証」と言います。クライアントとサーバーの両方が互いに証明書を利用して認証することで、セキュアに認証できる方式のことを指します。

REST API, HTTP APIともに相互TLS認証が利用可能です。

コスト面

東京リージョンでの料金

HTTP API

リクエスト数(月間) 料金
最初の 3 億 USD 1.29
3 億以上 USD 1.18

REST API

リクエスト数(月間) 料金
最初の 3 億 3,300 万 USD 4.25
次の 6 億 6,700 万 USD 3.53
次の 190 億 USD 3.00
200 億以上 USD 1.91

HTTP APIを用いる場合の方が基本的にコストが低い
また、VPC内のFargateと統合するという前提であれば、HTTP APIを採用すればNLBを配置するコストも削減できます。

VPC Linkの料金

REST APIとHTTP APIではVPC Linkの仕様も異なり、RESTの場合はVPCエンドポイント(Interface), HTTPの場合はENIがVPCリンクの実態となっております。

VPCエンドポイントは1時間あたり0.014 USDの料金と、データ処理で1GBあたり0.01 USDが発生しますが、ENI自体には料金が発生しません。

そのため、VPCリンクに関してもHTTP APIの方が安くつくということになります。

HTTP APIのVPCリンクは60日間トラフィックがないとENIが削除される仕様となっているので、留意しておく必要があります。

参考

まとめ

設定項目のシンプルさ・コスト効率の良さという観点ではHTTP APIを採用した方が良さそうに見えます。
また、HTTP APIのVPCリンクはREST APIと異なり、ALBもターゲットとして設定できるのでHTTP APIを採用することで余分にNLBを立てる必要もなくなるでしょう。

しかし、WAFのWeb ACLを直接アタッチできない, リソースポリシーによるアクセス制御に対応してないといった部分もあるので、要件によってはREST APIを選択した方が良い場合もあるでしょう。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?