GCP で 404 エラーが表示される場合、指定したリソースが見つからないことを意味します。リソース名の誤りやプロジェクト・リージョンの不一致が主な原因です。
よくある原因
リソース名またはIDの綴りが間違っている
GCP のリソースID(インスタンス名、バケット名、サービスアカウント名など)は大文字小文字を区別します。また、ハイフンとアンダースコアの混同、数字の誤入力もよくある原因です。API リクエストやコマンド実行時に誤ったリソース名を指定すると、システムが該当するリソースを見つけられず 404 エラーが返されます。
リソースが別のプロジェクトまたはリージョンに存在している
GCP では同じリソース名でも複数のプロジェクトやリージョンに存在できます。別のプロジェクトで作成したリソースにアクセスしようとしたり、異なるリージョン(例:us-central1 と asia-northeast1)を指定して検索したりすると、現在のコンテキストでは見つかりません。
リソースがすでに削除されている
削除されたリソースへのアクセスや参照は 404 エラーになります。特にスクリプトやパイプラインの実行時に、削除完了の確認がないまま同じリソースに再度アクセスしようとするケースで発生しやすいです。
解決手順
ステップ 1: Google Cloud Console でプロジェクトとリージョンを確認する
Google Cloud Console(https://console.cloud.google.com)にアクセスして、画面上部のプロジェクト選択ドロップダウンで正しいプロジェクトが選択されていることを確認します。次に、リソースのページ(Compute Engine、Cloud Storage、Cloud SQL など)を開き、画面上部またはフィルタセクションでリージョンが正しく設定されていることを確かめます。
ステップ 2: gcloud コマンドでリソース一覧を確認する
実際のリソースが存在するかどうか、以下のコマンドで確認します。
# Compute Engine インスタンスの場合
gcloud compute instances list --project=<your-project-id> --zones=<your-zone>
# Cloud Storage バケットの場合
gcloud storage buckets list --project=<your-project-id>
# Cloud SQL インスタンスの場合
gcloud sql instances list --project=<your-project-id>
リソースが表示されれば、リソースIDと現在のプロジェクト・リージョンを確認します。
プログラムやスクリプトから API を呼び出している場合、リクエスト内の project パラメータが正しいプロジェクトID になっていることを確認します。
# Python クライアントライブラリの例
from google.cloud import compute_v1
compute_client = compute_v1.InstancesClient()
project_id = '<your-project-id>' # 正しいプロジェクトID
zone = '<your-zone>' # 正しいゾーン
instance_name = '<your-instance-name>' # 正しいインスタンス名
try:
instance = compute_client.get(
project=project_id,
zone=zone,
resource=instance_name
)
except Exception as e:
print(f"エラー: {e}")
API リクエストの URL も確認し、プロジェクトID、リソース名、リージョン・ゾーンがすべて一致していることを確かめます。
# gcloud コマンドで API リクエストを実行する場合
gcloud compute instances describe <instance-name> \
--project=<your-project-id> \
--zone=<your-zone>
リソース名の綴りを再度確認し、大文字小文字やハイフンの有無をチェックします。
それでも解決しない場合
リソースが確実に別のプロジェクトに存在する場合、そのプロジェクトに対して適切な IAM 権限があるかを確認します。Cloud Console で「IAM と管理」→「IAM」から、あなたのアカウントに必要なロール(Viewer、Editor など)が割り当てられているか確認してください。それでも解決しない場合、GCP サポートに問い合わせる際は、エラーメッセージ、使用したコマンド、プロジェクトID、リソース名を含めて報告します。
免責事項:本記事の内容は、執筆時点の公開情報をもとに作成したものです。ソフトウェアの仕様は予告なく変更されることがあります。最新の情報は各ツールの公式サポートページをご確認ください。本記事の情報を利用した結果生じたいかなる損害についても、著者および運営者は責任を負いかねます。