2016-11-21 15 views
0

これはコード関連のものよりも技術的な質問です。 api-gatewayのアプリをで使用しています。これは、api-gatewayの最小変更でexpressjsアプリを移植することができます。しかし、APIGはapi-idを使用してapiを展開するたびにあなたのためにURLを生成するため、クライアントには向いていません。そこで私はcloudfrontディストリビューションをAPIGのURLに向けて設定しました。aws apigatewayクラウドフロントexpressjsアプリは常にapi-gateway URLを表示します

しかし、私がアプリケーションを実行すると、ブラウザーに表示されるURLはクラウドフロントによって生成されたものではありません(私はそのURLを使ってアプリケーションにアクセスしますが)。

カスタムドメイン名を設定するオプションがAPIG内にあり、いくつかの調査を行った後、APIGはバックグラウンドでCloudfront Distributionを設定しますが、私はDNSサービスを設定していないためこの特定のロール/地域の設定をawsで変更する権限がない場合、APIGのオプションでカスタムURLが設定されていないという問題があるのだろうか?

+0

DNSで、APIゲートウェイのURLを指すCNAMEレコードを設定しようとしましたか? – barudo

+0

Yeap、現在セットアップされているものです。 – hyprstack

+0

ええええええええええええええええええええええええええええええええええええええええええ... – barudo

答えて

1

ブラウザのアドレスバーに正しいURLを入力してEnterキーを押すと、このページが表示されます。サーバーがリダイレクトステータスコード(301,302,307など)を送信すると、ブラウザのアドレスバーのURLが変わることがあります。

これをデバッグするには、ブラウザでWebインスペクタを開き、[ネットワーク]タブを選択してHTTPリクエストに従います。リダイレクトステータスが表示された場合は、ヘッダーを調べて、送信したシステムを確認します。

EDIT:HTTP経由でCloudFrontにアクセスする場合、APIゲートウェイは301をHTTPSにリダイレクトします。これはここで問題と思われる。もう1つの答えで指摘されているように、CloudFrontにHTTPSだけでAPIゲートウェイにアクセスさせると、その問題が修正されます。

+0

リダイレクトを行っている場合は、バックグラウンドで処理していて、変更したくないものです。 実際には、リクエストが最初にクラウドフロントに送信され、ロケーションヘッダーがapigateway URLに設定されていると、リダイレクトステータス(301)があります。 chrome:// net-internalsツール、特にDNSタブを見ると、クラウドフロントURL用のDNSサービスとapigateway用のURLのDNSサービスが表示されます。これは、私が別のDNSサービスを呼び出すDNSサービスを持っていることを示唆していますか? – hyprstack

+0

301をお持ちの場合、DNSは問題ではありません。 DNSは電話帳のようなものです。名前(www.example.comなど)を知っている場合、ブラウザはDNSを使用してそのサービスのIP番号を検索します。ブラウザはその番号に接続します(「呼び出し」)。そして、301は基本的に相手方のサーバー(「人」)で、他の人に電話するように指示します。したがって、最初の接続がCloudFrontに行く場合は、301を送信している場所からトレースする必要があります。CloudFrontとAPI Gatewayが定期的に301を他のサービスに送信しないため、あなたのexpressアプリケーションは見るべき良い候補です。アプリを無効にしてそのことを証明してください。) – Digitalkapitaen

+0

説明と可能な解決策を投稿する時間をとってくれてありがとう。しかし、それは以下の私の答えで説明されているような問題だったDNS構成でした。 – hyprstack

2

ここで別の答えが見つかったSO question

クラウドフロントでは基本的にいくつかの設定を変更する必要がありました。

CloudFront配布の「ビューアプロトコルポリシー」が「HTTPからHTTPSへのリダイレクト」または「HTTPSのみ」のいずれかに設定されていることを確認し、「オリジナルプロトコルポリシー」を「HTTPSのみ」に設定しました。

それは私にとって問題を解決するようでした。

0

APIゲートウェイのエンドポイントでCFディストリビューションを設定しないことをお勧めします。 API GatewayにはすでにCFディストリビューションが含まれています。ドメイン名と証明書を既にお持ちの場合は、「カスタムドメイン名」機能を使用して直接APIゲートウェイに簡単にインポートできます。http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-custom-domains.html

+0

クラウドフロントを回避策の前に置く理由は、apigatewayが証明書マネージャーをサポートしていないことです。クラウドフロントと同じように、管理することが1つ少なくなります。また、静的なコンテンツとapi(example.com/api)を同じURLに持つことができ、CORSに対処する必要もありません。 これは、IAM認証を使用していない公開Webサイトでのみ有効です。 – Atifm

関連する問題