我正在创建一个Shell脚本来处理某些工作流程的自动化, 该工作流程包括通过Apache Beam GCP访问Google Bucket。 我的服务帐户使用的是.json文件,在这种情况下我需要使用:
gcloud auth activate-service-account --key-file myfile.json
vs
export GOOGLE_APPLICATION_CREDENTIALS=myfile.json
答案 0 :(得分:5)
取决于您在做什么:
使用其第三方SDK库之一(例如Go,Python)与Google Cloud服务接口?使用GOOGLE_APPLICATION_CREDENTIALS
环境变量。
要调用Google提供的工具,例如gcloud
或gsutil
?使用该工具提供的机制对远程服务进行身份验证。对于gcloud
,这是gcloud auth activate-service-account
命令。
GOOGLE_APPLICATION_CREDENTIALS
环境变量为用户编写的使用Google Cloud SDK的应用程序提供了一种机制,可以在环境中无法访问凭据的情况下轻松导入凭据。这些凭据将根据ADC docs中定义的优先级顺序进行加载。
Google提供的其他应用程序具有自己完善的机制,可用于导入凭据以向Google进行身份验证。在使用这些应用程序的地方应使用此机制。对于常用工具:
gcloud
:使用gcloud auth activate-service-account
。请注意,此may litter your disk with authentication credentials仍然存在,因此出于安全原因,您可能希望配置环境以确保使用后将其删除。gsutil
:如果独立运行,请使用gsutil config -e
设置服务帐户。但是,大多数安装将与Google Cloud SDK中的gcloud
工具一起使用,因此应使用上述针对gcloud
的方法。