StackDriver Google Python API访问被拒绝



尝试使用Google Cloud Python3 API客户端创建A sink 时,我得到了错误:

RetryError: GaxError(Exception occurred in retry method that was not classified as transient, caused by <_Rendezvous of RPC that terminated with (StatusCode.PERMISSION_DENIED, The caller does not have permission)>)

我使用的代码是这个:

import os
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = 'path_to_json_secrets.json'
from google.cloud.bigquery.client import Client as bqClient
bqclient = bqClient()
ds = bqclient.dataset('dataset_name')
print(ds.access_grants)
[]
ds.delete()
ds.create()
print(ds.access_grants)
[<AccessGrant: role=WRITER, specialGroup=projectWriters>,
 <AccessGrant: role=OWNER, specialGroup=projectOwners>,
 <AccessGrant: role=OWNER, userByEmail=id_1@id_2.iam.gserviceaccount.com>,
 <AccessGrant: role=READER, specialGroup=projectReaders>]
from google.cloud.logging.client import Client as lClient
lclient = lClient()
dest = 'bigquery.googleapis.com%s' %(ds.path)
sink = lclient.sink('sink_test', filter_='jsonPayload.project=project_name', destination=dest)
sink.create()

不太明白为什么会发生这种情况。当我使用 lclient.log_struct()时,我可以看到到达日志记录控制台中的日志,因此我确实可以访问StackDriver Logging。

此设置中是否有任何错误?

预先感谢。

创建水槽需要与编写日志条目不同的权限。默认情况下,给出了没有权限创建水槽的项目编辑器(不是所有者(。

请参阅访问控制文档中所需的权限列表。

确保您正在使用的服务帐户已有logging.sinks.create许可。最简单的方法是将服务帐户从编辑器转换为所有者,但是最好添加日志编辑器角色,因此您只需授予它所需的权限即可。

最新更新