首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在气流中使用Google操作符设置范围

如何在气流中使用Google操作符设置范围
EN

Stack Overflow用户
提问于 2022-05-18 23:05:22
回答 1查看 350关注 0票数 1

我有一个任务使用GCSToGoogleSheetsOperator在气流中,在那里我试图添加数据到一个表。

我已将服务凭据电子邮件添加到要以编辑器权限编辑的工作表中,并收到以下错误:

代码语言:javascript
复制
googleapiclient.errors.HttpError: 
<HttpError 403 when requesting 
https://sheets.googleapis.com/v4/spreadsheets/<SHEET_ID>/values/Sheet1?valueInputOption=RAW&includeValuesInResponse=false&responseValueRenderOption=FORMATTED_VALUE&responseDateTimeRenderOption=SERIAL_NUMBER&alt=json 

returned "Request had insufficient authentication scopes.". 

    Details: "[{
'@type': 'type.googleapis.com/google.rpc.ErrorInfo', 
'reason': 'ACCESS_TOKEN_SCOPE_INSUFFICIENT', 
'domain': 'googleapis.com', 
'metadata': {
    'service': 'sheets.googleapis.com', 
    'method': 'google.apps.sheets.v4.SpreadsheetsService.UpdateValues'}
    }]>

我不能更新工作表,但是GCS和BigQuery操作符可以正常工作。

我的连接配置如下所示:

代码语言:javascript
复制
AIRFLOW_CONN_GOOGLE_CLOUD=google-cloud-platform://?extra__google_cloud_platform__key_path=%2Fopt%2Fairflow%2Fcredentials%2Fgoogle_credential.json

我试着按照使用说明添加作用域 https://www.googleapis.com/auth/spreadsheets

哪个URL编码如下:

代码语言:javascript
复制
AIRFLOW_CONN_GOOGLE_CLOUD=google-cloud-platform://?extra__google_cloud_platform__key_path=%2Fopt%2Fairflow%2Fcredentials%2Fgoogle_credential.json&extra__google_cloud_platform__scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fspreadsheets

现在,以前计算错误的操作符如下所示:

代码语言:javascript
复制
google.api_core.exceptions.Forbidden: 403 POST https://bigquery.googleapis.com/bigquery/v2/projects/my-project/jobs?prettyPrint=false: Request had insufficient authentication scopes.

GCSToGoogleSheetsOperator操作符仍然出现如下错误:

代码语言:javascript
复制
google.api_core.exceptions.Forbidden: 403 GET https://storage.googleapis.com/download/storage/v1/b/my-bucket/o/folder%2Fobject.csv?alt=media: Insufficient Permission: ('Request failed with status code', 403, 'Expected one of', <HTTPStatus.OK: 200>, <HTTPStatus.PARTIAL_CONTENT: 206>)

如何正确设置权限以同时使用BigQuery、GCS和Sheet运算符?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-19 19:42:25

添加一个作用域似乎忽略了IAM角色,所以它要么是一个角色,要么是另一个角色。

服务帐户具有访问GCS和BigQuery所需的角色,但是通过添加作用域https://www.googleapis.com/auth/spreadsheets,服务将忽略角色授予的特权,而只查看作用域指定的权限。

因此,要恢复它,必须同时添加spreadsheetcloud-platform作用域(或更严格的作用域)。cloud-platform将提供GCS、BigQuery和spreadsheets对Google的访问。

如果使用环境变量设置连接,则必须对参数进行URL编码,因此要创建GOOGLE_CLOUD连接,必须执行以下操作,这是没有编码的.

代码语言:javascript
复制
AIRFLOW_CONN_GOOGLE_CLOUD=google-cloud-platform://?extra__google_cloud_platform__key_path=/abs/path_to_file/credential.json&extra__google_cloud_platform__scope=https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/spreadsheets

要对您必须使用的版本进行编码,请替换/,:

代码语言:javascript
复制
AIRFLOW_CONN_GOOGLE_CLOUD=google-cloud-platform://?extra__google_cloud_platform__key_path=%2Fabs%2Fpath_to_file%2Fcredentials%2Fgoshare-driver-c08e0904285b.json&extra__google_cloud_platform__scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcloud-platform%2Chttps%3A%2F%2Fwww.googleapis.com%2Fauth%2Fspreadsheets
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72296888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档