2016-08-12 1 views
4

ich dieses Tutorial bin nach einer Datei in einen Eimer laden ich manuell erstellt haben: https://cloud.google.com/storage/docs/xml-api/gspythonlibraryCloud Storage: Wie Setup-Dienstkonto Anmeldeinformationen für Python Boto Bibliothek

ich scheinen Probleme zu haben, mit der Einrichtung Anmeldeinformationen sowohl als Dienstkonto oder Benutzerkonto. Ich möchte dies in einem Webserver verwenden, daher sollte es idealerweise mit einem Dienstkonto eingerichtet werden.

Ich habe eine API mit API Manager in der Konsole erstellt und die JSON heruntergeladen. Inzwischen ist meine gcloud-auth mit meinem OAUTH-Login eingerichtet. Ich habe versucht gsutil config -e und bekam Fehler:

CommandException: OAuth2 is the preferred authentication mechanism with the Cloud SDK. Run "gcloud auth login" to configure authentication, unless you want to authenticate with an HMAC access key and secret, in which case run "gsutil config -a". 

Ich habe auch versucht mit dem Dienstkonto zu authentifizieren: gcloud auth activate-service-account --key-file <json file>

aber noch kein Glück mit Zugang mit Python Boto ermöglicht. Ich habe auch die ID und den Schlüssel von ~/.config/gcloud/ zu ~/.boto kopiert, aber das hat auch nicht funktioniert. Ich bin mir nicht sicher, wie ich die Authentifizierung für den Python-Server für den Zugriff auf Cloud-Speicher einrichten soll. Ich verwende nicht App Engine, sondern Cloud Compute, um den Webserver einzurichten.

Hier sind meine Quellcode:

import boto 
import gcs_oauth2_boto_plugin 
import os 
import shutil 
import StringIO 
import tempfile 
import time 

CLIENT_ID = 'my client id from ~/.config/gcloud/credentials' 
CLIENT_SECRET = 'my client secret from ~/.config/gcloud/credentials' 
gcs_oauth2_boto_plugin.SetFallbackClientIdAndSecret(CLIENT_ID, CLIENT_SECRET) 

uri = boto.storage_uri('', 'gs') 
project_id = 'my-test-project-id' 
header_values = {"x-test-project-id": project_id} 
# If the default project is defined, call get_all_buckets() without arguments. 
for bucket in uri.get_all_buckets(headers=header_values): 
    print bucket.name 

Neue Fehler:

Traceback (most recent call last): 
    File "upload/uploader.py", line 14, in <module> 
    for bucket in uri.get_all_buckets(headers=header_values): 
    File "/Users/ankitjain/dev/metax/venv/lib/python2.7/site-packages/boto/storage_uri.py", line 574, in get_all_buckets 
    return conn.get_all_buckets(headers) 
    File "/Users/ankitjain/dev/metax/venv/lib/python2.7/site-packages/boto/s3/connection.py", line 444, in get_all_buckets 
    response.status, response.reason, body) 
boto.exception.GSResponseError: GSResponseError: 403 Forbidden 
<?xml version='1.0' encoding='UTF-8'?><Error><Code>InvalidSecurity</Code><Message>The provided security credentials are not valid.</Message><Details>Incorrect Authorization header</Details></Error> 
+0

Wohin läuft Ihr Code? Wenn es sich um GCE oder GAE handelt, ist Google Application Default Credentials der empfohlene Ansatz für die Authentifizierung. https://developers.google.com/identity/protocols/application-default-credentials – Dagang

+0

Ich möchte diesen Code auf GCE ausführen, habe aber auch eine lokale Entwicklungsumgebung. Die Dokumentation beschreibt nicht, wie es für lokale Umgebung funktioniert – Ankit

+0

Ist das, was Sie gesucht haben https://cloud.google.com/compute/docs/api/how-tos/authorisation#gcloud_auth_login – Dagang

Antwort

0

Okay, nach einigen weiteren Versuchen gab ich zur Verwendung von GCE-Bibliothek auf, um Daten an Cloud Storage zu. Ich fand tatsächlich, dass die Verwendung von AWS Boto zum Hochladen in Cloud-Speicher viel besser funktioniert. Alles, was ich tun musste, war die Google-Host in s3 Bibliothek angeben:

conn = boto.connect_s3(app.config['S3_KEY'], app.config['S3_SECRET'], "c.storage.googleapis.com") 
bucket = conn.get_bucket(app.config['S3_BUCKET'], validate=False) 

ich die HMAC-Anmeldeinformationen verwendet, um die Art und Weise in der Google Text & Tabellen beschrieben erzeugt. Referenz: https://cloud.google.com/storage/docs/migrating

+0

Warten Sie, so verwenden Sie die Google-Schlüssel und Geheimnis? – frmsaul

Verwandte Themen