Amplifyのプラットフォーム値をWEB_DYNAMIC
からWEB_COMPUTE
に更新したらBasic認証が正常に働かない(正しい値を入力しても弾かれる)状態になりました。
いくつか検証して解消したようなので、得た仮説を備忘録としてまとめます。
もし同じような状況で困っている人がいたら、少しでもヒントになれば幸いです。
注意
あくまで仮説なのでご了承ください。
正しい情報知ってるよという方、教えてくださるとうれしいです!
結論(※仮説です)
Amplifyのプラットフォームの値を更新する際、アクセスコントロールの設定によってはBasic認証に影響が出る場合がありそうです。
注意したい設定
「グローバルパスワードの適用」がオンの状態でプラットフォーム値を更新すると、Basic認証が正常に働かないことがある。
おそらく大丈夫そうな設定
「グローバルパスワードの適用」はオフ(Basic認証をかけるために各ブランチに個別にユーザーネーム/パスワードを設定している状態)でプラットフォーム値を更新すると、特に問題はなさそう。
環境
Next.jsのバージョンを12から13に上げるためにはプラットフォームの値をウェブコンピューティング(WEB_COMPUTE
)にする必要があるとのことです。
もともとの設定がウェブ動的(WEB_DYNAMIC
)だったので更新しようとしたのがきかっけでした。
その時の設定(プラットフォーム更新する前)は下記の通り。
- フレームワーク
- Next.js - SSR
- (この時Next.jsのバージョンは12)
- プラットフォーム
- ウェブ動的(WEB_DYNAMIC)
- アクセスコントロール
- グローバルパスワードの適用オン
起こったこと
需要はないかもしれないが起こったことを時系列で
- 下記コマンドでAmplifyのプラットフォームを
WEB_DYNAMIC
->WEB_COMPUTE
に更新
aws amplify update-app --app-id <value> --platform WEB_COMPUTE --region <value>
- コンソールにてプラットフォームがウェブコンピューティングに更新されていることを確認
- 各ブランチを再デプロイ
- 再デプロイ完了後、各ブランチでBasic認証に正しいID/Passwordを入れても弾かれる🥲
- アクセスコントロールを見ると「グローバルパスワードの適用」がオフになっていた & 個別に設定されている状態🤔
→もともとは「グローバルパスワードの適用」はオンで個別の設定はしていなかった - 「グローバルパスワードの適用」を再度オンに
- 再度デプロイ
- 再デプロイ完了後、各ブランチの環境でまたしてもBasic認証が弾かれる😭
むむむ
- ここで一度プラットフォームを元のウェブ動的に戻してみる
aws amplify update-app --region <value> --app-id <value> --platform WEB_DYNAMIC
- コンソールにてプラットフォームがウェブ動的に更新されていることを確認
- 各ブランチを再デプロイ
- 再デプロイ完了後、各ブランチの環境で依然としてBasic認証が弾かれる😭
むむむ💦
- 「グローバルパスワードの適用」をオフにして各ブランチ個別にユーザーネーム/パスワードを設定
- 各ブランチを再デプロイ
- 再デプロイ完了後、各ブランチのBasic認証が正常に機能していることを確認(ひと安心)
グローバルパスワードの適用があかんのか?
ウェブコンピューティングへの更新は必要なのでもう一度試す。
- Amplifyのプラットフォームを
WEB_DYNAMIC
->WEB_COMPUTE
に更新(コマンドは上記と同じ) - コンソールにてプラットフォームがウェブコンピューティングに更新されていることを確認
- 各ブランチを再デプロイ
- 再デプロイ完了後、Basic認証が正常に機能していることを確認
- ..と思ったら、「ブランチの自動検出」に設定しているブランチでは依然としてBasic認証が弾かれる。mainなど手動で接続したブランチのみBasic認証を突破できる。
なんだこれ🤔
-
そしてしばらくすると(数時間?)、先ほどまでBasic認証を突破できていたブランチでもBasic認証が弾かれるように😭
-なんかもう嫌になる -
もう一度プラットフォームを元のウェブ動的に戻してみる(コマンドは上記と同じ)
-
コンソールにてプラットフォームがウェブ動的に更新されていることを確認
-
各ブランチを再デプロイ
-
再デプロイ完了後、各ブランチのBasic認証が正常に機能していることを確認(ひと安心)
仕切り直す
グローバルパスワードの適用をオフにしてユーザーネーム/パスワードは個別に設定した状態でもう一度ウェブコンピューティングにしてみよう..
- Amplifyのプラットフォームを
WEB_DYNAMIC
->WEB_COMPUTE
に更新(コマンドは上記と同じ) - コンソールにてプラットフォームがウェブコンピューティングに更新されていることを確認
- 再デプロイ完了後、「ブランチの自動検出」に設定しているブランチも含め全てのブランチでBasic認証が正常に機能していることを確認(ガッツポーズ)
つらつらと書きましたが、プラットフォームを更新する際はもとのアクセスコントロールの「グローバルパスワードの適用」の設定によりBasic認証の挙動が変わってしまうらしいという推測をしています。
その他
Basic認証が弾かれる場合はcloudfrontが関わってたりもするような記事も見かけたので、今後またおかしなことになったら試してみようと思います。
参考