web-dev-qa-db-ja.com

AWS APIGatewayのカスタムドメイン名を理解する

AWS APIGatewayカスタムドメインがどのように機能するかを理解するのに苦労しています。

Regional Custom Domain NameのようにAPIにapi.example.comを設定しました。結果は、次の形式のTarget Domain Nameになります。

aaaaaaaaaaaa.execute-api.us-east-1.amazonaws.com

次のように、このリンクを使用してAPIを呼び出そうとした場合:

https://aaaaaaaaaaaa.execute-api.us-east-1.amazonaws.com/mymap/mystage/example

しかし、私は403 Forbiddenを取得します。

しかし、Stagesに移動してmystageを選択すると、次の形式の大きな青いInvoke URLがあります。

https://bbbbbbbbbb.execute-api.us-east-1.amazonaws.com/mymap/mystage/example

どちらが機能しますか?

だからここに私の最初の2つの質問が来ます:

1-APIGatewayが同じAPIに対して2つの異なるURL(Target Domain NameInvoke URL)を生成するのはなぜですか?

2-Invoke URLが機能し、Target Domain Nameが機能しないのはなぜですか?


これが私の質問の2番目の部分です。Route 53構成用にRegional Custom Domain Nameを構成しようとしていますが、それを行う正しい方法についての例が見つかりません(Edge Optimized Custom Domain Nameの場合のみ)。 )。

api.example.comAレコードをAliasからaaaaaaaaaaaa.execute-api.us-east-1.amazonaws.comとして作成しようとしましたが、次のように表示されます。

次の理由により、レコードセットを保存できませんでした。-エイリアスターゲットに無効な値が含まれています。

そこで、api.example.comCNAMEレコードを作成し、AliasNoに設定しました(Yesとして設定すると、と同じエラーメッセージが表示されます。 A record case)と値はaaaaaaaaaaaa.execute-api.us-east-1.amazonaws.comですが、APIを404として呼び出そうとすると、https://api.example.com/mymap/mystage/exampleが返されます。

私は何が間違っているのですか?


編集:

このスレッドはAWSフォーラムに移動されました ここ


編集2:

どうやら、AWSサポート担当者が言ったように、APIGatewayがカスタムドメイン名と通常のAPIGateway URLを処理する方法に矛盾があり、すべてがこのAWSフォーラムスレッドで文書化されています ここ

10
mFeinstein

API Gatewayで何が起こっているのかを理解したい場合は、 このスレッド を参照してください。

基本的に、API Gatewayは通常のURL(aaaaaaaaaaaa.execute-api.us-east-1.amazonaws.comなど)をカスタムドメイン名URL(api.myservice.comなど)を処理する方法とは異なる方法で処理することを示しています。そのため、API GatewayがAPIリクエストをLambda関数に転送すると、APIの呼び出しに使用したURLのタイプに応じて、Lambda関数は異なるpath値を受け取ります。

私の場合、 serverless Java container を使用しているので、AWSLambdaでJerseyWebサービスを実行できます。URLが両方のURLで同じように渡されていないため、 、Jerseyは、設定が正しくないURLを受信すると、404を返します。

AWS API Gatewayチームは、このURL呼び出しを統一することを検討していると述べましたが、これまでのところ妥協はありません(2018年1月)。

私の質問のRoute53の部分は、Jackによって回答されており、追加するものは何もありません。

4
mFeinstein

Route53コンソールは、ALIASターゲットとしてAPIGatewayをまだサポートしていません。 CLI/SDKを使用してALIASレコードを作成し(またはR53 APIを直接ヒットし)、次のページにリストされているターゲットホストゾーンを提供する必要があります: http://docs.aws.Amazon.com/ general/latest/gr/rande.html#apigateway_region

API Gatewayが同じAPIに対して2つの異なるURL(ターゲットドメイン名と呼び出しURL)を生成するのはなぜですか?

Invoke URLは、有効なSSL証明書で常に使用できるデフォルトのエンドポイントです。このエンドポイントはAPIゲートウェイによって管理されます。ターゲットドメイン名はオプションであり(カスタムドメイン名を設定する必要があります)、DNSおよびSSL証明書はあなた/顧客によって管理されます。

ありがとう、ジャック

4
Jack Kohn - AWS