【问题标题】:Google cloud logging python script permission error谷歌云记录python脚本权限错误
【发布时间】:2020-09-23 02:23:50
【问题描述】:

您好,我正在尝试编写一个 python 脚本,该脚本完全符合以下命令的功能:

gcloud 日志记录读取“logName=projects/[project_name]/logs/[id]”

所以当我从 cli 运行该命令时,它不会给我任何错误,它会按预期输出日志。

但是当我运行我的 python 脚本时:

import argparse
import datetime  
import os
import sys
from pprint import pprint

from google.cloud import bigquery
from google.cloud import logging

assert "GOOGLE_APPLICATION_CREDENTIALS" in os.environ

def main():
    client = logging.Client()
    log_name = 'log_id'
    logger = client.logger(log_name)
    for entry in logger.list_entries():
        print(entry.payload)


if __name__ == "__main__":
    main()

我得到错误: google.api_core.exceptions.PermissionDenied: 403 调用者没有权限

我不知道在这里做什么,因为命令行运行,我显然有权限。 任何想法将不胜感激

【问题讨论】:

  • 这个脚本在哪里运行?本地? --> 您是否在 GOOGLE_APPLICATION_CREDENTIALS 环境变量上设置了任何路径?你跑了gcloud auth application-default login。在计算引擎/appengine/cloudfunction上;关联的服务帐号是否有正确的权限?
  • 它在 docker 容器中本地运行。我在 bashrc 文件中将 GOOGLE_APPLICATION_CREDENTIALS 设置为环境变量。我还没有运行 gcloud auth application-default login。但是,如果 gcloud 日志记录读取“logName=projects/[project_name]/logs/[id]”cli 命令有效。 python脚本不应该也运行吗?即使在尝试 gcloud auth application-default login 之后它也不会运行。
  • 不一定,因为 gcloud 可能会在您的许可而不是关联服务帐户密钥文件的许可下进行操作。您能否确认服务帐户具有正确的权限? .愚蠢的问题,在您的 docker 容器上,您是否绑定了包含您的密钥文件的卷?例如 -v local/path/to/keyfile.json:/tmp 然后相应地定义 var:GOOGLE_APPLICATION_CREDENTIALS=/tmp/keyfile.json
  • 可以肯定的是,只需运行 gcloud auth list 即可知道使用了哪个帐户。如果是您,则运行gcloud auth activate-service-account --key-file=/path/keyfile.json 并再次运行gcloud logging read... 以验证您确实可以在您的服务帐户的权限下阅读。 (最好从运行 python 脚本的容器中)
  • 你说得对,我的服务帐户权限无法读取日志。

标签: python logging google-cloud-platform cloud google-cloud-dataflow


【解决方案1】:

我了解到您正在尝试使用 Python 从 Cloud Logging 读取和显示您的日志。

根据你得到的错误代码:

错误:google.api_core.exceptions.PermissionDenied:403

我认为这来自身份验证问题。我想与您分享这些文档:写入、读取、删除和导出日志条目的 Python 快速入门 [1];和 GCE 实例上的身份验证 [2]。


[1]https://cloud.google.com/logging/docs/quickstart-python#linux

[2]https://googleapis.dev/python/google-api-core/latest/auth.html#using-google-compute-engine

【讨论】:

    猜你喜欢
    • 2018-11-25
    • 1970-01-01
    • 2015-05-02
    • 2017-12-26
    • 2017-12-24
    • 1970-01-01
    • 2018-11-03
    • 2021-12-15
    • 2021-06-16
    相关资源
    最近更新 更多