Skip to content

VPC から API ゲートウェイ API への接続時に HTTP 403 Forbidden エラーが発生する理由を知りたいです。

所要時間2分
0

仮想プライベートクラウド (VPC) から Amazon API Gateway API を呼び出すと、HTTP 403 Forbidden エラーが発生します。

簡単な説明

HTTP 403 Forbidden エラーは、VPC に関連付けられている API Gateway のインターフェイス VPC エンドポイントで DNS を有効にした場合に発生します。この場合、VPC から API Gateway API へのすべてのリクエストは、そのインターフェイス VPC エンドポイントで解決されます。ただし、VPC エンドポイントを使用してパブリック API に接続することはできません。

VPC エンドポイントのプライベート DNS 名は、*.execute-api.exampleRegion.amazonaws.com という形式です (文字 * は、API ID のプレースホルダーです)。この形式は、パブリック API とプライベート API の API Gateway のデフォルト呼び出し URL と一致します。

VPC エンドポイントのプライベート DNS が有効になっている場合、API の呼び出し URL はプライベート DNS 名でカバーされます。VPC 内からパブリック API の DNS クエリが解決されると、DNS は関連する VPC エンドポイントのプライベート IP を参照します。その後、API コールはインターネット経由ではなく VPC エンドポイント経由でパブリック API にルーティングされます。VPC エンドポイントはプライベート API にのみトラフィックをルーティングできるため、HTTP 403 エラーが発生します。

デフォルトの execute-api 呼び出し URL を使用して、AWS Direct Connect でオンプレミスから プライベート API に接続した場合も、403 エラーが発生します。

解決策

VPC に関連付けられているインターフェイス VPC エンドポイントでプライベート DNS が有効になっていることを確認する

VPC をチェックして、プライベート API にアクセスするためのインターフェイス VPC エンドポイントがあるかどうかを確認します。インターフェイスエンドポイントがある場合は、プライベート DNS 設定が有効になっているかどうかを確認します。詳細については、「VPC の DNS 属性」を参照してください。

プライベート DNS を有効にしてパブリック API に接続する

プライベート DNS が有効になっている場合は、エッジ最適化カスタムドメイン名またはリージョナルカスタムドメイン名を設定してパブリック API に接続します。

クライアントがオンプレミスネットワークから接続する場合は、Amazon Route 53 Resolver のインバウンドエンドポイントを設定します。execute-api 呼び出し URL を使用するには、すべてのプライベート DNS クエリをリモートネットワークからインバウンドエンドポイントに転送します。

重要: パブリック API への接続には、VPC リソースにインターネット接続が必要です。さらに、A タイプのエイリアスレコードを使用して、リージョナルカスタムドメイン名の DNS レコードを設定します。ただし、エッジ最適化カスタムドメイン名には、A タイプのエイリアスレコードまたは CNAME レコードを使用できます。

プライベート DNS が有効ではない場合にパブリック API に接続する

VPC にパブリック API へのアクセス許可がある場合は、パブリック DNS を使用してパブリック API に接続します。詳細については、「API Gateway の REST API へのアクセスを制御、管理する」を参照してください。

(オプション) インターフェイス VPC エンドポイントのプライベート DNS 設定を変更する

インターフェイス VPC エンドポイントのプライベート DNS 設定は、いつでも変更できます。この設定を変更すると、インターフェイス VPC エンドポイントのプライベート IP への API ステージ URL の解決が影響を受けます。

インターフェイス VPC エンドポイントのプライベート DNS 設定を変更するには、次の手順を実行します。

  1. Amazon VPC コンソールを開きます。
  2. [エンドポイント] ペインを開きます。
  3. インターフェイス VPC エンドポイントを選択します。
  4. [アクション] を選択し、[プライベート DNS 名の変更] を選択します。
  5. [プライベート DNS 名を有効にする] で、[このエンドポイントで有効にする] チェックボックスをオンまたはオフにします。
  6. [プライベート DNS 名の変更] を選択します。

注: プライベート DNS 設定を変更すると、ユーザーが VPC からプライベート APIパブリック API に接続する方法が影響を受けます。

詳細については、「VPC の DNS 属性を確認、更新する」を参照してください。

関連情報

インターフェイス VPC エンドポイントを使用して AWS サービスにアクセスする

API Gateway での REST API 用のカスタムドメイン名

コメントはありません

関連するコンテンツ