我正在尝试使用API创建存储传输作业。我尝试过使用Python和REST API。我在身份验证方面遇到了很多问题,但是在看似已经解决了这些问题后,当我提交作业时,我收到错误代码400并显示消息"前置条件检查失败"和状态" FAILED_PRECONDITION"。
我无法理解什么先决条件可能会失败。
这是我发送的JSON。请注意,源和接收器桶不在示例项目中。我正在从示例项目中的计算引擎实例进行调用,并使用JSON凭据通过服务帐户进行身份验证。
{
"status": "ENABLED",
"description": "sample-job-name",
"transferSpec": {
"gcsDataSource": {
"bucketName": "source-bucket-name"
},
"transferOptions": {
"deleteObjectsUniqueInSink": false,
"overwriteObjectsAlreadyExistingInSink": false,
"deleteObjectsFromSourceAfterTransfer": false
},
"gcsDataSink": {
"bucketName": "sink-bucket-name"
},
"objectConditions": {
"includePrefixes": [
"sampleprefix/"
]
}
},
"projectId": "sample-project-name",
"schedule": {
"scheduleStartDate": {
"year": 2018,
"day": 9,
"month": 4
},
"scheduleEndDate": {
"year": 2018,
"day": 9,
"month": 4
}
}
}
我已经尝试了当前日期和未来日期,但没有任何区别。我也尝试过不同的桶,并且项目ID与桶的项目相匹配。这并没有改变任何事情。任何关于失败的前提条件可能意味着什么的想法都将受到赞赏。
答案 0 :(得分:0)
问题原来是project-@storage-transfer-service.iam.gserviceaccount.com的权限
https://cloud.google.com/storage/docs/access-control/iam-transfer
记录了所需的权限小心设置这些;我把它们设置在第一位,但显然不正确,在我回去看它们之后,在它工作之前我还是花了几次尝试。