新規プロジェクトにて、バックエンドにAWS Amplifyを使うことにした。
Gitリポジトリと連携して、開発ブランチに変更があるたびにAWS側でビルドするように設定したが、いくつかの原因でビルドに失敗したのでメモ。
環境
Amplify CLI v8.0.1。インストールは yarn global add @aws-amplify/cli
にて実施。
問題1
Next.jsによるフロントエンドアプリケーションのGitリポジトリをAmplifyのフロントエンドとして連携させ、指定したブランチに変更があればビルドおよびデプロイするよう設定した。
対象のブランチに変更があると、Amplifyのビルドは実行されるが、 Cannot find file './aws-exports' in ./src
エラーにより、ビルドが失敗する。
問題1の対応
amplify init
でAmplifyの初期設定を行ったが、その場合 src/aws-exports.js
が .gitignore
に指定されるため、Gitリポジトリには含まれないのが原因。
対応はこちらに記載あり。
- Amplify Consoleを開く
- Frontend environments タブにて、「継続的なデプロイの設定 (編集)」から、「フルスタックの継続的デプロイ (CI/CD) を有効化」のチェックを外して保存
- アプリの設定 > 全般 > 編集より、サービスロールに
AdministratorAccess-Amplify
を持ったロールを指定して保存- 自分の場合、「amplifyconsole-backend-role」が設定済みだった
問題2
前述の設定で解消するかと思ったが、ビルドエラーが解消せず。
問題2の対応
Amplifyのバージョンが、開発に使用しているものとAWS上のビルドに使用されるものとで差異があったのが原因の模様。
アプリの設定 > ビルドの設定 > Build image settings の Edit にて変更可能。 Amplify CLI
のバージョンにはデフォルトで latest
が指定されていたが、開発に使用しているバージョン( amplify --version
で表示されるもの)を明示的に指定したところ、ビルドが通るようになった。
その他にも、Node.js や Next.js のバージョンなどを指定可能。2022/4/29 時点で、LTSのv16ではなくv14が指定されているため、指定しておいた。
振り返り
Amplify、生産性の高さがすごい。
ただ、発展途上なためか、ちょこちょこハマる時があり、そうなったときの情報が少なかったり、出てきても古かったりするのが難点。