📝

gloudコマンド実行時に'serviceAccount' was not foundエラーが発生した場合の解消法

2024/12/11に公開

概要

Cloud Shellからgcloudコマンドを実行し、インスタンスを作成しようとしたところ下記内容のエラーが発生。

ERROR: (gcloud.compute.instances.create) Could not fetch resource:
 - The resource 'XXXXXXXXXXX-compute@developer.gserviceaccount.com' of type 'serviceAccount' was not found.

備忘録としてどう解消したかを残しておく。
※事象が発生したのは個人の学習用Google Cloud環境です。

原因

IAMについての学習を兼ねてマネコンを操作中、不要なサービスアカウントがあると思い、該当のアカウントを削除してしまっていた。

解消方法の調査

"gcloud service account not found"で検索。
公式ドキュメントのデフォルトサービスアカウントの復元方法を発見。
https://cloud.google.com/compute/docs/troubleshooting/troubleshooting-default-service-accounts?hl=ja
削除後30日以内なのでこの方法で復元できそうだ。

解消手順

  1. ログエクスプローラで下記クエリを実行し、UNIQUE IDを特定。
resource.type="service_account"
resource.labels.email_id="SERVICE_ACCOUNT_EMAIL"
"DeleteServiceAccount"
  1. Cloud Shellで下記コマンドを実行し、サービスアカウントの削除を取り消す。
gcloud beta iam service-accounts undelete UNIQUE_ID

restoredAccountに続き復元されたサービスアカウントの詳細が表示されればOK。

動作確認

gcloudコマンドでインスタンスを作成してみる。

gcloud compute instances create --machine-type=MACHINE_TYPE INSTANCE_NAME

Createdに続き作成されたインスタンスの詳細が表示され、マネコンで見てもインスタンスが動いているので解消!

Discussion