2016-07-31 87 views
0

我想創建一個在非默認服務帳戶下運行的數據集羣。一個計算實例以下工作:在Google Cloud dataproc中使用非默認服務帳戶

gcloud compute instances create instance-1 --machine-type "n1-standard-1" --zone "europe-west1-b" --scopes [email protected]="https://www.googleapis.com/auth/cloud-platform" 

但是,創造一個dataproc實例一樣--scopes參數失敗:

gcloud dataproc clusters create --zone "europe-west1-b" --scopes [email protected]="https://www.googleapis.com/auth/cloud-platform" testdataproc12345 

ERROR: (gcloud.dataproc.clusters.create) Invalid service account scope: '[email protected]= https://www.googleapis.com/auth/cloud-platform '

是否有可能在一個非默認的服務帳戶運行dataproc ?

回答

1

不幸的是,目前沒有辦法使用正常的「範圍和元數據」 - 介導的身份驗證設置來指定自定義服務帳戶。這是一個已知的功能請求,但是,它應該在未來的Dataproc更新中可用。

與此同時,即使您在使用Dataproc時不能禁用「存儲器讀/寫」作用域的存在以及默認的GCE服務帳戶,您也可以使Hadoop端通過密鑰文件使用特定的服務帳戶使用「創建密鑰」的IAM & Admin > Service accounts頁下的選項以獲得您的服務帳戶JSON密鑰文件,然後做兩件事情:

  1. 在羣集創建時添加以下屬性:

    --properties core:fs.gs.auth.service.account.json.keyfile=/etc/hadoop/conf/my-service-account.json 
    
  2. 使用將您的JSON密鑰文件複製到節點的初始化操作;請注意,這仍然意味着您的JSON密鑰文件必須可以作爲閱讀器訪問GCE默認服務帳戶,並且有權訪問JSON密鑰文件的GCS位置的任何人也可以代表該服務帳戶進行操作,因此您仍然需要保持項目的安全。

    #!/bin/bash 
    # Save this somewhere as gs://somepath/my-keyfile-setup.sh 
    
    gsutil cp gs://path/to/your/json/file/in/gcs/my=service-account.json \ 
        /etc/hadoop/conf/my-service-account.json 
    

    然後應用初始化動作:

    gcloud dataproc clusters create --initialization-actions gs://somepath/my-keyfile-setup.sh ... 
    
相關問題