Reason: Unable to start the local OpenSearch Instance.のエラーでamplify mockが失敗したときの対応方法メモ

aws-amplifyを使った開発で、@searchable ディレクティブを追加してamplify mockを実行したが、エラーが発生して、結果的に解決できたので対応方法を残します。

アイキャッチ画像はVue.jsですが、amplify mockの話なので、フレームワークは関係ありません。

amplify mockを実行したら以下のエラーで怒られた。

Failed to start API Mocking. Running cleanup tasks.
🛑 Failed to start API Mocking.. Reason: Unable to start the local OpenSearch Instance.

ローカルのOpenSearch(実体はElasticSearch?)が起動できていない模様。

Opensearch mock not working
https://github.com/aws-amplify/amplify-category-api/issues/1053

こちらを参考に以下コマンドを実施した。

% npm i -g @aws-amplify/cli@searchable-mocking-test
% amplify -v
% amplify api gql-compile
% amplify mock

それでもダメ。
以下コマンドで、バイナリは揃っていそうな感じ。

% ls ~/.amplify/lib/aws-amplify-amplify-opensearch-simulator/opensearch/1.3.0/
opensearch-min-1.3.0-linux-x64.tar.gz           opensearch-min-1.3.0-linux-x64.tar.gz.sig       opensearch.pgp                                  opensearchLib

以下コマンドでopensearchを単体で動かしてみると、、、

% ~/.amplify/lib/aws-amplify-amplify-opensearch-simulator/opensearch/1.3.0/opensearchLib/bin/opensearch
could not find java in bundled jdk at /Users/xxx/.amplify/lib/aws-amplify-amplify-opensearch-simulator/opensearch/1.3.0/opensearchLib/jdk.app/Contents/Home/bin/java

バンドルされたJDKが見つからないとのこと。

以下を~/.zshrcに記載して、再読み込み。(javaのバージョンは入っている物を指定)

export JAVA_HOME=`/usr/libexec/java_home -v 16`

もう一度、opensearchを起動。

% ~/.amplify/lib/aws-amplify-amplify-opensearch-simulator/opensearch/1.3.0/opensearchLib/bin/opensearch
[2023-03-01T21:17:11,018][INFO ][o.o.n.Node               ] [MacBook-Pro.local] version[1.3.0], pid[80162], build[tar/e45991597c86ba1bbcc36ee1dfdc165197a913af/2022-03-15T19:07:30.455415Z], OS[Mac OS X/11.5/x86_64], JVM[Oracle Corporation/OpenJDK 64-Bit Server VM/16.0.1/16.0.1+9-24]
[2023-03-01T21:17:11,021][INFO ][o.o.n.Node               ] [MacBook-Pro.local] JVM home [/Library/Java/JavaVirtualMachines/jdk-16.0.1.jdk/Contents/Home], using bundled JDK [false]
・・・

動いた!

amplify mockも動くようになった!

めでたしめでたし!