首页 > 解决方案 > Google AI Platform Online Prediction - 使用 REST API 时权限被拒绝

问题描述

我在 Google Cloud AI 平台上创建了一个机器学习模型版本(scikit-learn 房价示例)。我现在按照此页面上的说明使用在线预测对其进行测试。当我通过 gcloud 请求时,预测会完美返回,但是当我尝试将 REST API 与 curl 一起使用时,我收到“Permission Denied”403 错误。我的请求和错误响应如下(我在请求中根据需要替换了 PROJECT_ID、MODEL_NAME 和 VERSION_NAME):

要求:

curl -X POST -H "Content-Type: application/json" -d @input.json \
-H "Authorization: Bearer `gcloud auth print-access-token`" \
"https://ml.googleapis.com/v1/projects/${PROJECT_ID}/models/${MODEL_NAME}/versions/${VERSION_NAME}:predict"

错误:

{
  "error": {
    "code": 403,
    "message": "Permission denied on resource project #271903.",
    "status": "PERMISSION_DENIED",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.Help",
        "links": [
          {
            "description": "Google developer console API key",
            "url": "https://console.developers.google.com/project/271903/apiui/credential"
          }
        ]
      }
    ]
  }
}

据我了解,应通过请求的访问令牌授予权限gcloud auth print-access-token。我也尝试单独输入该命令并手动复制令牌,但我收到相同的错误。我也尝试将 json 数据直接包含在请求中。

有谁知道这可能会发生?非常感谢任何帮助!

标签: curlgoogle-cloud-platformgoogle-cloud-ml

解决方案


如果这对其他人有用,那是我在请求中的错误。我替换了大括号内的参数,而不是替换整个变量(在正斜杠之间)。纠正这个问题可以解决问题,并且预测现在有效。


推荐阅读