在数据流中使用Flex模板时,——impersonate和——service-account-email的区别是什么?&



当使用gcloud dataflow flex-template run时,我很难理解--impersonate--service-account-email之间的区别。

就我所知,--impersonategcloud是全局的,而另一个标志仅用于数据流相关命令。

但同时,我仍然需要能够模拟我使用--service-account-email时使用的服务帐户…

所以…真正的区别是什么?

非常感谢!阿德里安。

在Dataflow中你可以想到3种不同的身份。

1。用于与数据流API通信的标识

此标识在运行"gcloud数据流作业运行"时使用。例如,或任何其他操作您的工作。

调用将与您的用户一起进行,或者如果您在GCE或GAE上运行命令,则通过默认服务帐户进行调用。如果以用户身份运行该命令,使用——impersonate-service-account将以指定的服务帐户运行作业。

注意您的用户需要"服务帐户用户";IAM角色,以便能够模拟SA。例如,指定的SA可以具有Dataflow Developer角色。

2。数据流服务的标识

这个服务做一些事情,比如在GCE上创建Dataflow需要的vm,或者重新启动失败的作业。此标识是Dataflow自动创建的服务帐户。

3。数据流控制器的标识

默认情况下,它是您的计算引擎默认服务帐户。可以通过——service——account-email参数修改。

确保SA具有Dataflow Worker角色,否则作业将无法运行。此外,这基本上是您的作业将使用的SA,因此,如果您的作业从Pub/Sub读取数据,则需要适当的Pub/Sub权限。(注意,对于像BigQueryIO这样的IO连接器,身份1和身份3都需要BigQuery权限:https://cloud.google.com/dataflow/docs/concepts/security-and-permissions#accessing_bigquery_datasets_across_google_cloud_platform_projects)。

此SA将在Dataflow UI中显示为"serviceaccountemail"。

相关内容

最新更新