【发布时间】:2020-06-30 11:23:26
【问题描述】:
我正在使用用 node.js 编写的云函数来列出项目,这是包含该方法的 index.js 文件,当我触发此函数时,我只打印了 1 个项目。 ProjectA -> 云功能也驻留在 ProjectA 中,我有另一个 ProjectB 没有打印,它也处于活动模式。我拥有这两个项目的所有者权限。
const {Resource} = require('@google-cloud/resource');
const resource = new Resource();
async function getProjects() {
try {
// Lists all current projects
const [projects] = await resource.getProjects();
console.log(`success in getProjects() call`);
// Set a uniform endTime for all the resulting messages
const endTime = new Date();
const endTimeStr = endTime.toISOString();
// sample 2019-11-12T17:58:26.068483Z
for (var i=0; i<projects.length;i++) {
console.log("Total Projects ",projects.length) //Printing as 1 instead of correct 2
// Only publish messages for active projects
if (projects[i]["metadata"]["lifecycleState"] === config.ACTIVE) {
// Construct a Pub/Sub message
console.log(`About to send Pub/Sub message ${projects[i]}}`);
const pubsubMessage = {
"token": config.METRIC_EXPORT_PUBSUB_VERIFICATION_TOKEN,
"project_id": projects[i]["id"],
"end_time": endTimeStr
}
}
}
} catch(err) {
console.error("Error in getProjects()");
console.error(err);
throw err;
}
}
但是,如果我尝试使用 google api 链接
https://cloud.google.com/resource-manager/reference/rest/v1/projects/list#try-it
我收到了 2 个项目作为我可以访问的响应。
【问题讨论】:
-
使用正确的身份验证信息,您的代码就可以工作!在 Cloud Function 上使用自定义服务帐户并将其授予 2 个项目。
-
非常感谢,我正在使用自定义服务帐户,添加角色/查看器后,它正在列出
标签: node.js google-cloud-platform google-cloud-functions