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 Name
とInvoke URL
)を生成するのはなぜですか?
2-Invoke URL
が機能し、Target Domain Name
が機能しないのはなぜですか?
これが私の質問の2番目の部分です。Route 53
構成用にRegional Custom Domain Name
を構成しようとしていますが、それを行う正しい方法についての例が見つかりません(Edge Optimized Custom Domain Name
の場合のみ)。 )。
api.example.com
のA
レコードをAlias
からaaaaaaaaaaaa.execute-api.us-east-1.amazonaws.com
として作成しようとしましたが、次のように表示されます。
次の理由により、レコードセットを保存できませんでした。-エイリアスターゲットに無効な値が含まれています。
そこで、api.example.com
のCNAME
レコードを作成し、Alias
をNo
に設定しました(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フォーラムスレッドで文書化されています ここ
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によって回答されており、追加するものは何もありません。
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証明書はあなた/顧客によって管理されます。
ありがとう、ジャック