2016-10-12 3 views
0

私は私の実際の展開APIのためのリバースプロキシとして設定AWSアピゲートウェイにしようとしています。 私の理解では、私は「プロキシ」のリソースを作成し、私のHTTPエンドポイントURLを指定することでこれを行うことである - ここ Create and Test an API with HTTP Proxy Integration through a Proxy ResourceAWS APIゲートウェイ - テストが機能し、デプロイされたAPIエラーが発生します。どうして?

説明したように、私は中に「テスト」機能を通じてAPIを使用しようとすると、これが正常に動作しますリソースエディタ。私はGETメソッドを使って公開されたリソースを呼び出し、成功したレスポンスを見ることができます。

しかし、私はAPIゲートウェイAPIを展開するとき、私はもはやそれは私を与える「起動URL」を使用して何かをアクセスすることはできません - 私は単に取得:

{ 
    "Message": "No HTTP resource was found that matches the request URI 'http://<myuniqueid>.execute-api.eu-west-1.amazonaws.com/api/Sector/100'.", 
    "MessageDetail": "No type was found that matches the controller named 'Sector'." 
    } 

私は「使用HTTPプロキシの統合」を削除した場合チェックボックスを「統合リクエスト」から取得できますが、なぜプロキシとして機能しないのですか?

+0

あなたはより多くの詳細を与えるだろうか? (両方の場合の生のリクエスト/応答のように)あなたが提供したエラーメッセージはAPIゲートウェイではないので、プロキシリソースタイプを使用しているときに、エンドポイントが無効な応答を返すことに問題があるようです。プロキシリソースを使用しているときに余分なヘッダーが送信される可能性があります。 –

答えて

1

私は、これはHTTPプロキシ統合の既知の問題によって引き起こされていると思われます。 HTTPプロキシ統合を使用する場合、API GatewayはすべてのヘッダーをHOSTヘッダーを含む統合エンドポイントに渡します。多くの既存のHTTPエンドポイントは、ゲートウェイがエンドポイントを混乱させることがAPIのHOSTヘッダを通過し、そのDNS名と一致HOSTヘッダのとこのような場合に使用する必要があります。

UPDATE:私たちは、この問題に対する回避策を確認しました。

統合要求では、「Host」という名前のヘッダーを明示的に追加し、統合エンドポイントのDNS名の値を指定します。これにより、着信クライアント要求から転送されたHostヘッダーが、指定したHostヘッダーに置き換えられます。これにより、バックエンドエンドポイントが正しく機能するようになります。

+0

ありがとう@MikeD。これはまさに私たちが経験していた問題でした。 –

関連する問題