权限monitoring.timeSeries.list被拒绝(或者资源可能不存在)

问题描述 投票:0回答:1

我正在使用谷歌云项目(Nodejs 服务器)。我需要使用“googleapis”从谷歌云收集指标“monitoring.timeSeries.list”。

当我尝试使用我的服务帐户 Authen Default Credential 请求 API 时,其返回

status: 403,
  code: 403,
  errors: [
    {
      message: 'Permission monitoring.timeSeries.list denied (or the resource may not exist).',
      domain: 'global',
      reason: 'forbidden'
    }
  ],

我已经为该服务帐户提供了“所有者”角色并下载了它的 .json 文件。 但是当我使用“Owner”用户帐户在浏览器上使用“gapi”运行 API 时,它运行良好。

使用“googleapis”服务器上的服务帐户进行代码:

const authenticate = async () => {
  const auth = new google.auth.GoogleAuth({
    keyFile: process.env.GOOGLE_APPLICATION_CREDENTIALS,
    scopes: [
      "https://www.googleapis.com/auth/cloud-platform https://www.googleapis.com/auth/monitoring https://www.googleapis.com/auth/monitoring.read",
    ],
  });
  const authClient = await auth.getClient();
  google.options({ auth: authClient });
  return authClient;
};
const queryMetrics = async () => {
  try {
    const authClient = await authenticate();
    const monitoring = google.monitoring({
      version: "v3",
      auth: authClient,
    });
    const projectId = instanceData.projectID;

    const request = {
      name: `projects/${projectId}`,
      filter: `metric.type="compute.googleapis.com/instance/cpu/utilization"`,
      "interval.startTime": "2024-05-08T03:14:51Z",
      "interval.endTime": "2024-05-08T03:15:51Z",
    };

    const response = await monitoring.projects.timeSeries.list(request);
    console.log("Metrics data:", response.data);
  } catch (error) {
    console.error("Error querying metrics:", error);
  }
};

在客户端上使用“gapi”使用用户帐户进行编码:

const authenticate = () => {
    return gapi.auth2.getAuthInstance().signIn({
      scope:
        "https://www.googleapis.com/auth/cloud-platform https://www.googleapis.com/auth/monitoring https://www.googleapis.com/auth/monitoring.read",
    });
  };

此 API 是否无法通过服务帐户执行,或者我做错了什么? 感谢您的阅读!

google-api-nodejs-client google-apis-explorer
1个回答
0
投票

您需要将监控角色访问权限授予相应的 IAM 用户。

Monitoring Viewer
角色,该角色仅供阅读。

© www.soinside.com 2019 - 2024. All rights reserved.