API Gateway の HTTP 統合で VPC 内のリソースにアクセスできないときの対処方法

2023.12.18

困っていた内容

Amazon API Gateway を使用して REST API を構築中です。 HTTP 統合タイプのエンドポイント URL として EC2 のプライベート IP アドレスを指定しました。

テストリクエストを行うと{"message": "Internal server error"}が発生します。 正常に VPC にリクエストを流すにはどうしたら良いでしょうか。

なお、実行ログには次のエラーが記録されていました。

Execution failed due to configuration error: Invalid endpoint address

どう対応すればいいの?

統合タイプとして「プライベート統合」を検討してください。

API Gateway プライベート統合の設定 - Amazon API Gateway

API Gateway のプライベートな統合により、VPC 内にある HTTP/HTTPS リソースを VPC 外のクライアントがアクセスできるように簡単に公開できます。プライベート VPC リソースへのアクセスを VPC 境界を超えて拡張するために、プライベート統合で API を作成できます。

HTTP 統合タイプのバックエンドはパブリックに到達可能な必要があり、パブリック IP アドレスを持たない EC2 等のプライベートリソースには接続できません。

VPC 内のプライベートなリソースをバックエンドとして指定する場合、VPC 内に構築した NLB 経由でアクセスするプライベート統合(VPC リンク)をご検討ください。

また、EC2 にパブリック IP アドレスを付与するなど、バックエンドをパブリックに到達可能な構成に変更することも選択肢となります。パブリックな構成に変更する場合は、必要に応じて IP アドレス制限等もご検討ください。

参考資料

サービス IP アドレス範囲のサブセット。API_GATEWAY にリストされているアドレスは送信専用です。

…(中略)…

有効な値: AMAZON | AMAZON_APPFLOW | AMAZON_CONNECT | API_GATEWAY