问题描述
我对python非常陌生。我正在尝试通过 google cloud shell 的python命令行调用google Monitoring API。我正在使用python 2.7。在此之前,我已经安装了
from googleapiclient.discovery import build
service = build('monitoring','v3',cache_discovery=True)
timeseries = service.projects().timeSeries().list(
name="my-project",filter="metric.type=compute.googleapis.com/instance/cpu/utilization"
aggregation_alignmentPeriod=86400s,# aggregation_crossSeriesReducer=api_args["crossSeriesReducer"],aggregation_perSeriesAligner="ALIGN_MEAN",aggregation_groupByFields="metric.labels.key",interval_endTime="2020-08-23T17:30:04.707Z",interval_startTime="2020-08-22T17:30:05.603000Z",pageSize=100
).execute()
service = build('monitoring',cache_discovery=True)
我在python命令行以及执行此行时传递适当的值
>>>from googleapiclient.discovery import build
>>> service = build('monitoring',cache_discovery=True)
Traceback (most recent call last):
File "<stdin>",line 1,in <module>
File "/home/mugham/.local/lib/python2.7/site-packages/googleapiclient/_helpers.py",line 134,in positional_wrapper
return wrapped(*args,**kwargs)
File "/home/mugham/.local/lib/python2.7/site-packages/googleapiclient/discovery.py",line 282,in build
adc_key_path=adc_key_path,File "/home/mugham/.local/lib/python2.7/site-packages/googleapiclient/_helpers.py",line 489,in build_from_document
credentials = _auth.default_credentials()
File "/home/mugham/.local/lib/python2.7/site-packages/googleapiclient/_auth.py",line 44,in default_credentials
credentials,_ = google.auth.default()
File "/usr/local/lib/python2.7/dist-packages/google/auth/_default.py",line 338,in default
credentials,project_id = checker()
File "/usr/local/lib/python2.7/dist-packages/google/auth/_default.py",line 208,in _get_gae_credentials
project_id = app_engine.get_project_id()
File "/usr/local/lib/python2.7/dist-packages/google/auth/app_engine.py",line 77,in get_project_id
return app_identity.get_application_id()
File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/api/app_identity/app_identity.py",line 455,in get_application_id
_,domain_name,display_app_id = _ParseFullAppId(full_app_id)
File "/usr/lib/google-cloud-sdk/platform/google_appengine/google/appengine/api/app_identity/app_identity.py",line 436,in _ParseFullAppId
psep = app_id.find(_PARTITION_SEParaTOR)
AttributeError: 'nonetype' object has no attribute 'find'
我得到以下错误:
mydomain.com/somejourney/?app=AppA
我不知道为什么会这样,有人可以帮助我吗?谢谢
解决方法
我一直在Google Cloud Shell中进行此操作,因此我认为这无需传递 GOOGLE_APPLICATION_CREDENTIALS 就可以了,因为我已经为其他API(如计算引擎)完成了此操作,但看来我需要从服务帐户创建一个密钥,该密钥具有通过此命令调用此监控api 的权限,
gcloud iam服务帐户密钥创建--iam-帐户输出密钥
完成此操作后,我必须将该值导出到有效的 GOOGLE_APPLICATION_CREDENTIALS 中的环境文件中。