0
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?

API GatewayのREST APIエンドポイントタイプを整理してみた

Posted at

背景・目的

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を介してグローバルなユーザーに最適化された通信を提供できそうな点が新たな発見でした。

参考

0
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
0
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?