2017-03-24 45 views
1

当社のサーバー上のアーカイブ用のログをダウンロードしたいGoogle App Engine(GAE)サービスがあります。Google Cloud Logging(Python)を使用した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ファイルでフィールドが期待される理由は何ですか?間違った種類のサービスアカウントの資格情報を使用していますか?

答えて

2

秘密鍵の資格情報を含むサービスアカウントファイルを取得する必要があります。基本的には、所有しているファイルとは異なるファイルです。 https://console.developers.google.com/iam-admin/iam/にアクセスしてプロジェクトを選択し、「サービスアカウント」を選択して、プロジェクトのロール "ビューア"として新しいものを作成します(またはすでに存在するものを使用してをクリックします)。

"キー"は、アカウントを作成するときにダウンロードされるjsonまたはp12ファイルです(または、そこに新しいキーを作成します)。正しいキーフィールドと資格情報が含まれていますあなたのコード。

(JSONを選択)ダウンロードした "キー" ファイルの例構造:

#!/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']) 
:その "鍵" ファイル(パイソン)を使用する

{ 
    "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": "[email protected]t.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" 
} 

サンプルコード

-1
{ 
    "type": "service_account", 
    "project_id": "", 
    "private_key_id": "", 
    "private_key": "-----BEGIN PRIVATE KEY----- 
something long here 
---END PRIVATE KEY-----\n", 
    "client_email": "", 
    "client_id": "", 
    "auth_uri": "", 
    "token_uri": "", 
    "auth_provider_x509_cert_url": "", 
    "client_x509_cert_url": "" 
} 
関連する問題