チュートリアルに関する問題をトラブルシューティングする

チュートリアルの構成中に問題が発生した場合、生じている可能性のある問題と、各問題の修正方法の提案がこのページに表示されます。

cloudshell_open フォルダがない

ls ~ を実行してホーム ディレクトリに cloudshell_open フォルダが表示されない場合、フォルダとフォルダ内のファイルは失われています。この問題は、Cloud Shell を一時的ログインモードで使用していて、インターネット接続が失われるか、ページを更新したときに発生します。この問題を解決するには、チュートリアルを最初からやり直します。今後ファイルが失われるのを避けるために、デフォルト モードに切り替えることを検討してください。

現在の環境でプロジェクト ID を検出できない

コードサンプルを実行しようとすると、次のエラーが発生します。

ERROR Unable to detect a Project Id in the current environment.

この問題は、Google Cloud プロジェクトが設定されていない場合に発生します。この問題を解決するには、次のコマンドを実行してプロジェクトを設定します。

gcloud config set project <YOUR-PROJECT-ID>

コードサンプルの実行時に key.json のエラー

コードサンプルを実行すると、次のいずれかのエラーが発生します。

File /home/user/key.json is not a valid json file
no JSON input found
The file at /home/user/key.json does not exist, or it is not a file
Could not find file '/home/user/key.json'
Error reading credential file from location /home/user/key.json: Value cannot be null

この問題は、サービス アカウントの認証に使用する key.json ファイルが空であるか、存在しない場合に発生します。次のコマンドを実行して、この問題が発生しているかどうかを確認できます。

cat ~/key.json

これにより、ファイルの内容または No such file or directory メッセージのいずれかが出力されます。ファイルが空の場合は、キーの作成中にエラーが発生したことを意味します。ファイルがない場合は、その前にエラーが発生したことを意味します。この問題を解決するには、チュートリアルの「作業環境を準備する」の手順に従います。

小売業向け Vertex AI Search がプロジェクトでこれまで使用されたことがない、または無効になっている

チュートリアルを実行しようとすると、次のエラーが発生します。

PERMISSION_DENIED: Vertex AI Search for retail API has not been used in project <YOUR-PROJECT-ID> before or it is disabled

この問題を解決するには、Google Cloud コンソールの [API / サービスの詳細] ページで小売業向け Vertex AI Search を有効にするか、次のコマンドを実行します。

gcloud services enable \
    retail.googleapis.com \
    --project=<YOUR-PROJECT-ID>

サービス アカウントにプロジェクト インスタンスにアクセスする権限がない

サービス アカウントにロールを割り当てると、次のエラーが発生します。

User [USER@YOUR-PROJECT-ID.] does not have permission to access projects instance [YOUR-PROJECT-ID:setIamPolicy] (or it may not exist): Policy update access denied.

この問題を解決するには、ターミナルで gcloud auth list コマンドを実行して、正しいアカウントが有効になっていることを確認します。有効なアカウントがサービス アカウントであることを確認します。Google Cloud コンソールの [IAM] ページに移動して、サービス アカウントが Google Cloud プロジェクトのオーナーであることを確認します。

エンドユーザーの認証情報による無効な認証

コードサンプルを実行すると、次のエラーが発生します。

PERMISSION_DENIED: Your application has been authenticated using end user credentials from the Google Cloud SDK or Google Cloud Shell which are not supported by the retail.googleapis.com.

この問題は、サービス アカウントの代わりにエンドユーザーの認証情報を使用している場合に発生します。この問題は、サービス アカウントが有効になっていない場合や必要な環境変数が設定されていない場合にも発生することがあります。このエラーは、Cloud Shell の再起動後または新しいターミナル ウィンドウの起動後に表示されることがあります。

この問題を解決するには:

  1. チュートリアルの「作業環境の準備」の手順に従い、gcloud auth list を実行してサービス アカウントが有効になっていることを確認します。
  2. 環境変数を設定します。

    1. すべての言語で次のコマンドを実行します。
    export GOOGLE_APPLICATION_CREDENTIALS=~/key.json
    
    1. さらに .NET の場合は次のコマンドを実行します。
    export GOOGLE_PROJECT_ID=<YOUR-PROJECT-ID>
    

サービス アカウントに必要なロールがない場合の権限エラー

コードサンプルを実行すると、次のエラーが発生します。

google.api_core.exceptions.PermissionDenied: 403 Permission 'retail.<YOUR-REQUEST>' denied on resource '//retail.googleapis.com/projects/<YOUR-PROJECT-ID>/locations/<YOUR-LOCATION>' (or it may not exist). [reason: "IAM_PERMISSION_DENIED"

この問題は、サービス アカウントに必要なロール(retail.admin と editor)がない場合に発生します。この問題を解決するには、チュートリアルの「作業環境を準備する」の手順に従って作業環境を設定します。

検索オペレーションで一致する結果が返されない

この問題は、カタログの商品が検索クエリで一致しない場合や商品カタログが空の場合に発生します。この問題を解決するには、Google Cloud コンソールの [カタログ] ページで、カタログに商品が含まれているかどうかを確認します。それ以外の場合は、チュートリアルの「カタログデータをインポートする」の手順に従ってカタログデータをインポートします。

問題が解決しない場合

Cloud Shell をリセットして、チュートリアルを最初から実行してみてください。