全般

Q: Amazon API Gateway とは何ですか?

Amazon API Gateway は、デベロッパーがあらゆる規模で API の公開、保守、モニタリング、セキュリティ保護を簡単に行えるフルマネージドサービスです。AWS マネジメントコンソールで数回クリックするだけで、Amazon Elastic Compute Cloud (Amazon EC2)、Amazon Elastic Container Service (Amazon ECS)、AWS Elastic Beanstalk で稼働中のアプリケーション、AWS Lambda で稼働中のコード、または任意のウェブアプリケーションといった、お客様のバックエンドサービスのデータやビジネスロジック、および機能にアクセスする、アプリケーションの "正面玄関" となる API を作成できます。Amazon API Gateway では、最大数十万の同時 API 呼び出しを受け付け、処理することが可能です。これにはトラフィック管理、認証とアクセス管理、モニタリング、API バージョン管理が含まれます。Amazon API Gateway に最低料金や初期費用は発生しません。HTTP API および REST API に関しては、受信した API コール数と、転送データ量に対してのみ料金が発生します。WebSocket API に関しては、送受信されたメッセージと、ユーザーデバイスの WebSocket API への接続時間に対してのみ料金が発生します。

Q: Amazon API Gateway を使うメリットは何ですか?

Amazon API Gateway はシンプルかつ柔軟な全面的に管理された従量制のサービスで、アプリケーションのバックエンド用の堅牢な API の作成と運用に関するすべての側面を扱います。API Gateway を使用すれば、より少ない投資で、いっそうスピーディーに新しいサービスを立ち上げることができるので、中核となるビジネスサービスの構築に集中できます。API Gateway は、API を作成し、管理するための次のような側面をサポートするように構築されています。

1) 計測。API Gateway により、API へのサードパーティデベロッパーのアクセスを計測および制限するプランを定義できます。API キーごとにプランセットを定義し、スロットリングとクォータ制限を設定できます。API Gateway では、自動的に API へのトラフィックが計測され、各 API キーの使用率データを抽出できます。

2) セキュリティ。API Gateway には、お客様の API に対するアクセスを認証し、サービスを操作するアクセスを管理する、複数のツールが準備されています。API Gateway では、AWS Identity and Access Management (IAM)、Amazon Cognito といった AWS の管理ツールやセキュリティツールを使用して、API に対するアクセス認証を実施できます。API Gateway では、AWS が自身の API に使用しているのと同じ方法を使用して、お客様に代わって署名付き API コールを検証できます。また、API Gateway では、AWS Lambda の機能として記述されたカスタムオーソライザーを使用して、受信するベアラートークンを検証することもでき、バックエンドコードでの認証に関する懸念を解消できます。

3) 回復性。API Gateway はスロットリングによってトラフィックを管理できるので、バックエンド動作はトラフィックの激増に耐えられます。また、API Gateway は API コールに対する出力をキャッシュし、バックエンドシステムへの不要な呼び出しを避けることによって、お客様の API のパフォーマンスとエンドユーザーエクスペリエンスの向上に貢献します。

4) 動作のモニタリング。API が公開され、使用状態になると、API Gateway ではメトリクスを表示するダッシュボードによって、サービスの呼び出しをモニタリングできます。API Gateway ダッシュボードでは、Amazon CloudWatch との統合によって、API 呼び出し、レイテンシーデータ、エラー率といったバックエンドのパフォーマンスメトリクスを確認できます。お客様の API の各メソッドについてより詳細なメトリクスを取得できるようにすることや、エラーログ、アクセスログ、デバッグログを CloudWatch Logs に記録させることも可能です。

5) ライフサイクル管理。API を公開した後には、機能の強化や追加を実施した新しいバージョンを構築し、テストすることがしばしば必要となります。API Gateway では、複数のバージョンの API、および各バージョンのさまざまなステージのものを同時に動作させることができるため、新しい API バージョンの公開後にも既存アプリケーションに引き続き以前のバージョンを使用させることが可能です。

6) デベロッパー向けの設計。API Gateway では、API をすばやく作成し、静的なコンテンツをレスポンスとして割り当てることができるため、アプリケーションのためのクロスチームによる開発の労力や販売までの時間を少なくすることができます。バックエンドプロセスがまだ構築中であるときに、お客様の API に依存するチームが開発を開始することも可能です。

