2016-06-13 4 views
0

大規模な分析にGoogleCloudPlatformを使用しています。処理のためにGoogleでは現在google cloud dataproc & spark-streamingを使用しています。Dataproc:REST APIを使用してスパークジョブを送信

REST APIを使用してSparkジョブを送信したいのですが、api-keyを使用してURIを呼び出すときに、以下のエラーが表示されます。

{ 
    "error": { 
    "code": 403, 
    "message": "The caller does not have permission", 
    "status": "PERMISSION_DENIED" 
    } 
} 

URI: - https://dataproc.googleapis.com/v1/projects/orion-0010/regions/us-central1-f/clusters/spark-recon-1?key=AIzaSyA8C2lF9kT ************* SGxAipL0

APIキーを使用することができますが、私はGoogleのコンソール> APIマネージャから

答えて

2

をAPIを作成しました呼び出しを開発者プロジェクトに関連付けるために、実際には承認に使用されません。 DataprocのREST APIは、Google Cloud Platform内のその他の請求可能なREST APIと同様に、oauth2を認証と承認に使用します。プログラムでAPIを呼び出す場合は、のようなクライアントライブラリの1つを使用して、低レベルのJSONプロトコルの便利なラッパーを提供すると同時に、handy thick libraries for using oauth2 credentialsを指定することもできます。

GoogleのAPI explorerを使用して直接REST APIを試すこともできます。ここでは、右上の[OAuth 2.0を使用してリクエストを承認する]ボタンをクリックする必要があります。

私はdataproc URIのregions/パスの下でus-central1-fを使用していることに気付きました。 Dataprocの地域は、Compute Engineのゾーンや地域と1対1で対応していないことに注意してください。むしろ、Dataprocの地域にはそれぞれ複数のCompute Engineゾーンまたは地域が含まれます。現在公開されているDataproc領域は1つだけです。これはglobalと呼ばれ、すべてのCompute Engineゾーンにクラスタを展開できます。程度に(

PROJECT='<YOUR PROJECT HERE>' 
ACCESS_TOKEN=$(gcloud beta auth application-default print-access-token) 
curl \ 
    --header "Authorization: Bearer ${ACCESS_TOKEN}" \ 
    --header "Content-Type: application/json" \ 
    https://dataproc.googleapis.com/v1/projects/${PROJECT}/regions/global/clusters 

は、自然の有効期限が切れることにより、ACCESS_TOKENが、ここでのgcloudによって印刷されたことに留意してください:あなたはgcloud CLIがインストールされている場合のOAuth2アクセストークンを使用しての簡単な説明のために、あなたは、単にgcloudとともにcurlを使用することができます私が正しく覚えていれば5分。基本的な考え方は、リクエストごとにHTTPヘッダーで渡すトークンは一般的に「短命」トークンであり、アクセストークンが「リフレッシュトークン」を使用して期限切れになるたびに新しいトークンを個別にフェッチするコードを持つことです";誤って長寿命の資格情報を侵害するのを防ぐのに役立ちます。この「リフレッシュ」フローは、厚い認証ライブラリがボンネットの下で処理するものの一部です。

関連する問題