curl - 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 数据直接包含在请求中。
有谁知道这可能会发生?非常感谢任何帮助!
解决方案
如果这对其他人有用,那是我在请求中的错误。我替换了大括号内的参数,而不是替换整个变量(在正斜杠之间)。纠正这个问题可以解决问题,并且预测现在有效。
推荐阅读
- r - mgcv::gam 函数导致错误消息“重构错误(pav,env = p.env):未使用的参数(env = p.env)”
- sql - 如何从一个表中为另一个表中的每个唯一记录选择 100 条记录
- reactjs - 反应路由器链接与路径名称状态和数据小部件
- java - 为什么我不能使用这个方法的变量?
- sql - 新列的 SQL 不同分组依据
- angular - 在 angular8 的电子商务网站下订单后如何重置 observable?
- java - Docker 阻止挂载的卷
- javascript - 如何动态检查复选框是否在另一个表 Javascript/PHP 中?
- c++ - 实现二叉搜索树时对类的怀疑
- html5-canvas - 如何确保图像在fabric.js中转换(移动,缩放)时始终包含整个剪辑矩形?