7) リアルタイム双方向通信。 チャットアプリ、ストリーミングダッシュボード、通知といったリアルタイム双方向通信アプリケーションを構築します。サーバーの起動や管理にわずらわされることもなくなります。API Gateway は接続されたユーザー間の永続的な接続を維持し、メッセージの転送ができます。

Q: Amazon API Gateway でサポートされるのはどのタイプの API ですか?

Amazon API Gateway では、WebSocket API を作成するオプションに加えて、RESTful API を作成する 2 つのオプション (HTTP API および REST API) を提供します。

HTTP API: HTTP API は、AWS Lambda 関数または HTTP バックエンドにプロキシする API を構築するために最適化されており、サーバーレスワークロードに最適です。現在 API 管理機能は提供されていません。

REST API: REST API は、単一のソリューションで API プロキシの機能と管理機能を提供します。 REST API は、利用プラン、API キー、API の公開と収益化などの API 管理機能を提供します。

WebSocket API: WebSocket API は接続クライアントとのあいだに永続的な接続を維持して、メッセージ送受信をリアルタイムで可能にします。API Gateway の WebSocket API を使用すれば、接続したクライアントからのメッセージを受信した際に呼び出される AWS Lambda 関数、Amazon Kinesis、または任意の HTTP エンドポイントとのバックエンドでの連携を定義することができます。

Q: API Gateway の HTTP API の使用を開始するにはどのようにすればよいですか?

HTTP API の使用を開始するには、Amazon API Gateway コンソール、AWS CLI、AWS SDK、または AWS CloudFormation を利用できます。HTTP API の開始方法の詳細については、ドキュメントを参照してください。

Q: API Gateway の REST API の使用を開始するにはどのようにすればよいですか?

REST API の使用を開始するには、Amazon API Gateway コンソール、AWS CLI、または AWS SDK を利用できます。REST API の開始方法の詳細については、ドキュメントを参照してください。

Q: RESTful API を作成するときに、HTTP API および REST API を使用すべきなのはそれぞれどういう場合ですか?

Amazon API Gateway では HTTP API と REST API の両方を使用して RESTful API を作成できます。

HTTP API は、AWS Lambda 関数または HTTP バックエンドにプロキシする API を構築するために最適化されており、サーバーレスワークロードに最適です。HTTP API は REST API に比べて安価で高速な代替手段ですが、現在 API 管理機能をサポートしていません。REST API は、単一のソリューションで API プロキシ機能と API 管理機能を必要とする API が対象になります。

HTTP API は次のような場合に適しています。

  1. AWS Lambda または HTTP エンドポイント用のプロキシ API を構築する
  2. OIDC および OAuth2 の認証を備えた最新の API を構築する 
  3. 非常に大規模になる可能性があるワークロード
  4. レイテンシーに敏感なワークロード用の API
 
REST API は次のような場合に適しています。
 
  1. API の構築、管理、公開に必要なすべての機能が含まれているセットに対して単一価格の支払いを希望されるお客様。 

Q: API Gateway の HTTP API の標準機能はどれですか?

HTTP API では、CORS サポート、認証および許可での OIDC と OAuth2 のサポート、および段階的な自動デプロイが標準で提供されます。

Q: OpenAPI 定義をインポートして HTTP API を作成できますか?

はい。OpenAPI 3 を使用して API 定義をインポートできます。これにより、ルート、統合、および API モデルが作成されます。OpenAPI 定義のインポートについて詳しくは、ドキュメントをご覧ください。

Q: 現在使用している REST API から HTTP API にどのようにして移行できますか?

Amazon API Gateway で現行の REST API から HTTP API に移行するには、次のようにします。

  1. 必要な機能がすべて HTTP で利用できることを確認します。完全な機能のリストを確認するには、ドキュメントをご覧ください。 
  2. 対象の REST API に移動し、REST API から OpenAPI 定義をエクスポートします
  3. 対象の HTTP API に移動し、前のステップで取得した OpenAPI 定義をインポートします
  4. API の機能が想定通りであることをテストします
  5. クライアントを新しい URL で更新します

API は動作する場合もありますが、欠落している機能に気が付く場合もあります。欠落している機能がないか確認するために、インポート操作の InfoWarning、および Error の各フィールドを確認してください。REST API の HTTP API への移行の詳細については、ドキュメントをご覧ください。

