背景・目的
API GatewayのREST APIには「エッジ最適化エンドポイントがある」と最近知りました。これまでリージョンサービスだと思い込んでいた認識をあらためました。そこで、エンドポイントタイプについて整理し、それぞれの特徴やメリットを理解した内容をまとめます。
まとめ
下記に特徴を整理します。
特徴 | 説明 |
---|---|
APIエンドポイントとは | 特定のリージョンにデプロイされるAPI GatewayのAPIホスト名を指す ホスト名の形式は {api-id}.execute-api.{region}.amazonaws.com 下記のエンドポイントタイプがサポートされる ・エッジ最適化 API エンドポイント ・プライベート API エンドポイント ・リージョン API エンドポイント |
エッジ最適化 API エンドポイント | ・リクエストを最寄りもCloudFront POPにルーティングする ・クライアントが地理的に分散されている場合に役立つ ・デフォルトのエンドポイントタイプ ・カスタムドメイン名はすべてのリージョンに適用される |
リージョン API エンドポイント | 同じリージョン内のクライアントを対象としている 例えば下記のような用途と考えられる。 ・同一リージョンのバックエンドサービス間通信 カスタムドメイン名はAPIがデプロイされているリージョン固有になる しかし、複数のリージョンでリージョン別 API をデプロイする場合、すべてのリージョンで同じカスタムドメイン名を使用できる カスタムドメインを Amazon Route 53 と組み合わせて使用すると、レイテンシーベースのルーティングなどのタスクを実行できる |
プライベート API エンドポイント | VPCからしかアクセスできないAPIエンドポイント すべてのヘッダー名をそのまま渡す |
概要
API エンドポイント
下記を基に整理します。
特定のリージョンにデプロイされる API Gateway の API のホスト名。ホスト名の形式は {api-id}.execute-api.{region}.amazonaws.comです。次のタイプの API エンドポイントがサポートされています。
- エッジ最適化 API エンドポイント
- プライベート API エンドポイント
- リージョン API エンドポイント
- 特定のリージョンにデプロイされるAPI GatewayのAPIホスト名を指す
- ホスト名の形式は
{api-id}.execute-api.{region}.amazonaws.com
- 下記のエンドポイントタイプがサポートされる
- エッジ最適化 API エンドポイント
- プライベート API エンドポイント
- リージョン API エンドポイント
API Gateway での REST API の API エンドポイントタイプ
下記を基に整理します。
API エンドポイントタイプは、API のホスト名を参照します。API エンドポイントタイプは、API トラフィックの大部分の発信元となっている場所に応じて、エッジ最適化、リージョン別、またはプライベートとすることができます。
- APIトラフィックの大部分の発信元となっている場所に応じて、下記のタイプに大別される
- エッジ最適化
- プライベート
- リージョン別
エッジ最適化 API エンドポイント
エッジ最適化 API エンドポイントは通常、リクエストを最寄りの CloudFront POP (Point of Presence) にルーティングします。これは、クライアントが地理的に分散されている場合に役立ちます。これは、API Gateway REST API のデフォルトのエンドポイントタイプです。
- リクエストを最寄りもCloudFront POPにルーティングする
- つまり、CloudFrontとリージョン間の通信をAWSのバックボーン回線を利用して通信できるのでレイテンシーが低いと思われる
- クライアントが地理的に分散されている場合に役立つ
- デフォルトのエンドポイントタイプ
エッジ最適化された API では、HTTP ヘッダーの名前の最初の文字は大文字になります (例: Cookie)。
- エッジ最適化では、HTTPヘッダーの名前の最初の文字は大文字
CloudFront は、リクエストをオリジンに転送する前に、Cookie 名の自然な順序で HTTP Cookie を並べ替えます。
エッジ最適化された API に使用するカスタムドメイン名はすべてのリージョンに適用されます。
- カスタムドメイン名はすべてのリージョンに適用される
リージョン API エンドポイント
リージョン API エンドポイントは、同じリージョン内のクライアントを対象としています。EC2 インスタンスで実行されているクライアントが同じリージョン内の API を呼び出すか、API が要求の高い少数のクライアントへのサービスを目的としている場合、リージョン API は接続のオーバーヘッドを減らします。
- 同じリージョン内のクライアントを対象としている
- つまり、下記の場合と思われる
- バックエンドサービス間通信
- 同一リージョンのLambdaから呼び出す
- バックエンドサービス間通信
- つまり、下記の場合と思われる
- 下記の場合、接続のオーバヘッドを減らす
- EC2インスタンスで実行されているクライアントが同一リージョン内のAPIを呼び出す
- API要求の高い少数クライアントのサービスを目的とする
リージョン API の場合、ユーザーが使用するカスタムドメイン名は API がデプロイされているリージョンに固有です。複数のリージョンでリージョン別 API をデプロイする場合、すべてのリージョンで同じカスタムドメイン名を使用できます。カスタムドメインを Amazon Route 53 と組み合わせて使用すると、レイテンシーベースのルーティングなどのタスクを実行できます。
- カスタムドメイン名はAPIがデプロイされているリージョン固有になる
- しかし、複数のリージョンでリージョン別 API をデプロイする場合、すべてのリージョンで同じカスタムドメイン名を使用できる
- カスタムドメインを Amazon Route 53 と組み合わせて使用すると、レイテンシーベースのルーティングなどのタスクを実行できる
リージョン別 API エンドポイントは、すべてのヘッダー名をそのまま渡します。
- すべてのヘッダー名をそのまま渡す
プライベート API エンドポイント
プライベート API エンドポイントは、Amazon Virtual Private Cloud (VPC) からしかアクセスできない API エンドポイントです。インターフェイス VPC エンドポイントは、VPC 内に作成するエンドポイントネットワークインターフェイス (ENI) です。詳細については、「API Gateway のプライベート REST API」を参照してください。
- VPCからしかアクセスできないAPIエンドポイント
Private API エンドポイントは、すべてのヘッダー名をそのまま渡します。
- すべてのヘッダー名をそのまま渡す
考察
今回、API GatewayのREST APIについて3つのエンドポイントタイプ(エッジ最適化、リージョン、プライベート)を整理しました。それぞれに適したユースケースがあることを理解し、特にデフォルトで提供されるエッジ最適化エンドポイントには、低レイテンシーなどのメリットがあると気付きました。
また、これまでAPI Gatewayを完全にリージョンサービスだと思い込んでいましたが、エッジ最適化エンドポイントを利用すれば、CloudFrontを介してグローバルなユーザーに最適化された通信を提供できそうな点が新たな発見でした。
参考