我有这个依赖
<dependency>
<groupId>com.google.apis</groupId>
<artifactId>google-api-services-dataflow</artifactId>
<version>v1b3-rev20221025-2.0.0</version>
</dependency>
这里我正在构建数据流:
private fun dataflow(): Dataflow = Dataflow.Builder(
"My credentials",
...,
...
).build()
当我尝试调用一些数据流方法时,它总是返回403-SERVICE_DISABLED,尽管我在项目中有带有作业的管道。
,
dataflow().projects().jobs().list("myProjectId").execute()
我尝试改变依赖版本,调用不同的方法,但结果是相同的。我对其他资源有依赖,它们工作得很好。
当你应该使用Google cloud java客户端库时,你似乎正在使用Google api java客户端库。
你应该参考这里的文档google-cloud-dataflow overview (0.10.0)
// This snippet has been automatically generated and should be regarded as a code template only.
// It will require modifications to work:
// - It may require correct/in-range values for request initialization.
// - It may require specifying regional endpoints when creating the service client as shown in
// https://cloud.google.com/java/docs/setup#configure_endpoints_for_the_client_library
try (JobsV1Beta3Client jobsV1Beta3Client = JobsV1Beta3Client.create()) {
CreateJobRequest request =
CreateJobRequest.newBuilder()
.setProjectId("projectId-894832108")
.setJob(Job.newBuilder().build())
.setView(JobView.forNumber(0))
.setReplaceJobId("replaceJobId441554788")
.setLocation("location1901043637")
.build();
Job response = jobsV1Beta3Client.createJob(request);
}
我找到了解决方案。问题是,我作为ServiceAccountCredential提供的服务帐户在另一个未启用此API的项目中。因此,API必须在服务帐户所在的项目和我的资源所在的项目中启用。