2016-06-13 148 views
0

我们使用GoogleCloudPlatform进行大数据分析。对于处理,我们目前正在使用谷歌云数据插件& spark-streaming。Dataproc:通过REST API提交Spark作业

我想使用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> API管理

回答

2

虽然可以使用API​​密钥用于将调用与开发人员项目相关联,但实际上并未用于授权。 Dataproc的REST API与Google Cloud Platform中大多数其他可计费的REST API一样,使用oauth2进行身份验证和授权。如果您想以编程方式调用API,则可能需要使用其中一个客户端库,例如Java SDK for Dataproc,它提供了有关低级别JSON协议的便利包装,并为您提供了handy thick libraries for using oauth2 credentials

您也可以使用Google的API explorer试验直接REST API,您需要点击右上角的“使用OAuth 2.0授权请求”按钮。

我也注意到你在0123ap的Dataproc URI路径下使用了us-central1-f;请注意,Dataproc的地区不与计算引擎区域或地区一一对应;相反,Dataproc的区域将包含多个计算引擎区域或区域。目前,只有一个Dataproc区域可以公开使用,称为global,并且能够将群集部署到所有计算引擎区域。为便于说明使用了OAuth2访问令牌,你可以简单地使用与gcloud沿curl如果您已经安装了gcloud CLI:

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这里自然到期(约5分钟,如果我没记错的话);关键的概念是,您在每个请求的HTTP标头中传递的令牌通常都是“短期”令牌,并且通过设计,您将拥有代码,只要访问令牌在使用“刷新令牌”到期时分别获取新令牌“;这有助于防止意外损害长期凭证。这种“刷新”流程是厚实的auth库在底层处理的一部分。

相关问题