Q: 現在使用している REST API が HTTP API として動作するかどうか、どうすれば分かりますか?

最初に、対象の REST に移動し、REST API から OpenAPI 定義をエクスポートします。次に、対象の HTTP API に移動し、前のステップで取得した OpenAPI 定義をインポートします。API は動作する場合もありますが、欠落している機能に気が付く場合もあります。欠落している機能がないか確認するために、インポート操作の InfoWarning、および Error の各フィールドを確認してください。AWS CLI は API に関する情報を情報フィールドと警告フィールドに返します。詳細については、ドキュメントをご覧ください。

Q: Amazon API Gateway の WebSocket API の使用を開始するにはどのようにすればよいですか?

使用を開始するには、AWS マネジメントコンソール、AWS CLI または AWS SDK を使用して WebSocket API を作成します。それから WebSocket のルーティングを設定し、AWS Lambda、 Amazon Kinesis、 HTTP エンドポイントなどのバックエンドサービスがメッセージの内容に基づいて呼び出されるように指定できます。API Gateway の WebSocket API の使用を開始するには、ドキュメントを参照してください。

Q: HTTPS エンドポイントを作成できますか?

はい。Amazon API Gateway で作成された API はすべて、HTTPS エンドポイントのみ公開します。Amazon API Gateway は非暗号化 (HTTP) エンドポイントをサポートしません。デフォルトでは、自動的に Amazon API Gateweay 証明書を使用する API に対して、Amazon API Gateway によって内部ドメインが割り当てられます。お客様の API をカスタムドメイン名で動作するよう設定する場合、そのドメイン用にお客様自身の証明書を指定できます。

Q: Amazon API Gateway ではどのようなデータタイプを使用できますか ?

Amazon API Gateway で構築される API は、HTTP API、REST API、および WebSocket API 向けの HTTPS を介して送られるどのようなペイロードも受け入れ可能です。代表的なデータフォーマットには JSON、XML、クエリ文字列パラメータ、リクエストヘッダーなどがあります。お客様の API に対するレスポンスとしてあらゆるコンテンツタイプを宣言することが可能です。さらに、変換テンプレートによってバックエンドからのレスポンスを必要なフォーマットに変換できます。

Q: Amazon API Gateway はどのようなバックエンドと通信できますか?

Amazon API Gateway では、アカウントで AWS Lambda 関数を実行したり、AWS Step Functions ステートマシンを起動できるほか、AWS Elastic Beanstalk や Amazon EC2 上でホストされる HTTP エンドポイントや、パブリックインターネット経由でアクセスできる非 AWS でホストされている HTTP ベースのオペレーションを呼び出すことができます。また、Gateway では、マッピングテンプレートを指定して、返る静的コンテンツを生成することもできるため、バックエンドの準備が整う前に API をモックすることができます。API Gateway を AWS の他のサービスに直接統合することもできます。例えば、データを Amazon Kinesis に直接送信する API メソッドを API Gateway で表示できます。

Q: Amazon API Gateway はどのようなクライアントプラットフォーム用の SDK を生成できますか?

API Gateway では、Android および iOS (Swift と Objective-C) を使用したモバイルアプリケーション開発向けのカスタム SDK や、JavaScript を使用したウェブアプリケーション開発向けのカスタム SDK を生成できます。また、Ruby や Java 向けの SDK も生成できます。API とそのモデルが API Gateway で定義されると、AWS コンソールや API Gateway の API を使用して、クライアント SDK の生成とダウンロードを実行できます。Client SDK は Amazon API Gateway の REST API に対してのみ生成されます。

Q: Amazon API Gateway は、どの AWS リージョンで利用できますか?

HTTP API、REST API、WebSocket API がどこで利用できるか確認するには、こちらで AWS リージョンのテーブルをご覧ください。

Q: Amazon API Gateway コンソールではどのような管理が実行できますか?

Amazon API Gateway コンソールによって、REST API およびそれに関連付けられたリソースとメソッドを定義し、API のライフサイクルを管理し、クライアント SDK を生成し、API メトリクスを参照することができます。また、API Gateway コンソールを使用して、API の利用プランを定義し、デベロッパーの API キーを管理し、そしてスロットリングとクォータ制限を設定できます。同様のアクションはすべて、API Gateway API を介しても実行できます。

Q: リソースとは何ですか?

