提问者:小点点

当尝试从云函数(Node. js)启动数据流作业时,获取当前用户不能充当服务号xxx@yyy.iam.gserviceaccount.com


我试图从云函数(Node. js)运行基于经典模板的数据流作业,并得到这个错误-当前用户不能充当服务号(xxx@yyy.iam.gserviceaccount.com)

var opts = {
            projectId: "project-id",
            location: "asia-south1",
            gcsPath: "gs://dataflow-templates/latest/Cloud_Bigtable_to_GCS_Avro",
            resource: {
                "jobName": "bt-backup-to-gcs-avro" + Date.now(),
                "environment": {
                    "bypassTempDirValidation": false,
                    "serviceAccountEmail": "xxx@yyy.iam.gserviceaccount.com",
                    "machineType": "n1-standard-8",
                    "tempLocation": "gs://some-bucket/some-dir",
                    "subnetwork": "subnetwork-val",
                    "network": "network-val",
                    "ipConfiguration": "WORKER_IP_UNSPECIFIED",
                    "additionalExperiments": []
                },
                "parameters": {
                    "bigtableProjectId": "project-id",
                    "bigtableInstanceId": "instance-id",
                    "bigtableTableId": "table-id",
                    "outputDirectory": "gs://some-bucket/some-dir",
                    "filenamePrefix": "table-backup-"
                }
            }
        };
        dataflow.projects.locations.templates.launch(opts, (err, result) => {
            if (err) {
                throw err;
            }
            console.log(result.data);
        });

共2个答案

匿名用户

为了使用您自己的服务号运行任何Google Cloud Platform进程,启动进程的用户需要是该服务号的服务帐户用户。

对于您的特定需求,您的Cloud Function使用的服务号将需要服务帐户用户访问权限。

将服务帐户用户角色授予Cloud Function服务号可以通过以下方式完成:

  1. 在GCP项目级别授予帐户服务帐户用户角色。这可以通过GCP控制台中的IAM设置来完成。
  2. 授予Cloud Function服务号Dataflow服务号本身的服务帐户用户角色。这也可以通过控制台管理服务号的权限来完成。

更多信息可以在Google Cloud Platform留档中找到:

您可以在项目级别或服务号级别为项目中的所有服务帐户授予服务帐户用户角色。

>

  • 将服务帐户用户角色授予项目的用户可让用户访问项目中的所有服务帐户,包括将来可能创建的服务帐户。

    将服务帐户用户角色授予特定服务号的用户时,用户只能访问该服务号。

  • 匿名用户

    您需要将该权限授予运行Cloud Function的服务号。以下是如何执行此操作的留档:https://cloud.google.com/functions/docs/securing/function-identity