GCP でプロジェクトを作成しました。次に、Compute Admin
ロールを持つサービス アカウントを作成しました。その後、Compute Engine API
プロジェクトで有効にしましたが、インスタンスで作業できません。
#gcloud compute instances list
ERROR: (gcloud.compute.instances.list) Some requests did not succeed:
- Required 'compute.zones.list' permission for 'projects/someproject'
何が間違っているのでしょうか?
答え1
このコマンドを実行するために使用しているサービスアカウントに適切な権限があることを確認してください。Compute Engine の役割これは、「IAM と管理 > IAM」で実行できます。
- アップデート -
確認のためサービスアカウント適切な権限を持っている場合は、Cloud Shell で次のコマンドを実行します。
$ gcloud iam service-accounts keys create key.json \ --iam-account [email protected]
上記のコマンドは、このサービス アカウントのキーを JSON 形式で作成してダウンロードします。
$ gcloud projects add-iam-policy-binding some-project-name \ --member serviceAccount:[email protected] \ --role=roles/compute.admin
このコマンドは、compute.admin ロールを new-sa サービス アカウントに割り当てます。
$ gcloud auth activate-service-account --key-file=key.json
$ gcloud compute instances list
そしてこれらを使ってニューサすでにダウンロードしたkey.jsonファイルを使用してサービスアカウントを作成し、対応するコマンドを実行してインスタンスを一覧表示します。プロジェクト名プロジェクト。これが成功した場合、問題は別の場所にあります。
答え2
初めて Google テスト期間にサービス アカウント「cloud66」を作成しました。おそらく、これがアクセス権に影響を与えたのでしょう。その後、課金をテスト期間から有料に切り替えました。「API とサービス -> 認証情報」セクションで cloud66 サービス アカウントを削除して再作成しました。しかし、「IAM」セクションに「ComputeAdmin」のロールを持つ「cloud66」のアクセス ポリシーがありました。「IAM」セクションからアクセス ポリシーを削除してサービス アカウントを再作成すると、問題は解決しました。