Bigquery Terraform Schedule查询部署错误



下面是我的Bigquery地形主.tf文件中的代码

resource "google_bigquery_data_transfer_config" "config_queries" {
for_each = fileset("${path.module}/scheduled_queries", "*.sql")
depends_on = [google_bigquery_table.tables]
data_source_id = "scheduled_queries"
location=var.location
destination_dataset_id=google_bigquery_dataset.dataset.dataset_id
display_name = "config_queries_${substr(each.value, 0, length(each.value) -4)}"
schedule = "every 4 hours "
params = {
destination_table_name_template = substr(each.value,0,length(each.value) -4)
write_disposition = "WRITE_APPEND"
query = file("${path.module}/scheduled_queries/${each.value}")
}
}

我得到以下错误:

│错误:创建配置时出错:googleapi:错误404:找不到请求的实体。

如果单独运行sql文件,同样的代码也可以正常工作。任何建议

我将把这个社区答案留给大家看。如果不能反映实际答案,请随时更新。这是在paslandau提供的解决方案链接中找到的原始响应。

由于我花了一天的大部分时间来完成这项工作,以下是对我有效的快速指南:

  1. 此致,由于我花了一天的大部分时间来完成这项工作,以下是对我有效的快速指南:

在的Project-a中创建服务帐户

https://console.cloud.google.com/iam-admin/serviceaccounts?orgonly=true&project=Project-A

如果您已经有一个服务帐户,您可以在其json密钥文件中找到相应的项目id

{
"type": "service_account",
"project_id": "Project-A",
...
  1. 激活要通过在(项目B(创建转移作业的项目的大查询转移API

    https://console.cloud.google.com/marketplace/product/google/bigquerydatatransfer.googleapis.com?project=

  2. 将来自步骤1的服务帐户添加到具有角色的项目B";大查询管理员"通过https://console.cloud.google.com/iam-admin/iam?project=Project-B

  3. 尝试通过API创建一个转移作业(即"从您的代码"(。这将触发titel中提到的错误,其中还将包括Project-B的自动生成转账服务帐户,例如

400 P4 service account needs iam.serviceAccounts.getAccessToken permission. Running the following command may resolve this error: gcloud projects  add-iam-policy-binding <PROJECT_ID> --member='serviceAccount:service-<PROJECT_NUMBER>@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com'

复制传输服务帐户的名称,例如

  1. 将转账服务帐户添加到具有";服务帐户令牌创建者";通过

    https://console.cloud.google.com/iam-admin/iam?project=Project-

  2. 按照步骤4重新运行传输服务作业的创建。它现在应该成功了。

我也有同样的错误,但在创建一个计划查询时。事实证明,问题是我随意将data_source_id值更改为一些自定义字符串。在恢复到"0"之后;scheduled_query";字符串,正如可用示例中提供的那样,它起作用了。我相信上面提供的解决方案处理的是另一个问题(IAM(,在启用bigquerydatatransfer API后,可以通过使用应用了BigQuery Admin角色的显式服务帐户(service_account_nameTF参数(来简化IAM。