ML引擎批量预测作业错误

时间:2017-07-23 20:47:34

标签: google-cloud-platform google-cloud-storage google-cloud-ml-engine

在向GCP ML Engine提交批量预测作业时,我遇到了令人沮丧的错误。作业成功排队但失败了:

Forbidden: 403 The caller does not have permission (POST https://logging.googleapis.com/v2/entries:write) [while running 'BATCH_PREDICTION/Prediction/ParDo(PredictionDoFn)/Do']

我已经成功训练了我的模型,并通过'gcloud ml-engine'调用全部部署了它。我也可以通过'gcloud ml-engine predict'成功进行在线预测提交。

我按照here的指示准备了我的批量预测工作。

DATA_FORMAT="TEXT"
INPUT_PATHS='gs://[BUCKET_NAME]/[INUPT_DIR]/-*'
OUTPUT_PATH='gs://[BUCKET_NAME]/[OUTPUT_DIR]' 
MODEL_NAME='[MODEL_NAME]'
VERSION_NAME='v1'
REGION='europe-west1'
now=$(date +"%Y%m%d_%H%M%S")
JOB_NAME="predict_$now"
MAX_WORKER_COUNT="20"

gcloud ml-engine jobs submit prediction $JOB_NAME \
--model $MODEL_NAME \
--input-paths $INPUT_PATHS \
--output-path $OUTPUT_PATH \
--region $REGION \
--data-format $DATA_FORMAT \
--verbosity debug

我还发现一个github issue描述了一个类似的问题,建议将cloud-logs@google.com组包含在存储桶ACL中的所有者角色。我更新了ACL。我跑的时候

gsutil acl get gs://[BUCKET_NAME]

我将以下内容视为其中一项。

{
    "email": "cloud-logs@google.com",
    "entity": "group-cloud-logs@google.com",
    "role": "OWNER"
}

但是,我仍然收到403错误。有任何想法吗?感谢。

1 个答案:

答案 0 :(得分:0)

看起来发送到Cloud Logging的请求被拒绝,因为执行请求的帐户无权访问。

这可能是一些事情:

  1. 运行预测作业时,您已请求“调试”级别详细程度(--verbosity debug)。尝试删除它,看它是否有效?

  2. 您没有启用Stackdriver Logging API。尝试在API manager

  3. 中启用此功能
  4. 代表您的服务帐户(我认为cloud-logs@google.com)无权通过Strackdriver日志记录API向您的项目发出请求。尝试通过IAM console

    添加该特定帐户的电子邮件

    Adding cloud-logs@google.com to Logging API