google-app-engine - 使用 Google Cloud Logging (Python) 访问 GAE 日志文件

标签 google-app-engine google-cloud-platform

我们有一个正在运行的 Google App Engine (GAE) 服务,我们想下载它的日志以便在我们的服务器上存档。

GAE 有一个服务帐户,其凭证已作为 JSON 文件下载到我们的服务器。以下代码在我们的服务器上运行,尝试为日志服务创建客户端:

from google.cloud import logging
client = logging.Client.from_service_account_json('credentials.json')

结果:

ValueError: Service account info was not in the expected format, missing fields token_uri, client_email.

错误消息很清楚,但不清楚的是为什么在为此目的创建的 JSON 文件中需要这些字段?我们是否使用了错误类型的服务帐户的凭据?

最佳答案

您需要获取包含私钥凭据的服务帐户文件,它基本上与您拥有的文件不同。 你可以得到它,或者通过转到 https://console.developers.google.com/iam-admin/iam/ 获得一个新的然后选择你的项目,然后选择“服务帐户”并创建一个新的作为项目的角色“查看者”例如(或使用已经存在的并单击“创建新 key ")

“ key ”是一个 json 或 p12 文件,当您创建帐户(或在那里使用“创建新 key ”)时将下载该文件,其中包含适用于您的代码的正确字段和凭据。

下载的“ key ”文件的示例结构(选择 JSON 时):

{
  "type": "service_account",
  "project_id": "zeta-handler-9999",
  "private_key_id": "123456789deedbeaf",
  "private_key": "-----BEGIN PRIVATE KEY-----\nREDACTED REDACTED...-----END PRIVATE KEY-----\n",
  "client_email": "projectname-service-account@zeta-handler-9999.iam.gserviceaccount.com",
  "client_id": "12345678909999",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://accounts.google.com/o/oauth2/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/projectname-service-account%40zeta-handler-9999.iam.gserviceaccount.com"
}

使用该“ key ”文件的示例代码(python):

#!/usr/bin/env python
import google.auth
from google.oauth2 import service_account

credentials = service_account.Credentials.from_service_account_file('downloaded_key.json')
scoped_credentials = credentials.with_scopes(['https://www.googleapis.com/auth/drive.metadata.readonly'])

关于google-app-engine - 使用 Google Cloud Logging (Python) 访问 GAE 日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43004904/

相关文章:

google-app-engine - 按引用过滤

google-app-engine - 有没有办法取消 Google App Engine 中的流量迁移?

google-cloud-platform - Google OCR 语言提示

Node.js AWS-SDK SQS 内存泄漏

google-app-engine - Google App Engine灵活部署抛出错误: (gcloud. app.deploy)HttpError访问

python - 谷歌云语音到文本语法将结果缩小到数字?

google-app-engine - 如何在 GAE 中接收配额警报

java - JPA : Create multiple parent, GAE 上的独生子女关系

java - FileService 处理大文件时内存不足

Java Google App Engine 数据存储区放置/获取