リソースとは、お客様の API のドメインの一部である、型付きオブジェクトです。各リソースには関連するデータモデル、他のリソースへの関連があり、異なる方法に応答できます。リソースを変数として定義して、複数の子リソースへのリクエストをインターセプトすることもできます。

Q: メソッドとは何ですか?

REST API 内部の各リソースは、1 つ以上の標準 HTTP メソッドをサポートできます。それぞれのリソースに対してサポートされることが必要な動詞 (GET、POST、PUT、PATCH、DELETE、HEAD、OPTIONS) と、その実装を定義します。たとえば、cars リソースに対する GET は車のリストを返すはずです。リソース内のすべてのメソッドをバックエンドの単一のエンドポイントに関連付けるには、API Gateway が特別な "ANY" メソッドもサポートしている必要があります。

Q: 使用量プランとは何ですか?

使用量プランにより、サードパーティーデベロッパーのプランを宣言することで、アクセスを特定の API に制限し、スロットリングとリクエストクォータ制限を定義して、API キーに関連付けることができます。また、API キーごとに使用率のデータを抽出して API の使用状況を分析したり、請求用のドキュメントを生成することもできます。使用量プランとして、ベーシック、プロフェッショナル、エンタープライズなどを作成できます。たとえば、最大値を 1 日あたり 1,000 件のリクエストと毎秒 5 件のリクエスト (RPS) に設定したベーシックな使用量プランなどを作成できます。

Q: Amazon API Gateway API のライフサイクルとは何ですか?

Amazon API Gateway では、それぞれの REST API に複数のステージを持たせることができます。ステージは、API の開発ライフサイクルを助けることを意図したものです。例えば、API を構築してから開発ステージにデプロイすることや、製品版としての準備ができたときに本番ステージにデプロイすることができます。

Q: ステージとは何ですか?

Amazon API Gateway のステージは、タグに似ています。ステージは、デプロイ環境からアクセス可能なパス経路を定義します。例えば、開発ステージを定義し、お客様の cars API をそこにデプロイできます。このリソースは、https://www.myapi.com/dev/cars でアクセスできるようになります。カスタムドメイン名を設定してステージを直接指示すれば、パスパラメータの追加を不要にすることも可能です。例えば、myapi.com を直接開発ステージに指定した場合、cars リソースには https://www.myapi.com/cars でアクセスできます。ステージは、API コンフィギュレーションまたはマッピングテンプレートからアクセスできる変数を使って設定できます。

Q: ステージ変数とは何ですか?

ステージ変数を使うと、ステージに関連した設定値のキー/値ペアを定義できます。この値は環境変数に似ており、ユーザーの API コンフィギュレーションで使用できます。例えば、ステージ変数としてメソッド統合の HTTP エンドポイントを定義し、エンドポイントをハードコーディングする代わりにその変数を API コンフィギュレーションで使用することができます。こうすると、同じ API コンフィギュレーションを使って各ステージ (dev、beta、prod など) に異なるエンドポイントが使用できるようになります。ステージ変数はマッピングテンプレートでもアクセスでき、これを使用して設定パラメータをお客様の Lambda または HTTP バックエンドに渡すことができます。

Q: リソースポリシーとは何ですか?

リソースポリシーは、指定されたプリンシパル (通常、IAM ユーザーまたはロール) による API 呼び出しを可能にするかどうかを制御するために、ユーザーが API にアタッチする JSON ポリシードキュメントです。リソースポリシーを使用すると、異なる AWS アカウントのユーザーからの API への安全なアクセスを有効にすることや、指定されたソース IP アドレス範囲または CIDR ブロックのみから API を呼び出せるようにすることが可能になります。リソースポリシーは Amazon API Gateway の REST API で使用できます。

Q: デプロイするステージを間違えた場合どうなりますか?

Amazon API Gateway には、デプロイの履歴が保存されます。どの時点でも、Amazon API Gateway の API またはコンソールを使用することで、ステージを以前のデプロイにロールバックさせられます。

Q: 自作の Swagger API 定義を使用できますか?

はい。オープンソースの Swagger インポートツール を使用すれば、自作の Swagger API 定義を Amazon API Gateway にインポートできます。Swagger importer tool では、新規の API のデプロイおよび既存の API の更新を実行できます。

Q: API Gateway の自分の API を収益化するにはどうすればよいですか?

