📑
Cloud Shell でACM を設定するときにハマった話
やろうとしたこと
Cloud Shell からACM でアクセスレベルを作成しようとしたところ、以下のようなエラーが発生
taruki@cloudshell:~$ cat CONDITIONS.yaml
- members:
- user:taruki@xxx.jp
taruki@cloudshell:~$ gcloud access-context-manager levels create taruki_test_1 \
> --title taruki_test_1 \
> --basic-level-spec CONDITIONS.yaml \
> --combine-function=OR \
> --policy=123456789
ERROR: (gcloud.access-context-manager.levels.create) User [taruki@xxx.jp] does not have permission to access accessPolicies instance [123456789] (or it may not exist): Your application has authenticated using end user credentials from the Google Cloud SDK or Google Cloud Shell which are not supported by the accesscontextmanager.googleapis.com. We recommend configuring the billing/quota_project setting in gcloud or using a service account through the auth/impersonate_service_account setting. For more information about service accounts and how to use them in your application, see https://cloud.google.com/docs/authentication/. If you are getting this error with curl or similar tools, you may need to specify 'X-Goog-User-Project' HTTP header for quota and billing purposes. For more information regarding 'X-Goog-User-Project' header, please check https://cloud.google.com/apis/docs/system-parameters.
- '@type': type.googleapis.com/google.rpc.ErrorInfo
domain: googleapis.com
metadata:
consumer: projects/987654321
service: accesscontextmanager.googleapis.com
reason: SERVICE_DISABLED
何が起きていたのか
Cloud Shell にcore/project
を設定していなかったため、プロジェクトのヘッダー情報が不足していたようだ。
以下のエラーで「X-Goog-User-Project」HTTPヘッダーを指定を促されている。
If you are getting this error with curl or similar tools, you may need to specify 'X-Goog-User-Project' HTTP header for quota and billing purposes. For more information regarding 'X-Goog-User-Project' header
解決方法
Cloud Shell で任意のプロジェクトを指定する
# Google Cloud プロジェクトが登録されているか確認
gcloud config list
# 無ければ任意のGoogle Cloud プロジェクトを登録
gcloud config set project ${PROJECT_ID}
疑問
ACM は組織レベルの設定なのにプロジェクトの指定が必要なのは何故なのだろうか、、、
Discussion