2012-09-15 16 views
13

पर अपलोड करने के लिए gsutil के साथ सेवा खातों का उपयोग कैसे करें Google API कंसोल में बनाए गए सेवा खाते का उपयोग करके मैं Google BigQuery के साथ Google अपलोड कैसे कर सकता हूं?CS + BigQuery

सबसे पहले मैं gsutil का उपयोग कर क्लाउड स्टोरेज में डेटा अपलोड करने का प्रयास कर रहा हूं, जैसा कि यह अनुशंसित मॉडल प्रतीत होता है। सब कुछ जीमेल उपयोगकर्ता की मंजूरी के साथ ठीक काम करता है, लेकिन यह मुझे सेवा खाते का उपयोग करने की अनुमति नहीं देता है।

यह मैं पहुंच टोकन signed JWT credentials का उपयोग कर पाने के लिए अजगर एपीआई का उपयोग कर सकते हैं लगता है, लेकिन मैं पुन: प्रारंभ योग्य अपलोड आदि के लिए समर्थन के साथ gsutil की तरह एक कमांड लाइन उपकरण का उपयोग कर पसंद करेंगे

संपादित करें: मैं उपयोग करना चाहते हैं प्रत्येक रात क्लाउड स्टोरेज में फ़ाइलों को अपलोड करने के लिए एक क्रॉन में gsutil और फिर BigQuery पर आयात करें।

जाने के लिए कोई भी मदद या निर्देशों की सराहना की जाएगी।

+1

25 मार्च, 2013 तक, gsutil सेवा खातों का समर्थन करता है। नीचे माइक श्वार्टज़ से जवाब देखें: http://stackoverflow.com/a/15646928/92445 –

उत्तर

15

Google क्लाउड स्टोरेज ने बस एक नए संस्करण (3.26) जीएसयूटीआईएल को जारी किया जो सेवा खातों (साथ ही साथ कई अन्य फीचर्स और बग फिक्स) का समर्थन करता है। चलाकर

gsutil अद्यतन

संक्षेप में, आप एक सेवा खाता कॉन्फ़िगर कर सकते हैं:: आप पहले से ही gsutil स्थापित है, तो आप चलाकर इस संस्करण प्राप्त कर सकते

gsutil config -e

देखें " कॉन्फ़िगर कमांड का उपयोग करने के बारे में अधिक जानकारी के लिए gsutil help config "। Gsutil समर्थन करता है कि क्रेडेंशियल्स (और विभिन्न उपयोग मामलों) के विभिन्न स्वादों के बारे में जानकारी के लिए "gsutil सहायता क्रेडिट" देखें।

माइक श्वार्टज़, Google क्लाउड स्टोरेज टीम

4

सेवा खातों का उपयोग आमतौर पर अनुप्रयोगों की पहचान के लिए किया जाता है लेकिन जब gsutil का उपयोग करते हैं तो आप एक इंटरैक्टिव उपयोगकर्ता हैं और यह आपके व्यक्तिगत खाते का उपयोग करना अधिक स्वाभाविक है। आप अपने Google क्लाउड स्टोरेज संसाधनों को हमेशा अपने व्यक्तिगत खाते और/या सेवा खाते (एक्सेस कंट्रोल सूचियों या डेवलपर कंसोल टीम टैब के माध्यम से) से जोड़ सकते हैं, इसलिए मेरी सलाह आपके व्यक्तिगत खाते का उपयोग gsutil के साथ करना होगा और फिर सेवा खाते का उपयोग करना होगा आपके आवेदन के लिए

+0

यदि मैं उत्पादन वातावरण में क्रॉन नौकरी में इसका उपयोग करता हूं, तब मैं कंपनी छोड़ने पर क्या होगा? क्या क्रॉन नौकरी विफल हो जाएगी? – jonathan

+0

जोनाथन - हाँ, यदि आपका उपयोगकर्ता खाता अब मौजूद नहीं है तो यह असफल हो जाएगा। हमें gsutil के साथ सेवा खातों का समर्थन करना चाहिए, लेकिन अभी तक नहीं। आप यह कर सकते हैं: 1) शायद सेवा खातों के मौजूदा पायथन ओथ क्लाइंट कार्यान्वयन का उपयोग कर gsutil/oauth2_plugin/oauth2_helper.py में सुविधा को जल्दी से जोड़ें, या 2) बाहरी टोकन को पुनर्प्राप्त करें और इसे ~/.boto में निर्दिष्ट कैश स्थान में संग्रहीत करें , या 3) स्वयं भूमिका निभाएं (gmail.com या google ऐप्स के माध्यम से) और उस खाते को अनुमति दें और इसे ओथ प्रवाह के लिए उपयोग करें। –

+0

@RyanBoyd: धन्यवाद! क्या आप अपनी टिप्पणी को उत्तर के रूप में पोस्ट कर सकते हैं ताकि मैं इसे स्वीकार कर सकूं? – jonathan

3

सबसे पहले, आपको कमांड लाइन से BigQuery के साथ बातचीत करने के लिए bq कमांड लाइन टूल का उपयोग करना चाहिए। (इसके बारे में here पढ़ें और इसे here डाउनलोड करें)।

