VPC から API Gateway API に接続するときに「HTTP 403 Forbidden」(HTTP 403 禁止) エラーが発生するのはなぜですか?

所要時間2分
0

仮想プライベートクラウド (VPC) から Amazon API Gateway API を呼び出していますが、「HTTP 403 Forbidden」(HTTP 403 禁止) エラーが発生します。なぜですか?

簡単な説明

この「HTTP 403 Forbidden」(HTTP 403 禁止) エラーは、VPC に関連付けられている API Gateway インターフェイス VPC エンドポイントでプライベート DNS が有効になっている場合に最もよく発生します。このシナリオでは、VPC から API Gateway API へのすべてのリクエストは、そのインターフェイス VPC エンドポイントに解決されます。ただし、VPC エンドポイントを使用してパブリック API に接続することはできません。

VPC エンドポイントのプライベート DNS 名の形式は *.execute-api.<REGION>.amazonaws.com です。この形式は、パブリックおよびプライベート API の API Gateway のデフォルトの呼び出し URL と一致します。例えば、パブリック API のデフォルトの呼び出し URL は https://abcd1234.execute-api.us-east-1.amazonaws.com です。ここで、abcd1234 は API ID、us-east-1 は API の AWS リージョンです。

VPC エンドポイントでプライベート DNS が有効になっている場合、API の呼び出し URL はプライベート DNS 名 *.execute-api.us-east-1.amazonaws.com でカバーされます。ここで、* は API ID のプレースホルダーです。DNS クエリが VPC 内からパブリック API に対して解決されると、解決された DNS は、パブリック API のパブリック IP ではなく、関連付けられた VPC エンドポイントのプライベート IP をポイントします。API コールは、インターネット経由でルーティングされるのではなく、VPC エンドポイントを介してパブリック API にルーティングされます。VPC エンドポイントはトラフィックをプライベート API にしかルーティングできないため、結果として HTTP 403 エラーが表示されます。

インターフェイス VPC エンドポイント用にプライベート DNS が有効になっていない場合、または VPC にエンドポイントがない場合は、「プライベート DNS が有効になっていないときにパブリック API に接続する」セクションに移動します。

解決方法

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

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

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

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

重要: パブリック API に接続しようとする VPC 内のリソースは、インターネット接続が必要です。また、リージョンのカスタムドメイン名の DNS レコードを設定する場合、A タイプのエイリアスレコードを使用する必要があります。ただし、エッジ最適化のカスタムドメイン名では、A タイプのエイリアスレコードまたは CNAME レコードを使用します。

プライベート DNS が有効になっていないときにパブリック API に接続する

インターフェイス VPC エンドポイントでプライベート DNS が有効になっていない場合、または Amazon Virtual Private Cloud (Amazon VPC) 設定にエンドポイントがない場合は、次の内容が当てはまることを確認します。

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

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

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

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

  1. Amazon VPC コンソールで、[Endpoints pane] (エンドポイントペイン) を開きます。
  2. インターフェイス VPC エンドポイントを選択します。
  3. [Actions] (アクション)、[Modify Private DNS names] (プライベート DNS 名を変更) の順に選択します。
  4. [Enable Private DNS Name] (プライベート DNS 名を有効化) で、[Enable for this endpoint] (このエンドポイント用に有効化) チェックボックスをオンまたはオフにします。
  5. [Modify Private DNS names] (プライベート DNS 名を変更) を選択します。

詳細については、「VPC の DNS 属性の表示と更新」を参照してください。


関連情報

Access an AWS service using an interface VPC endpoint (インターフェイス VPC エンドポイントを使用して AWS のサービスにアクセスする)

REST API のカスタムドメイン名を設定する

VPC の DNS 属性

コメントはありません

関連するコンテンツ