💨
AWS Amplify ConsoleでNext.jsのSSGが急に動かなくなったひとへ
TL;DR
Amplify ConsoleでNext.jsのSSGモードがSSR扱いでデプロイ失敗するときは
$ aws amplify update-app --app-id {app-id} --platform WEB
でplatformを明示的にWEB
指定するとよい。
概要
Amplify ConsoleでNext.jsのSSGモードでデプロイしていたフロントエンドが、ある日突然デプロイに失敗するようになったので調査しました。
問題の概要
デプロイフェーズにて以下のエラーが発生していました。
2022-08-25T06:23:19 [INFO]: Beginning deployment for application {app-id}, branch:develop, buildId {build-id}
2022-08-25T06:23:19 [INFO]: Cannot find any generated SSR resources to deploy. If you intend for your app to be SSR, please check your app Service Role permissions. Otherwise, please check out our docs on how to setup your app to be detected as SSG (https://docs.aws.amazon.com/amplify/latest/userguide/server-side-rendering-amplify.html#deploy-nextjs-app)
2022-08-25T06:23:19 [ERROR]: {"code":"7","message":"No ssrResources.json file"}
調査
いやおかしい。SSGモードのはず…
確認してみる
アプリの設定>全般>アプリケーションの詳細
から確認してもフレームワークはNext.js SSG
になっている
なのでモードの検知は合っていることになります。
解決へ向けて
類似のissueが見つかりました。
amplify-hosting/issues/2602
根本的な原因はわかりませんが
- 同様の事象が発生することがある
- cliでplatform設定を明示的に指定することで解決するかも
との様子です。
やってみる
現状の確認
% aws amplify get-app --app-id {app-id}
するとレスポンス内に"platform":"WEB_DYNAMIC"
という文字列がありました。
静的サイトなのでこれをWEB
に変更します
$ aws amplify update-app --app-id {app-id} --platform WEB
そして再度デプロイを行うと無事成功しました。
まとめ
再発するようなら(issueだと頻繁に起こっている人もいる様子)デプロイフローに組み込んでおく必要があるかもしれないですね。
Discussion