2

多くの類似の質問がここに掲載され、回答されていますが、私が経験しているものと全く同じものはありません。AWS Api Gateway + Lambda +カスタムドメイン(Route53)認証トークンの問題がありません

私は着信要求(GETとPOST)を処理するラムダ関数を持っています。私はまた、エンドポイントとして公開されているapiゲートウェイを設定しました。さらに、カスタムドメインを次のように設定しましたSet up Custom Domain Name for API Host Name

テストコールは、lambdaとapiゲートウェイコンソールの両方で機能します。すべては、呼び出しURLを使用して動作しますが、私が設定したカスタムドメインでは動作しません。

呼び出しURL(作品):

https://{api gateway id}.execute-api.us-west-2.amazonaws.com/prod/endpoint 

カスタムドメインendpint(動作しない):

https://api.{my domain}.com/endpoint 

ベース・パスマッピング:

はここにいくつかの詳細です

/endpoint endpoint:prod 

すべてMet HOD認証:

Authorization None 
API Key Not required 

Route53:

A record as alias that points api.{my domain}.com to the cloudfront distribution domain name as alias target. 

誰もがここに何が起こっているのかを知っているならば、私は本当に感謝します。

+0

'CloudFront-Distribution'を指す' Route53-Record-Set'も設定しましたか? – MaiKaY

+0

@MaiKaYはい。私はapi。{私のドメイン} .comのエイリアスとしてAレコードを持っています。エイリアスターゲットはCloudFrontの配布ドメイン名です – jlai

+1

'BasePath Mapping'を'/endpoint:prod'に変更する必要があると思います。または、既存の 'BasePath Mapping'を使って' https:// api。{my domain}にアクセスしてみてください。com/ – MaiKaY

答えて

2

私は、ベースパスのマッピングがどのように機能するか誤解していることがわかりました。

すべての構成は正しいです。

私のAPIのリソースではなくhttps://apiを訪れるの、カスタムドメインを使用するには下/しかし/エンドポイントの下

ではありません。{私のドメインは} .COM /エンドポイント、それはhttps://apiに行く必要があります。{私のドメイン} .com /エンドポイント/エンドポイント

もちろんこれは愚かで冗長です。

私には2つの選択肢があります。私は、/ endpointの代わりに/にbase path mappingを設定するか、/ endpointの代わりにAPI resource/userだけを使うことができます。

ベースパスマッピングが/に設定されていると、my api。{my domain} .comは1つのAPIのみをホストできるようになるため(同じAPIでリソースを使用することはできますが、余分な抽象レイヤーを無駄にするのか?)。

これはダンプのようですが、私はまだそれを理解してうれしいです。

+0

'/ endpoint'という名前のリソースを持つ'/endpoint'のベースパスがリソースがbase-path + resourceでアクセスされるため、リクエストは '/ endpoint/endpoint'へのリクエストを要求する以外の動作* other * –

+1

私は実際にlambdaのテンプレートを使ってapiゲートウェイを設定し、テンプレートは自動的にAPIのルートの代わりにAPIの名前の下に配置します。これは私が初めて使ったので、この動作が期待できませんでした。私は、リソースがAPIのルートのすぐ下に作成されることを予期していました。つまり、APIの名前はちょうどAPIの名前でなければならず、ルートはデフォルトでは最初のリソースに使用されます。 – jlai

+1

私はあなたが何を意味するかを見ます。 –

関連する問題