GCP の 401 エラーが出た時の対処法
GCP(Google Cloud Platform)で 401 エラーが発生するのは、Google Cloud API への認証情報(認証用の資格情報)が無効になっているか、有効期限が切れている状態です。このエラーが出ると、Cloud Functions やデータベースなど GCP のサービスが一切利用できなくなります。
よくある原因
1. サービスアカウントキーの期限切れ
サービスアカウントキー(JSON ファイル形式の認証情報)には有効期限があります。長期間使用していなかったり、セキュリティポリシーで期限切れになっている場合があります。特に本番環境では定期的なキーローテーションが行われるため、古いキーを使い続けると 401 エラーが発生します。
2. Application Default Credentials(ADC)の未設定
ADC とは、GCP が自動的に認証情報を探す仕組みです。環境変数が正しく設定されていない、または gcloud コマンドでのログイン情報が失われている場合、API 呼び出しが認証できず 401 エラーになります。
3. アクセストークンの有効期限切れ
API 呼び出しに使うアクセストークンは 1 時間で自動的に無効になります。長時間連続実行するプログラムでトークンをリフレッシュ(更新)していないと、1 時間経過後に 401 エラーが発生します。
解決手順
ステップ 1: アクティブなアカウントを確認する
まず、現在どのアカウントで gcloud が設定されているか確認しましょう。
gcloud auth list
出力結果から、使いたいアカウントの横に * マークがついているか確認してください。
ステップ 2: Application Default Credentials を再設定する
ADC をリセットして再ログインします。
gcloud auth application-default login
このコマンドを実行するとブラウザが自動的に開き、Google アカウントでのログインが求められます。ログインが完了すると、認証情報がローカルに保存されます。
ステップ 3: サービスアカウントキーを再生成する
サービスアカウントを使用している場合、Google Cloud Console で新しいキーを生成します。
- Google Cloud Console を開き、メニューから 「IAM と管理」→「サービスアカウント」 に移動
- 対象のサービスアカウントをクリック
- 「キーを追加」→「新しいキーを作成」 を選択
- ファイル形式は JSON を選択し、ダウンロード
- 環境変数
GOOGLE_APPLICATION_CREDENTIALSに新しいキーのパスを設定
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/new-key.json"
それでも解決しない場合
- キャッシュされた古い認証情報が残っていることもあります。
~/.config/gcloud/ディレクトリを確認し、古いセッション情報を削除してください - IAM(Identity and Access Management)でサービスアカウントに必要な権限が付与されているか確認してください
- ファイアウォール設定やネットワークの問題で GCP API に接続できないケースもあるため、通信状況も確認しましょう
免責事項:本記事の内容は、執筆時点の公開情報をもとに作成したものです。ソフトウェアの仕様は予告なく変更されることがあります。最新の情報は各ツールの公式サポートページをご確認ください。本記事の情報を利用した結果生じたいかなる損害についても、著者および運営者は責任を負いかねます。