API Gateway の自分の API を収益化するには、AWS Marketplace に製品として公開します。まず AWS Marketplace に出品者として登録する必要があります。その後、API Gateway の使用量プランを製品として提出します。API の収益化の詳細については、「こちらを参照してください」。

Q: Amazon API Gateway の自分の API はどのようにドキュメント化すればよいですか?

API Gateway では、メソッドやリソースといった API の各部分に関連付けられたドキュメントの作成、更新、削除を実行できます。ドキュメントに関連付けられた API には、AWS SDK、CLI、RESTful コール経由、または API Gateway コンソールでドキュメント文字列を直接編集することによりアクセスできます。ドキュメントを Swagger ファイルとしてインポートすることも可能です。API の一部としても、個別にもインポートできるため、API の定義に影響を与えずにドキュメントを更新できます。API Gateway は、Swagger ファイルからインポートされた、または Swagger ファイルにエクスポートされたドキュメントのオープン API 仕様に準拠しています。ドキュメントは API ゲートウェイの REST API に向けてサポートされています。

Q: 自分の API で頻繁に発生するエラーメッセージやその他のドキュメントの冗長コピーの作成を避けるにはどうすればよいですか?

API Gateway では、規格に準拠した API ドキュメントがサポートされているほか、ドキュメントの継承もサポートされているため、ドキュメントの文字列を定義してから、複数の場所で使用することが簡単になります。継承によって API ドキュメントの定義プロセスは簡単になり、Swagger ファイルとして API をエクスポートする場合には標準の表現形式に変換できます。

Q: 特定の Amazon VPC や VPC エンドポイントに対するプライベート API へのアクセスを制限できますか?

はい。リソースポリシーを API に適用して、特定の Amazon VPC や Amazon VPC エンドポイントへのアクセスを制限できます。また、リソースポリシーを使用して、異なるアカウントの Amazon VPC や VPC エンドポイントに、プライベート API へのアクセス権を付与することもできます。

セキュリティと認証

Q: API へのアクセスを認証するにはどうすればよいですか?

Amazon API Gateway では、認証を要求する API メソッドを設定することもできます。認証を要求するメソッドを設定する場合、AWS Signature Version 4 または Lambda オーソライザーを活用して、お客様独自のベアラートークン認証戦略をサポートできます。

Q: AWS Signature Version 4 はどのように機能しますか?

AWS 認証情報 (アクセスおよびシークレットキー) を使用して、AWS の他のサービスと同様に、お客様のサービスへのリクエストに署名し、アクセスを認証できます。Amazon API Gateway の API リクエストの署名は、そのサービス用に生成されたカスタム API Gateway SDK によって管理されます。Amazon Cognito を使用して、お客様の AWS アカウント内のロールに関連付けられた一時的な認証情報を取得できます。

Q: Lambda オーソライザーとは何ですか?

Lambda オーソライザーは AWS Lambda の機能です。カスタムリクエストオーソライザーを使うと、OAuth などのベアラートークン認証戦略を使用して、API へのアクセスを認証できるようになります。API が呼び出されると、API Gateway では、Lambda オーソライザーが構成されているかどうかがチェックされた後、受信する認証トークンを使って Lambda の機能が呼び出されます。Lambda を使用すると、リクエスト認証に使用する IAM ポリシーを返すさまざまな認証戦略 (JWT の検証、OAuth のプロバイダー呼び出しなど) を実装できます。オーソライザーから返されたポリシーが有効なら、受信するトークンに関連付けられたポリシーが API Gateway から最大で 1 時間キャッシュされます。

Q: Amazon API Gateway はサードパーティデベロッパーに配布するための API キーを生成できますか?

はい。API Gateway では、API キーを生成し、使用量プランに関連付けることができます。各 API キーから受信した呼び出しは監視され、各ステージに対して設定できる Amazon CloudWatch Logs に含められます。ただし、API キーを認証に使用することは推奨しません。API キーは、サードパーティーデベロッパーによる使用を監視し、署名付き API 呼び出しや OAuth といったより強固なメカニズムを活用するために使用してください。

Q: API に対する脅威や悪用への対応や防止はどうすればよいですか?

