无法使用API​​创建GCP存储传输作业

时间:2018-04-09 12:54:41

标签: google-cloud-storage

我正在尝试使用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与桶的项目相匹配。这并没有改变任何事情。任何关于失败的前提条件可能意味着什么的想法都将受到赞赏。

1 个答案:

答案 0 :(得分:0)

问题原来是project-@storage-transfer-service.iam.gserviceaccount.com的权限

https://cloud.google.com/storage/docs/access-control/iam-transfer

记录了所需的权限

小心设置这些;我把它们设置在第一位,但显然不正确,在我回去看它们之后,在它工作之前我还是花了几次尝试。