尝试通过应用引擎监控 api 列出不同项目中的指标时出现 403 错误

403 error when trying to list metrics in different project through monitoring api from app engine

我正在使用用 python2.7 编写的 App Engine 应用程序来收集来自不同项目的监控指标。我 运行 来自云 shell App Engine 应用程序部署在 projectA 中,它能够通过以下调用从 projectA 收集指标

service = build('monitoring', 'v3', cache_discovery=True)
    project_name = 'projects/{project_id}'.format(
        project_id=project_id
    )

    metrics = service.projects().metricDescriptors().list(
         name=project_name,
         pageSize=config.PAGE_SIZE,
         pageToken=next_page_token
    ).execute()

此调用是在循环中编写的,现在我需要收集 ProjectB 指标,我拥有对 ProjectB 的所有者访问权限。当 ProjectB 作为参数传递给 project_id 时,出现以下错误:

                        logMessage: "Error: <HttpError 403 when requesting https://monitoring.googleapis.com/v3/projects/ProjectB/metricDescriptors?pageToken=&alt=json&pageSize=500 returned "Permission monitoring.metricDescriptors.list denied (or the resource may not exist).">"     
severity: "ERROR"     
sourceLocation: {
 file: "/base/data/home/apps/s~ProjectA/list-metrics:20200706t123743.427891295940019389/main.py"      
 functionName: "post"      
 line: "665"      
}
time: "2020-07-06T16:10:43.724399Z"

我不确定应该怎么做才能使这项工作正常进行? 我是 google 云及其 api 的新手,也是应用引擎的新手,python2.7 请帮助,谢谢

我已经通过将应用引擎的默认服务帐户添加到 ProjectB 的 monitoring.viewer 角色以这种方式解决了这个问题,现在我也可以从 ProjectB 获取指标