API Gateway は、お客様の API 内のメソッドごとやルートごとのスロットリングをサポートしています。1 秒間当たりの標準速度制限とバースト速度制限を、それぞれの REST API と WebSocket API のルートに設定できます。さらに、API Gateway は、偽装リクエスト (Layer 7) によるものでも SYN フラッド (Layer 3) によるものでも、分散型サービス拒否 (DDoS) 攻撃から自動的にお客様のバックエンドシステムを保護します。

Q: API Gateway がバックエンドを呼び出していると確認できますか?

はい。Amazon API Gateway では、クライアント側 SSL 証明書の生成や、使用できる証明書のパブリックキーの作成を行うことができます。バックエンドへの呼び出しは、生成された証明書を使用して行うことができます。また、その証明書のパブリックキーを使用して Amazon API Gateway による呼び出しであることを検証することができます。

Q: AWS CloudTrail を Amazon API Gateway と共用できますか?

はい。Amazon API Gateway は AWS CloudTrail と統合され、お客様の REST API について全面的に監査可能な変更履歴を提供します。REST API の作成、変更、削除またはデプロイを行う Amazon API Gateway の API に対する API 呼び出しは、すべてお客様の AWS アカウント内の CloudTrail にログが記録されます。

Q: Amazon API Gateway は Amazon Virtual Private Cloud (Amazon VPC) とどのように連携しますか?

Amazon API Gateway では、VPC リンクを使用してプライベート統合を設定することで、Amazon VPC で実行されているバックエンドの HTTP/HTTPS リソースにリクエストを中継できます。Amazon API Gateway のクライアント側 SSL 証明書は、バックエンドシステムへのリクエストが、その証明書のパブリックキーを使用して API Gateway によって送信されたことを検証するために使用できます。また、プライベート API を Amazon API Gateway に作成して、Amazon VPC エンドポイント経由で自分の Amazon VPC 内のリソースからのみアクセス可能にすることもできます。

Q: 特定の Amazon VPC や VPC エンドポイントに対するプライベート API へのアクセスを制限できますか?

はい。リソースポリシーを API に適用して、特定の Amazon VPC や Amazon VPC エンドポイントへのアクセスを制限できます。また、リソースポリシーを使用して、異なるアカウントの Amazon VPC や VPC エンドポイントに、プライベート API へのアクセス権を付与することもできます。

Q: TLS 1.1 以降を使用するために API Gateway で自分の REST API を設定することはできますか?

REST API を使用している場合、お客様のアカウントでカスタム SSL 証明書を使用して CloudFront ディストリビューションを設定し、API Gateway のリージョン API で使用することができます。セキュリティとコンプライアンスの要件に基づいて、TLS 1.1 以降の CloudFront ディストリビューションにセキュリティポリシーを設定できます。

管理、メトリクス、ログ記録

Q: Amazon API Gateway の API はどのようにして監視できますか?

Amazon API Gateway は API 呼び出し、レイテンシー、エラー率をお客様の AWS アカウント内の Amazon CloudWatch に記録します。メトリクスは、REST API ダッシュボード内の Amazon API Gateway コンソールでも利用できます。また、API Gateway ではサードパーティーデベロッパーの使用を計測し、そのデータを API Gateway コンソールと API を介して利用可能です。

Q: Amazon API Gateway メトリクスに対してアラームを設定できますか?

設定できます。Amazon API Gateway はログ情報とメトリクスを Amazon CloudWatch に送ります。Amazon CloudWatch コンソールを使用して、カスタムアラームを設定できます。

Q: Amazon API Gateway のメトリクスはどのようにして設定できますか?

デフォルトでは、Amazon API Gateway は REST API レベルのトラフィックを監視します。オプションとして、デプロイ構成 API またはコンソール画面から、REST API 内の各メソッドに対して詳細なメトリクスを有効にできます。詳細なメトリクスは Amazon CloudWatch にもログが記録され、CloudWatch のレートで料金が発生します。

Q: 私の顧客が使用している API のバージョンを判別できますか?

はい。メトリクスの詳細は REST API とステージによって指定されます。さらに、お客様の REST API 内の各メソッドに対するメトリクスを有効にすることができます。

Q: Amazon API Gateway ではロギングがサポートされていますか?

はい。Amazon API Gateway は Amazon CloudWatch Logs と統合されています。お客様の API 内の各ステージにロギングを有効にすることも可能です。お客様の REST API 内の各メソッドについて、ログの詳細度と、リクエストとレスポンスのデータ全体を記録するかどうかを設定できます。

