我在设置Google云计算上的射线自动缩放时确实遇到困难。我可以让它在AWS上正常工作,但在运行ray up
时会遇到以下错误:
googleapiclient.errors.HttpError:https://cloudresourcemanager.googleapis.com/v1/projects?alt=json返回“服务帐户无法在没有父项的情况下创建项目。“>
我的项目是组织的一部分,所以我不知道这是从哪里来的,也不知道为什么它首先需要创建一个项目。我已经像通常对AWS一样在yaml文件中输入了项目ID。
非常感谢。我感谢能获得的任何帮助!
答案 0 :(得分:1)
有关服务帐户的错误消息以及该项目已存在的事实,表明Ray Autoscaler使用的googlecloudapiclient已针对无法访问该项目的服务帐户进行了身份验证。
如果这是真的,那么我相信这就是发生的事情。通常,在运行Ray GCP Autoscaler时,它将首先检查具有给定id的项目是否存在。在您的情况下,此请求返回“未找到”,因为不存在与该服务帐户关联的具有给定ID的项目。现在,由于该项目不存在,Ray将自动尝试为您创建一个。通常,如果我们使用用户帐户(即非服务帐户)创建了新的GCP项目,则新创建的项目将与用户帐户的默认组织相关联。但是,服务帐户在创建新项目时必须明确指定上级组织。如果我们看一下ray.autoscaler.config._create_project函数,就会发现传递给projects.create
方法的参数忽略了'parent'参数,这解释了为什么看到错误。
要验证是否正确(并希望解决此问题),您可以更改用于通过googlecloudapiclient进行身份验证的帐户。我相信用于googlecloudapiclient请求的凭据与Google Cloud SDK所使用的凭据相同,因此您应该能够使用gcloud auth login命令配置帐户。
我认为,可以通过允许用户在创建新项目时显式指定父组织,或者至少为此情况提供更详细的错误消息来改进Ray Autoscaler。
我希望这可以解决您的问题。如果没有,并且您认为这是Autoscaler的问题,请毫不犹豫地向Ray Issues page提出问题或功能请求!