Google cloud platform 创建Google Cloud Dataproc群集时出错-无法访问初始化代理脚本

Google cloud platform 创建Google Cloud Dataproc群集时出错-无法访问初始化代理脚本,google-cloud-platform,gcloud,google-cloud-dataproc,google-iam,Google Cloud Platform,Gcloud,Google Cloud Dataproc,Google Iam,我正在尝试使用以下命令创建我的第一个Google Cloud Dataproc群集: gcloud dataproc集群创建配置单元集群\ --作用域sql管理\ --图像版本1.3\ --初始化操作“gs://goog dataproc-${PROJECT}:${REGION}:hive元存储”\ --主机类型n1-standard-1\ --主引导盘大小15\ --工人人数2\ --工人机器类型n1-standard-1\ --工作启动磁盘大小15\ --美国东部地区1\ --美国东部1-b

我正在尝试使用以下命令创建我的第一个Google Cloud Dataproc群集:

gcloud dataproc集群创建配置单元集群\
--作用域sql管理\
--图像版本1.3\
--初始化操作“gs://goog dataproc-${PROJECT}:${REGION}:hive元存储”\
--主机类型n1-standard-1\
--主引导盘大小15\
--工人人数2\
--工人机器类型n1-standard-1\
--工作启动磁盘大小15\
--美国东部地区1\
--美国东部1-b区
但是,我得到以下错误:

    Dataproc could not validate the initialization action using the service-owned service accounts. Cluster creation may still succeed if the initialization action is accessible from GCE VMs.
    Reason: service-1456309104734317@dataproc-accounts.iam.gserviceaccount.com does not have storage.objects.get access to goog-dataproc-initialization-actions-us-east1/cloud-sql-proxy/cloud-sql-proxy.sh.
    Waiting for cluster creation operation...done.
    ERROR: (gcloud.dataproc.clusters.create) Operation [projects/traits-seater-824109/regions/us-east1/operations/5b36fb82-ade2-3d5f-a6bd-cb1a206bb54e] failed: Multiple Errors:
     - Error downloading script 'gs://goog-dataproc-initialization-actions-us-east1/cloud-sql-proxy/cloud-sql-proxy.sh': 1456309104734317-compute@developer.gserviceaccount.com does not have storage.objects.get access to goog-dataproc-initialization-actions-us-east1/cloud-sql-proxy/cloud-sql-proxy.sh.
我检查了IAM中的权限,并为上面的错误消息中提到的服务帐户提供了存储->对象查看器角色,但仍然收到相同的错误。
如何克服这个错误,有什么建议吗

问题可能来自创建集群时提供的。您只限制集群访问
sql admin
API()

您可能需要添加
存储ro
范围(或):


如果没有
存储ro
范围,即使bucket
goog-dataproc-initialization-actions-us-east1
是公共的,我认为dataproc集群将无法从GCS检索文件。

问题可能来自您在创建集群时提供的。您只限制集群访问
sql admin
API()

您可能需要添加
存储ro
范围(或):


没有
存储ro
范围,即使bucket
goog-dataproc-initialization-actions-us-east1
是公共的,我认为Dataproc群集将无法从GCS检索该文件。

Dataproc的区域托管版本的初始化操作的权限设置似乎存在临时问题——从长远来看,这些区域副本确实是您应该使用的,以便更好地隔离init的区域可靠性操作,还可以避免跨区域复制init操作,但同时,您可以使用init操作的共享“全局”副本:

gcloud dataproc clusters create hive-cluster    \ 
--initialization-actions gs://dataproc-initialization-actions/cloud-sql-proxy/cloud-sql-proxy.sh \
...

Dataproc的区域托管版本的初始化操作上的权限设置似乎存在临时问题--从长远来看,这些区域副本确实是您应该使用的,以便更好地隔离init操作的区域可靠性,并避免跨区域复制init操作,但同时,您可以使用init操作的共享“全局”副本:

gcloud dataproc clusters create hive-cluster    \ 
--initialization-actions gs://dataproc-initialization-actions/cloud-sql-proxy/cloud-sql-proxy.sh \
...

好主意,虽然现在的Dataproc预计会自动插入基本必需的作用域,特别是必要的存储作用域,而且Dataproc托管的初始化操作预计会是公共读取的,但这里可能还发生了其他事情。是否有文档记录(Dataproc自动插入基本作用域的事实)?在回答之前,我一直在文档中查找,但找不到:(范围不是问题所在。正如Igor Dvorzhak在上述评论中提到的,区域存储桶的权限已更新,以便我的帐户现在可以访问该文件。@norbjd很好的问题,这似乎是以某种方式漏掉了漏洞,因此发现这一点的唯一方法是比较“gcloud dataproc群集描述"如果未指定任何作用域,并且指定了单个作用域。我已申请将信息添加到以供参考,以下信息将添加到该页面:好主意,尽管Dataproc现在希望自动插入基本必需的作用域,特别是必要的存储作用域,此外,Dataproc托管的init操作也应该是公共读取的——这里可能还有其他事情。是否有文档记录(Dataproc自动插入基本作用域的事实)?在回答之前,我一直在文档中查找,但找不到:(范围不是问题所在。正如Igor Dvorzhak在上述评论中提到的,区域存储桶的权限已更新,以便我的帐户现在可以访问该文件。@norbjd很好的问题,这似乎是以某种方式漏掉了漏洞,因此发现这一点的唯一方法是比较“gcloud dataproc群集描述"当没有指定任何作用域并且指定了单个作用域时。我已经提交了一个请求,请求将信息添加到以供参考,以下信息将添加到该页面:在stackoverflow问题中可能有一个输入错误,您删除了初始化操作标志的一部分,并将其与--metadata标志混合,尽管我认为这只是此处发布的问题中的一个输入错误,而不是您实际运行的命令,因为错误消息引用了正确的初始化操作路径。我们已解决了区域存储桶的权限问题,请重试您的命令。谢谢@IgorDvorzhak!这样做了。该文件现在具有公共访问权限,并且命令运行良好。可能存在以下问题:e stackoverflow问题中的一个输入错误,您删除了初始化操作标志的一部分,并将其与--metadata标志混合在一起,尽管我认为这只是发布在此处的问题中的一个输入错误,而不是您实际运行的命令,因为错误消息引用了正确的初始化操作路径。我们已解决了与区域bucket,请重试您的命令。谢谢@IgorDvorzhak!完成了。该文件现在可以公开访问,并且命令运行良好。