Q: ログはいつ参照可能になりますか?

ログ、アラーム、エラー率およびその他のメトリクスは Amazon CloudWatch に保存され、リアルタイムに近い状態で利用できます。

スロットリングとキャッシュ

Q: どのようにバックエンドシステムとアプリケーションをトラフィックの激増から守ることができますか?

Amazon API Gateway には、グローバルレベルやサービス呼び出しレベルなど、複数のレベルのスロットリングが準備されています。スロットリング制限は、標準レート時とバースト時に設定できます。例えば、API の所有者は、自分の REST API 内の特定のメソッドに 1 秒間当たり 1,000 リクエストのレート制限を設定し、数秒の間、毎秒 2,000 回のバーストリクエストにも対応できるよう Amazon API Gateway を設定できます。Amazon API Gateway は、1 秒間当たりのリクエスト数を追跡します。上限を超えたリクエストには、429 HTTP レスポンスが返されます。 Amazon API Gateway (Javascript を除く) によって生成されたクライアント SDK では、このレスポンスが返されると自動的に呼び出しのリトライを行います。

Q: API を呼び出している個々のデベロッパーをスロットリングできますか?

はい。使用量プランで、個々の API キーのスロットリング制限を設定できます。

Q: スロットリングはどのように役立ちますか?

スロットリングは、バックエンドサービスがパフォーマンスと可用性を維持できるよう、API トラフィックが確実に制御されるようにします。

Q: Amazon API Gateway の受信 API トラフィックに対するスロットリングはどのレベルで実行されますか?

スロットリングレート制限はメソッドレベルで設定できます。お客様のメソッドに設定されるスロットリング制限は、Amazon API Gateway API または Amazon API Gateway コンソールを介して編集できます。

Q: スロットリングルールはどのように適用されますか?

API Gateway のスロットリング関連の設定は、次の順序で適用されます。1) 使用プランの API ステージに設定した各クライアントのメソッドごとのスロットリング制限、2) 使用プランで設定したクライアントごとのスロットリング制限、3) API ステージ設定で指定したデフォルトのメソッドごとの制限と個々のメソッドごとの制限、4) リージョンごとのアカウントレベルの調整。

Q: Amazon API Gateway には API の結果のキャッシュ機能がありますか?

はい。API 呼び出しのキャッシュは、API Gateway キャッシュをプロビジョニングし、キャッシュサイズをギガバイト単位で指定することで追加できます。キャッシュは、お客様の API の特定のステージに対してプロビジョニングされます。これにより、パフォーマンスは向上し、バックエンドに送られるトラフィックは減少します。キャッシュ設定では、キャッシュキーの構築方法と、各メソッドに対して格納されるデータの有効期限 (TTL) を制御できます。API Gateway では、各ステージのキャッシュの無効化を助ける管理用 API も公開されています。キャッシュは API Gateway の REST API で利用可能です。

Q: 大量のユーザーが同時に私の API を呼び出した場合はどうなりますか?

キャッシュが有効にされておらず、スロットリング制限も適用されていない場合は、アカウントレベルのスロットリング制限に達するまですべてのリクエストがバックエンドサービスに送られます。スロットリング制限が設定されている場合、Amazon API Gateway は必要な量のみリクエストを減らし、定義された上限数までをバックエンドサービスに送ります。キャッシュが設定されている場合 (およびスロットリング制限が設定されている場合のみ)、カスタマイズ可能な時間、重複しているリクエストに対してはキャッシュされたレスポンスが Amazon API Gateway によって返されます。バックエンドとクライアントとの間のこのバランスは、バックエンドによってサポートされるアプリケーション用 API のパフォーマンスを最適なものにします。スロットリングされたリクエストは、Amazon API Gateway によって生成されたクライアントサイド SDK によって自動的にリトライされます。デフォルトでは、お客様の API メソッドに対するキャッシュは Amazon API Gateway によって設定されていません。

Q: API はどのようにスケールされますか?

Amazon API Gateway は、設定されたバックエンド動作に対し、プロキシとして振る舞います。Amazon API Gateway は、お客様の API が受信するトラフィック量を処理できるよう、自動的にスケールされます。Amazon API Gateway によってバックエンド動作の呼び出しに対し独断的な制限やスロットリングが行われることはありません。Amazon API Gateway コンソールで設定されたスロットリングとキャッシュによってインターセプトされるリクエストを除き、リクエストはすべてバックエンドの動作に送られます。

