現在、awsのS3で静的ウェブサイトをcloudfrontを利用してホスティングしているが、特定のパス(/new/new)へのアクセスについては、CloudFrontのルーティングによりAPI Gatewayとcognitoで認証を行い、認証を必須とする設定を行いました。
実施したこと
1. amazon cognitoで今回利用するユーザープールを作成しリターンURLに今回飛ばしたいURL(https://xxxx/new/new)を設定
2. API Gatewayで現在対象urlで設定しているAPIを選択のうえタイプ:cognitoのオーソライザーの作成を行い、coginitoユーザープールで、1.で作成したユーザープールを選択
3. 2.で利用したAPIのpostメソッドのメソッドリクエストの認可に2.で作成したオーソライザーを選択
4. APIとアプリケーションのデプロイを行う
認証不要で画面が表示されてしまった・・・
上記の通り、認証を設定したにもかかわらずhttps://xxxx/new/newにアクセスすると普通に画面が表示されてしまった
原因はcloudfrontのビヘイビアの設定

現状の設定だと、アクセスパス /new/newは、現状の設定だと、アクセスパス /news/new は、優先度の高い dev/* には一致せず認証機能がないS3をオリジンとするデフォルトビヘイビア (*) にヒットするようになっていた。
今回/new/newはCognito認証ロジックを持つAPI Gatewayにルーティングされたいので、そちらにヒットするようにしなければならない。
解消方法

/new/newを、API Gatewayオリジンにルーティングする新しいビヘイビアを作成し優先順位をデフォルトより高くなるようにした(自動で優先度は設定された)。
まとめ
CloudFrontは、どのビヘイビアがリクエストに最初にマッチするかを優先順位とパスパターンで厳密に判断している。
よってまずはアクセスurlがどのビヘイビアにヒットしているかを確認しないといけない。