![](/img/trans.png)
[英]Whoami doesn't change in GCP after I run gcloud auth login
[英]Can I automate `gcloud auth login`?
我無法非交互式地激活我的Google Cloud服務帳戶; 即使讀取了幾個SO線程也是如此。
gcloud iam service-accounts create my-awesome-acct ...
gcloud iam roles create AwesomeRole \\ --permissions storage.objects.create,storage.objects.delete ....
gcloud iam service-accounts keys create ~/awesome-key.json ...
gcloud auth activate-service-account my-awesome-acct ~/awesome-key.json
我的問題
即使執行了上述步驟,當我運行gsutil ...
命令時,仍然會收到錯誤消息:
$ gsutil cp my_file.tgz gs://my_bucket
Copying file://my_file.tgz [Content-Type=application/x-tar]...
Your credentials are invalid. Please run
$ gcloud auth login
我可以gcloud auth login
起作用的唯一方法是實際運行gcloud auth login
並允許在Web瀏覽器中進行身份驗證。
難道我做錯了什么? 還是針對每個服務帳戶?
我將在這里回答我自己的問題。
我的解決方案
我決定不使用gsutil
,而是決定使用Google Cloud Client庫。
我做了什么:
gsutil cp my_file.tgz gs://my_bucket
我現在做:
from gcloud import storage
# key file is located in my current directory
os.environ.get('GOOGLE_APPLICATION_CREDENTIALS', 'gcloud-auth.json')
client = storage.Client()
bucket = client.get_bucket("my_bucket")
blob = bucket.blob("my_file.tgz")
blob.upload_from_filename("my_file.tgz")
后視20/20
在使上述解決方案生效之后,看來如果我還要設置環境變量GOOGLE_APPLICATION_CREDENTIALS
,我的gsutil
應該也可以工作。 (未試)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.