我试图使用Python和google cloud BigQuery datatransfer在BigQuery中创建一个新的数据传输作业,但遇到了错误:
谷歌。api_核心。例外情况。PermissionDenied:403用户没有足够的权限:bigquery。转移。需要对项目ID进行更新
我在下面加入了我的代码,这不是很有趣。我在设置GOOGLE\u应用程序\u凭据=/path/to/secrets/service帐户时运行此程序。json
。此服务帐户具有所有者状态,因为我认为提高其权限可能会使我通过权限错误。
现在我开始觉得这个API对服务帐户根本不起作用,还是我疯了?我在文档中看到了authorization\u code
和CheckValidAuth
,但它说它们是可选的。
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)
问题是
问题是我设置时输入错误的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
我将非常感谢任何答复以及文章,在您的意见可能有助于这里。提前谢谢你。
假设您有两组服务器,第一组专用于前端,另一组专用于处理来自前端的信息。将数据从前端传输到流程服务器的最佳方式是什么; 我在少量数据上尝试了不同的技术: 谁能给我指明正确的方向吗?