Amplify CLIのバージョンが最新に更新されない問題の解決方法

2022/10/28
2020/11/16

はじめに

AWSのAmplifyを使う時、バージョンが更新されず一部の新機能が使えずに苦労したので、その解決までの手順を共有します。

環境

$ node -v
v12.12.0
 
$ npm -v
6.14.8
 
$ amplify -v
1.7.6 → 今回はこれをバージョンアップしたかった

解決前に発生していた問題

私の解決前のAmplify CLIのバージョンは 1.7.6 でした。(最後に触ったのが1、2年前でした。。)

2020年11月時点での最新バージョンは 4.32.1 で、amplify import auth などの新しい機能も増えていたのでひとまずバージョンアップしようとしたのですが、最新バージョンが反映されませんでした。

$ amplify -v
,1.7.6 → アップデート前のバージョン,
 
$ npm install -g @aws-amplify/cli → 公式に従ってAmplify CLIのnpmインストール
 
npm WARN deprecated @graphql-toolkit/common@0.6.6: GraphQL Toolkit is deprecated and merged into GraphQL Tools, so it will no longer get updates. Use GraphQL Tools instead to stay up-to-date! Check out https://www.graphql-tools.com/docs/migration-from-toolkit for migration and https://the-guild.dev/blog/graphql-tools-v6 for new changes.
npm WARN deprecated @graphql-toolkit/common@0.9.7: GraphQL Toolkit is deprecated and merged into GraphQL Tools, so it will no longer get updates. Use GraphQL Tools instead to stay up-to-date! Check out https://www.graphql-tools.com/docs/migration-from-toolkit for migration and https://the-guild.dev/blog/graphql-tools-v6 for new changes.
npm WARN deprecated core-js@2.6.11: core-js@<3 is no longer maintained and not recommended for usage due to the number of issues. Please, upgrade your dependencies to the actual version of core-js@3.
npm WARN deprecated request-promise@4.2.6: request-promise has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
/usr/local/bin/amplify -> /usr/local/lib/node_modules/@aws-amplify/cli/bin/amplify
 
> @aws-amplify/cli@4.32.1 postinstall /usr/local/lib/node_modules/@aws-amplify/cli
> node scripts/post-install.js
 
----------------------------------------
Successfully installed the Amplify CLI
----------------------------------------
 
JavaScript Getting Started - https://docs.amplify.aws/start
Android Getting Started - https://docs.amplify.aws/start/q/integration/android
iOS Getting Started - https://docs.amplify.aws/start/q/integration/ios
 
Amplify CLI collects anonymized usage data, which is used to help understand
how to improve the product. If you don't wish to send anonymized Amplify CLI
usage data to AWS, run amplify configure --usage-data-off  to opt-out.
 
Learn more - https://docs.amplify.aws/cli/reference/usage-data
 
+ @aws-amplify/cli@4.32.1
updated 17 packages in 38.441s
 
$ amplify -v
,1.7.6 → インストールが成功していそうだがバージョンは変わらず

コンソールでの出力を見る限りではインストールは成功しているのですが、CLIのバージョンは古いままで新しいコマンドも実行することができませんした。

解決までに試したこと

1. sudoアップデート

私の事象では、permission errorが発生していたわけではないのですが、sudo をつけてAmplify CLIのインストールを実行してみました。

sudo, npm install -g @aws-amplify/cli

コンソール出力はsudoをつけないnpm installと同じでした。この時点ではまだバージョンは反映されていません。

2. sudo権限でバージョン確認

次にsudo権限でAmplify CLIのバージョンを確認してみました。

$ amplify -v
Initializing new Amplify CLI version...
Done initializing new version.
Scanning for plugins...
Plugin scan successful
4.32.1
 
$ amplify -v
1.7.6

このタイミングで最新バージョンが反映されたような出力が確認できました。ただしsudo権限での実行時のみ最新バージョンになっており、問題は解決していません。

3. –unsafe-perm=true をつけてnpm install(たぶん核心)

sudoでのみ最新バージョンが反映されていることが気になり、以下コマンドを実行しました。

sudo npm install -g @aws-amplify/cli ,–unsafe-perm=true

–unsafe-perm とはパッケージスクリプトの実行時に UserID/GroupID を切り替えるかどうかを制御する引数です。sudoで実行するときはデフォルトでfalseになるので、明示的にtrueを指定してインストールしてあげます。

ちなみにこの時点でもamplify CLIのバージョンは変わっていません。

$ amplify -v
1.7.6
 
$ sudo amplify -v
4.32.1

4. PCを再起動(このタイミングで解決)

手を尽くした感があったので、試しに再起動してみました。このタイミングでやっとAmplify CLIのバージョンが最新に反映されました!

$ amplify -v
4.32.1
┌──────────────────────────────────────────────────────────────┐
│           @aws-amplify/cli update check failed               │
│            Try running with sudo or get access               │
│           to the local update config store via               │
│ sudo chown -R $USER:$(id -gn $USER) /Users/ユーザ名/.config    │
└──────────────────────────────────────────────────────────────┘
 
$ sudo chown -R $USER:$(id -gn $USER) /Users/ユーザ名/.config
$ amplify -v
4.32.1

そして、通常権限で最新バージョンが反映されたとともに .config ディレクトリへの権限付与を求められました。

amplifyコマンドを実行する際にバージョンアップデートの有無を確認するためにアクセスが必要っぽいので、指示に従って権限を付与します。

この状態でやっと問題なく最新バージョンでAmplify CLIを扱えるようになりました。。

まとめ

Amplify CLIのバージョンアップが反映されない問題の解決方法をご紹介しました。

私の場合は最後に触っていたのがかなり前でメジャーバージョンが3つくらい離れていたので、今回遭遇したエラーはかなり特異な気がします。

もし同じ問題に遭遇して困っている方の参考になれば幸いです。

参考

Amplify CLI をインストールする際に permission denied 的なエラーが発生する問題 – Qiita

AWS の記事