代码之家  ›  专栏  ›  技术社区  ›  George Liu

激活服务帐户后,无法使用cURL调用部署的模型

  •  0
  • George Liu  · 技术社区  · 5 年前

    我使用Predict将基于sklearn的模型部署到GCP AI平台。当使用GCP AI平台控制台中的“测试和使用”选项卡时,我能够成功地测试模型。

    enter image description here

    然而,当使用终端进行测试时,我得到了一个错误:

    curl -X POST -d '{"instances": [[12.85, 3.27, 2.58, 22.0, 106.0, 1.65, 0.6, 0.6, 0.96, 5.58, 0.87, 2.11, 570.0], [12.08, 1.13, 2.51, 24.0, 78.0, 2.0, 1.58, 0.4, 1.4, 2.2, 1.31, 2.72, 630.0], [12.0, 0.92, 2.0, 19.0, 86.0, 2.42, 2.26, 0.3, 1.43, 2.5, 1.38, 3.12, 278.0]]}' https://ml.googleapis.com/v1/projects/ml_deployment_tutorials/models/sklearn/versions/v1_0:predict\?access_token\=$(gcloud auth application-default print-access-token)

    {
      "error": {
        "code": 403,
        "message": "Permission denied on resource project ml_deployment_tutorials.",
        "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/ml_deployment_tutorials/apiui/credential"
              }
            ]
          }
        ]
      }
    

    {
        "error": {
            "code": 401,
            "message": "Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential. See https://developers.google.com/identity/sign-in/web/devconsole-project.",
            "status": "UNAUTHENTICATED"
        }
    }
    

    但是,从运行时起,我就已经在终端中登录到了gcloud sdk gcloud auth list ,我得到:

                   Credentialed Accounts
    ACTIVE  ACCOUNT
            ai-assets@appspot.gserviceaccount.com
            ***@***.com
            ***@gmail.com
    *       ml-deploy@datakademy.iam.gserviceaccount.com
    
    

    服务帐户“ml”-deploy@datakademy.iam.gserviceaccount.com“是我刚刚创建的,我下载了密钥文件并完成了 export GOOGLE_APPLICATION_CREDENTIALS="/home/george/Documents/datakademy-ml.json" gcloud auth application-default print-access-token ,我得到了下面的长字符串:

    ya29.c.Kp0B7gcRXl4cyLCWnc-olIZ3Bh3Ak-YQO-t0fDOp-1nx6BWS5xGOv-4Qa6tS7RPYYfIwBw-mRgzPHoIlCM-eCt67wKQhYbfEvEafsB_V-*****
    

    创建服务帐户后,我还在终端中激活了它:

    gcloud auth activate-service-account ml-deploy@datakademy.iam.gserviceaccount.com --key-file=/home/george/Documents/datakademy-ml.json
    
    Activated service account credentials for: [ml-deploy@datakademy.iam.gserviceaccount.com]
    
    0 回复  |  直到 5 年前
        1
  •  2
  •   Ricco D    5 年前

    我注意到在你的截图上模特的名字是 sklearn_model 但在你的人工智能平台端点上 sklearn a project ID 不能包含下划线。

    项目ID必须是由6到30个小写字母组成的唯一字符串, 数字或连字符。它必须以字母开头,不能有字母

    双重的 check your project ID 通过访问GCP主页->仪表板您的项目ID应该在“项目信息”下。

    enter image description here

    这个 correct structure of the endpoint

    https://ml.googleapis.com/v1/projects/your-project-id/models/your-model-name/versions/your-version-name:predict
    

    您的终点应该是这样的(只需放置正确的项目ID):

    https://ml.googleapis.com/v1/projects/your-project-id/models/sklearn_model/versions/v1_0:predict
    
        2
  •  2
  •   George Liu    5 年前

    https://us-central1-ml.googleapis.com/ https://ml.googleapis.com/

    curl -X POST -d '{"instances": [[12.85, 3.27, 2.58, 22.0, 106.0, 1.65, 0.6, 0.6, 0.96, 5.58, 0.87, 2.11, 570.0], [12.08, 1.13, 2.51, 24.0, 78.0, 2.0, 1.58, 0.4, 1.4, 2.2, 1.31, 2.72, 630.0], [12.0, 0.92, 2.0, 19.0, 86.0, 2.42, 2.26, 0.3, 1.43, 2.5, 1.38, 3.12, 278.0]]}' https://us-central1-ml.googleapis.com/v1/projects/datakademy/models/sklearn_model/versions/v0_1:predict\?access_token\=$(gcloud auth application-default print-access-token)