在向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错误。有任何想法吗?感谢。
答案 0 :(得分:0)
看起来发送到Cloud Logging的请求被拒绝,因为执行请求的帐户无权访问。
这可能是一些事情:
运行预测作业时,您已请求“调试”级别详细程度(--verbosity debug
)。尝试删除它,看它是否有效?
您没有启用Stackdriver Logging API。尝试在API manager
代表您的服务帐户(我认为cloud-logs@google.com
)无权通过Strackdriver日志记录API向您的项目发出请求。尝试通过IAM console