当前位置: 首页 > 知识库问答 >
问题:

如何创建BigQuery数据传输w/Python服务帐户?

谷梁翰飞
2023-03-14

我试图使用Python和google cloud BigQuery datatransfer在BigQuery中创建一个新的数据传输作业,但遇到了错误:

谷歌。api_核心。例外情况。PermissionDenied:403用户没有足够的权限:bigquery。转移。需要对项目ID进行更新

我在下面加入了我的代码,这不是很有趣。我在设置GOOGLE\u应用程序\u凭据=/path/to/secrets/service帐户时运行此程序。json。此服务帐户具有所有者状态,因为我认为提高其权限可能会使我通过权限错误。

现在我开始觉得这个API对服务帐户根本不起作用,还是我疯了?我在文档中看到了authorization\u codeCheckValidAuth,但它说它们是可选的。

Google BigQuery数据传输API是否适用于服务帐户?

import os
import boto3
from google.cloud import bigquery_datatransfer_v1
import google.protobuf.json_format

client = bigquery_datatransfer_v1.DataTransferServiceClient()

parent = client.project_path('PROJECT_ID')

transfer_config = {
    "destination_dataset_id": "neilo",
    "display_name": "NeilO Data Transfer Test",
    "data_source_id": "amazon_s3",
    "params": {
        "destination_table_name_template": "test_table",
        "data_path": "s3://bucket/path/to/files/*.csv.gz",
        "access_key_id": os.environ['AWS_ACCESS_KEY_ID'],
        "secret_access_key": os.environ['AWS_SECRET_ACCESS_KEY'],
        "file_format": "CSV"
    },
    "schedule": "daily"
}

transfer_config = google.protobuf.json_format.ParseDict(
    transfer_config, bigquery_datatransfer_v1.types.TransferConfig())

response = client.create_transfer_config(parent, transfer_config)

问题是

共有1个答案

陆和泰
2023-03-14

问题是我设置时输入错误的GOOGLE_APPLICATION_CREDENTIALS,所以我无意中使用了错误的服务号。我添加了以下代码来验证正确的项目:

from google.cloud import bigquery
assert bigquery.Client().project == 'PROJECT_ID'

我还使用编辑器的最小内置角色确保服务号具有bigquery.transfers.update权限:

 类似资料:
  • 我已经找到了如何为项目级别生成凭据的说明,但是没有明确的说明如何使用cli仅向特定数据集添加服务帐户。 我尝试创建服务帐户: 然后获取数据集: 然后在访问部分添加一个角色 然后更新它。它似乎起作用了,因为我能够创建一个表,但随后我遇到了一个拒绝访问错误

  • 如果这是配额限制的一个问题,我如何提高限制,以使数据传输为这些大型帐户工作?

  • null 我是不是漏了什么?或者,向谷歌请求这样做有意义吗? 官方文件中的栏目截图:

  • 问题内容: 我正在创建静态Web服务,我想知道我们如何创建带有输入参数的服务,以及如何从Web浏览器调用它。 例如 我可以使用http:// localhost:8088 / JerseyJAXB / rest / todo 调用它 我想创建一个像 在基于Soap的Web服务的情况下,我将这样调用它 http:// localhost:8088 / JerseyJAXB / rest / todo

  • 我将非常感谢任何答复以及文章,在您的意见可能有助于这里。提前谢谢你。

  • 假设您有两组服务器,第一组专用于前端,另一组专用于处理来自前端的信息。将数据从前端传输到流程服务器的最佳方式是什么; 我在少量数据上尝试了不同的技术: 谁能给我指明正确的方向吗?