請求

Q: Amazon API Gateway の使用料金はどのように請求されますか?

Amazon API Gateway は、100 万回の API 呼び出しにつき、データ転送にかかるコストがギガバイト単位で加算されます。API のキャッシュをプロビジョニングすることを選択した場合は、時間別の料金が適用されます。API Gateway は WebSocket API に対しては、送受信されるメッセージとクライアントが API に接続している時間 (分) に基づいて請求します。API コール、データ転送、および地域ごとのキャッシングコストの詳細については、API Gateway 価格設定ページをご覧ください。

Q: サードパーティデベロッパーによって行われた Amazon API Gateway の API 呼び出しの料金は誰が支払うのですか?

API Gateway にある API の呼び出しについては、API の所有者に課金されます。

Q: API レスポンスがキャッシュされたデータから提供された場合でも API 呼び出しとして課金されますか?

はい。API 呼び出しは、レスポンスがバックエンド動作により発生したものであっても、Amazon API Gateway のキャッシュ動作によるものであっても、等しく計数され、課金されます。

WebSocket API

Q: Amazon API Gateway の WebSocket ルーティングとは何ですか?

Amazon API Gateway の WebSocket ルーティングは、メッセージを特定の統合に正しくルーティングするために使用されます。自分の WebSocket API を定義する時に呼び出すルーティングキーと統合バックエンドを特定します。ルーティングキーはメッセージの本文中にあります。ルーティングキーが一致しなくてもデフォルトの統合が設定できます。ルーティングの詳細は、こちらのドキュメントをご覧ください。

Q: 接続しているクライアントにバックエンドサービスからメッセージを送信するにはどうすればよいですか?

新しいクライアントが WebSocket API に接続すると、コールバック URL という固有の URL が新しいクライアント用に作成されます。このコールバック URL を使用して、バックエンドサービスからクライアントにメッセージを送信することができます。

Q:  Amazon API Gateway にある自分の WebSocket API へのアクセスを承認するにはどうすればよいですか?

Amazon API Gateway では、IAM ロールと IAM ポリシー、または AWS Lambda Authorizers のいずれかを使用して WebSocket API へのアクセスを承認できます。

クライアントが Amazon API Gateway の WebSocket 接続から接続しているとき、または切断しているときがバックエンドサービスにはどのようにしてわかるのですか?

クライアントが接続または切断すると、 $ connect および $ disconnect ルートを使用して Amazon API Gateway サービスからバックエンド AWS Lambda 関数または HTTP エンドポイントにメッセージが送信されます。接続しているユーザーのリストに対してクライアントを追加または削除するなどの適切な処置を取ることができます。

Q: バックエンドサービスはクライアントが WebSocket 接続にまだ接続しているかどうかをどのように判別できますか?

接続時にコールバック URL の GET メソッドを使用して、クライアントが WebSocket 接続に接続されているかどうかを判別できます。コールバック URL の使用に関しては本文を参照して下さい。

Q: バックエンドサービスからクライアントとの接続を切断できますか?

はい、コールバック URL を使用して、接続されたクライアントをバックエンドサービスから切断することができます。

Q: WebSocket APIでサポートされるメッセージの最大サイズはどのくらいですか?

サポートされるメッセージの最大サイズは 128 KB です。WebSocket API に関するその他の制限についてはドキュメントを参照してください。

Q: Amazon API Gateway の WebSocket API の使用料金はどのように請求されますか?

接続時間(分)とメッセージの2つのメトリクスに基づいて請求されます。

接続時間 (分):クライアントまたはデバイスが WebSocket 接続に接続する総時間(分単位)。

メッセージ:送信メッセージ数と、接続しているクライアントからの受信メッセージ数。メッセージは 32KB 単位で請求されます。WebSocket API の料金の詳細と例については料金ページを参照してください。

Q: WebSocket 接続でメッセージが認証や承認されなかった場合でも、私の API 使用料金にカウントされますか?

いいえ、WebSocket 接続でメッセージが認証や承認されなかった場合は、API 使用料金にカウントされません。

Amazon API Gateway の詳細

料金ページを見る
始める準備はできましたか?
サインアップ
ご不明な点がおありですか?
お問い合わせ