मैं मार्क के साथ सहमत हैं कि यह एक अच्छा विचार दोनों gsutil और bq, bq कमांड लाइन टूल सेवा खाते के उपयोग का समर्थन के साथ अपने व्यक्तिगत क्रेडेंशियल का उपयोग करने के लिए। सेवा खाता लेख का उपयोग करने के लिए आदेश इस तरह कुछ दिख सकता है।

bq --service_account [email protected] --service_account_credential_store keep_me_safe --service_account_private_key_file myfile.key query 'select count(*) from publicdata:samples.shakespeare' 

bq --help अधिक जानकारी के लिए टाइप करें।

पायथन या जावा के माध्यम से आपके कोड में सेवा खातों का उपयोग करना भी बहुत आसान है। BigQuery Authorization guide से कुछ कोड का उपयोग करके एक त्वरित उदाहरण यहां दिया गया है। एक जवाब के रूप

import httplib2 

from apiclient.discovery import build 
from oauth2client.client import SignedJwtAssertionCredentials 

# REPLACE WITH YOUR Project ID 
PROJECT_NUMBER = 'XXXXXXXXXXX' 
# REPLACE WITH THE SERVICE ACCOUNT EMAIL FROM GOOGLE DEV CONSOLE 
SERVICE_ACCOUNT_EMAIL = '[email protected]' 

f = file('key.p12', 'rb') 
key = f.read() 
f.close() 

credentials = SignedJwtAssertionCredentials(
    SERVICE_ACCOUNT_EMAIL, 
    key, 
    scope='https://www.googleapis.com/auth/bigquery') 

http = httplib2.Http() 
http = credentials.authorize(http) 

service = build('bigquery', 'v2') 
datasets = service.datasets() 
response = datasets.list(projectId=PROJECT_NUMBER).execute(http) 

print('Dataset list:\n') 
for dataset in response['datasets']: 
    print("%s\n" % dataset['id']) 
+0

आपकी मदद के लिए धन्यवाद। लेकिन मैं समझता हूं कि gsutil पुन: प्रयोज्य और भरोसेमंद अपलोड के लिए जाने का तरीका है। मैं इसे एक क्रॉन में उपयोग करना चाहता हूं और अपने व्यक्तिगत खाते पर निर्भर नहीं हूं (जब मैं अपनी कंपनी छोड़ूं तो क्या होता है?)। क्रॉन को काम करना जारी रखना है। – jonathan

+0

हां, gsutil क्लाउड स्टोरेज के साथ इंटरैक्ट करता है, और bq आपको क्लाउड स्टोरेज में बिगक्वियर में रहने वाले डेटा को लोड करने देगा। Gsutil और bq दोनों आपके OAuth2 प्रमाण-पत्रों को संग्रहीत करेंगे जो हर बार लॉग इन किए बिना स्क्रिप्ट को काम करने की अनुमति देंगे, और हां आप प्रत्येक बार उपयोगकर्ता इनपुट के बिना क्रॉन नौकरी चला सकते हैं। यदि आप अपनी स्क्रिप्ट में सेवा खातों का उपयोग करने का निर्णय लेते हैं, तो: (1) सेवा भंडारण बाल्टी के साथ-साथ स्वयं को शामिल करने के लिए अपनी स्टोरेज बाल्टी की अनुमतियां सेट करें (2) इस सेवा खाते का उपयोग बीक के साथ करें जैसा मैंने ऊपर वर्णित किया है। –

+0

कुछ अतिरिक्त कोड (ऊपर) –

2

पोस्टिंग के बजाय एक टिप्पणी, जोनाथन के अनुरोध के आधार

हाँ, एक OAuth अनुदान किसी एक उपयोगकर्ता द्वारा किए गए अब मान्य नहीं किया जाएगा उपयोगकर्ता अब मौजूद नहीं है। इसलिए, यदि आप अपने व्यक्तिगत खाते के साथ उपयोगकर्ता-आधारित प्रवाह का उपयोग करते हैं, तो यदि आप कंपनी छोड़ते हैं तो आपकी स्वचालित प्रक्रिया विफल हो जाएगी।

हमें gsutil के साथ सेवा खातों का समर्थन करना चाहिए, लेकिन अभी तक नहीं।

आप में से एक कर सकता है:

  1. शायद सेवा के मौजूदा अजगर OAuth क्लाइंट कार्यान्वयन खातों
  2. टोकन बाह्य के माध्यम से पहुंच पुनः प्राप्त का उपयोग कर gsutil/oauth2_plugin/oauth2_helper.py को जल्दी से सुविधा जोड़ने सेवा खाता प्रवाह और इसे ~/में निर्दिष्ट कैश स्थान में संग्रहीत करें।बोटो (थोड़ा हैकी)
  3. स्वयं भूमिका निभाएं (gmail.com या google ऐप्स के माध्यम से) और उस खाते की अनुमति दें और इसे OAuth प्रवाह के लिए उपयोग करें।

हमने gsutil के लिए सेवा खातों का समर्थन करने के लिए सुविधा अनुरोध दायर किया है, और टीम से प्रारंभिक सकारात्मक प्रतिक्रिया प्राप्त की है। (हालांकि ईटीए नहीं दे सकता)

+1

यह उत्तर अप्रचलित है, माइक के उत्तर को अद्यतित जानकारी के लिए देखें। – Benson

संबंधित मुद्दे