我想编写一个Google Cloud Function,它可以与GCP的Dataproc服务交互以编程方式启动Dataproc集群。我们已经有一个坚固的Dataproc基础架构,我们只是想扩展它们的发布方式。
只能使用已经是适当IAM角色成员的适当IAM服务帐户启动我们的Dataproc群集,因此Cloud Function将需要使用该服务帐户向Dataproc服务进行身份验证。云功能使用服务帐户向其他GCP服务/ API进行身份验证的最合适方法是什么?
我怀疑的选项包括:
*以该服务帐户的身份运行该功能
*提供JSON密钥文件并设置GOOGLE_APPLICATION_CREDENTIALS环境变量
是否有公认的方法来实现这一目标?
我看过了:
* https://cloud.google.com/docs/authentication/
* https://cloud.google.com/docs/authentication/getting-started
但它们并非特定于云功能。
我也看过了
* https://cloud.google.com/functions/docs/writing/http
但这似乎与函数调用者如何进行身份验证有关。
答案 0 :(得分:1)
我认为这就是您要寻找的:https://cloud.google.com/functions/docs/concepts/iam
在运行时,Cloud Functions默认使用App Engine默认服务帐户(PROJECT_ID@appspot.gserviceaccount.com),该帐户在项目上具有“编辑者”角色。您可以更改此服务帐户的角色,以限制或扩展正在运行的功能的权限。您还可以通过按功能提供非默认服务帐户来更改使用哪个服务帐户。
tl; dr gcloud functions deploy FUNCTION_NAME --service-account SERVICE_ACCOUNT_EMAIL
顺便说一句,如果您需要更复杂的调度逻辑,请考虑研究Cloud Composer(托管的Apache Airflow):https://cloud.google.com/composer/