Reading from Pubsub using Dataflow Java SDK 2
我正在尝试如下操作:
public class App2 {
public static void main(String[] args) {
Pipeline pipeline = Pipeline.create(PipelineOptionsFactory.fromArgs(args).create());
pipeline
.apply("ReadStrinsFromPubsub",
PubsubIO.readStrings().fromTopic("projects/dev/topics/trading"))
.apply("PrintToStdout", ParDo.of(new DoFn<String, Void>() {
@ProcessElement
public void processElement(ProcessContext c) {
System.out.printf("Received at %s : %s\n", Instant.now(), c.element()); // debug log
}
}));
pipeline.run().waitUntilFinish();
}
}
由于以下原因导致发生错误:
com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
{
"code" : 403,
"errors" : [ {
"domain" : "global",
"message" : "The request is missing a valid API key.",
"reason" : "forbidden"
} ],
"message" : "The request is missing a valid API key.",
"status" : "PERMISSION_DENIED"
}
我该如何解决?
答案 0 :(得分:0)
您可能缺少为本地计算机访问GCP设置的服务帐户。
请参阅Getting Started with Authentication来设置您的服务帐户和GOOGLE_APPLICATION_CREDENTIALS变量。
1)在GCP控制台中创建服务帐户;
2)将json密钥文件下载到本地;
3)将GOOGLE_APPLICATION_CREDENTIALS变量设置为json密钥文件的路径。
答案 1 :(得分:0)
gcloud auth application-default login
将使您能够使用登录计算机上的默认服务帐户。