LoginSignup
1
0

More than 3 years have passed since last update.

CloudFrontにマルチオリジン設定するときに勘違いで詰まった話

Posted at

3行で分かる概要

  1. CloudFrontにS3とAPI Gatewayをマルチオリジンで設定して同じカスタムドメインにしようとした
  2. 無限にmissing authentication tokenで怒られた
  3. API Gatewayのリソース階層とCloudFrontのBehaviorのPath Patternが一致していないのが問題だった

本題

S3にフロントエンドのファイル群を置いて、CloudFrontを間に挟むよくある(?)形式
この際にページの一部コンテンツについては定期的に内容を更新したかったのでAPI経由で取るようにした
APIエンドポイントもWebページのカスタムドメインと同じドメインを使いたかったのでCloudFrontにマルチオリジン設定をして振り分けることにした
Untitled Diagram.png

この設定をしようとしてmissing authentication tokenが返されるという典型的なミスにハマり、原因が分からず1週間以上詰まったという話

原因

当初、API Gatewaのリソースは下記のようにルートの直下にAPIエンドポイントを生やし、それをprodステージにデプロイしていた
image.png

その状態でOriginとBehaviorの設定は下記にしていた
image.png

image.png

で、https://hogedomain/api/endpointにアクセスしてmissing authentication tokenで怒られた
OriginDoaminName/OriginPathがBehaviorのPath Patternまで含めたURLにマッピングされると勘違いして、API GatewayのURLhttps://XXXXX.amazonaws.com/prod/endpointが、https://hogedomain/api/endpointで呼び出されると思っていたのが原因

実際にはhttps://XXXXX.amazonaws.com/prod/https://hogedomain/にマッピングされるので上記ではアクセスできない

解決

API Gateway側のリソースにCloudFrontのPath Patternで設定したいパスを1階層掘ることで当初の意図通りhttps://hogedomain/api/endpointでAPI GatewayのURLが呼び出される
image.png

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0