【发布时间】:2018-07-23 17:19:06
【问题描述】:
在使用 Google Cloud Function 中的模块“googleapis”调用时,我无法解决来自 Google Dataflow API 的 403 响应的原因。
该代码在我的 PC 上运行时使用与在 Cloud Functions 上运行的相同代码。 正在从存储在 Google 存储桶上的对象中检索 JWT .json 文件。
代码如下:
...
return getToken(). //Retrieves the JWT Client from Google Storage
then(function (jwtToken) {
console.log("Token: ", JSON.stringify(jwtToken));
return dataFlowList({
projectId: adc.projectId,
auth: jwtToken,
filter: "TERMINATED"
}).then(list => filterDataflowJobList(list))
...
这里是getToken 函数:
...
let storage: CloudStorage.Storage = CloudStorage({
projectId: adc.projectId
});
var bucket: CloudStorage.Bucket = storage.bucket(bucketName);
var bucketGetFiles = PromiseLab.denodeify(bucket.getFiles);
var stream = bucket.file(jwtJsonFileName).createReadStream();
return toString(stream)
.then(function (msg) {
var jsonJwt = JSON.parse(msg);
var jwtClient = new google.auth.JWT(
jsonJwt.client_email,
null,
jsonJwt.private_key,
['https://www.googleapis.com/auth/cloud-platform'], // an array of auth scopes
null
);
return jwtClient;
}).catch(function (error) {
console.log("Error while trying to retrieve JWT json");
throw error;
})
}
...
我位于欧盟,而 Cloud Functions 与美国有关,可能是这种情况吗? 数据流作业也在美国运行
【问题讨论】:
标签: google-app-engine google-cloud-dataflow google-api-nodejs-client