google-app-engine - 尝试通过从应用引擎监控 api 来列出不同项目中的指标时出现 403 错误
问题描述
我正在使用一个用 python2.7 编写的应用程序引擎应用程序来收集来自不同项目的监控指标。我从云外壳运行这个应用程序引擎应用程序部署在 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"
我不确定应该做些什么来完成这项工作?我对谷歌云及其api非常陌生,对应用引擎也很陌生,python2.7请帮忙,谢谢
解决方案
我通过将应用程序引擎的默认服务帐户添加到 ProjectB 的 monitoring.viewer 角色以这种方式解决了这个问题,现在我也可以从 ProjectB 获取指标
推荐阅读
- apache - 重定向 http://www. https://www 的旧路径。新路径(1to1 重定向)
- android - 选框数据传递
- javascript - Angularjs ng-repeat问题
- spring - Harmcrest jsonPath 错误地以双倍失败
- python - Kivy 中的更新窗口
- javascript - Loopback - 如何根据端点确定方法的名称
- haskell - 这个特定的递归可以用尾部优化的方式重写吗?
- azure-devops - 使用 PowerBI 数据源时出现“Expression.Error: 字段‘项目名称’已存在于记录中”:Visual Studio Team Services (Beta)
- kotlin - Kotlin 泛型类型推断失败
- json - 产品类别的角度路由