spring-boot - Spring boot + Big Query 使用错误的项目 ID
问题描述
所以总的来说,我对大查询和 gcp 有点陌生。
我正在尝试将数据发送到大查询,当它发送数据时,它会在它应该使用我的开发凭据时提取我的生产凭据。
应用程序-local.yml
spring:
config:
name: local
jpa:
show-sql: true
generate-ddl: true
hibernate:
ddl-auto: update
database-platform: org.hibernate.dialect.PostgreSQLDialect
datasource:
platform: postgres
url: jdbc:postgresql://localhost:5432/db_name
username: username
password: TestPass
driverClassName: org.postgresql.Driver
profiles:
active: local
application:
name: user-api
cloud:
gcp:
bigquery:
dataset-name: app-dev
project-id: app-dev
credentials:
location: classpath:google-dev.json
sql:
enabled: false
credentials:
encoded-key: [b64 credentials]
project-id: app-dev
config:
project-id: app-dev
启动日志显示它正在启动开发项目
2021-05-05 14:09:23.683 INFO 37046 --- [ main] o.s.c.g.a.c.GcpContextAutoConfiguration : The default project ID is app-dev
2021-05-05 14:09:23.707 INFO 37046 --- [ main] o.s.c.g.core.DefaultCredentialsProvider : Default credentials provider for service account server-dev@app.iam.gserviceaccount.com
2021-05-05 14:09:23.707 INFO 37046 --- [ main] o.s.c.g.core.DefaultCredentialsProvider : Scopes in use by default credentials: [https://www.googleapis.com/auth/pubsub, https://www.googleapis.com/auth/spanner.admin, https://www.googleapis.com/auth/spanner.data, https://www.googleapis.com/auth/datastore, https://www.googleapis.com/auth/sqlservice.admin, https://www.googleapis.com/auth/devstorage.read_only, https://www.googleapis.com/auth/devstorage.read_write, https://www.googleapis.com/auth/cloudruntimeconfig, https://www.googleapis.com/auth/trace.append, https://www.googleapis.com/auth/cloud-platform, https://www.googleapis.com/auth/cloud-vision, https://www.googleapis.com/auth/bigquery, https://www.googleapis.com/auth/monitoring.write]
当它实际尝试运行大查询插入时
2021-05-05 14:09:27.900 ERROR 37046 --- [ask-scheduler-1] o.s.integration.handler.LoggingHandler : com.google.cloud.bigquery.BigQueryException: Not found: Dataset app-prod:app-dev
at com.google.cloud.bigquery.spi.v2.HttpBigQueryRpc.translate(HttpBigQueryRpc.java:115)
at com.google.cloud.bigquery.spi.v2.HttpBigQueryRpc.insertAll(HttpBigQueryRpc.java:494)
at com.google.cloud.bigquery.BigQueryImpl.insertAll(BigQueryImpl.java:1036)
at ca.app.api.domain.repository.datalake.DataLakeInterface$DefaultImpls.save(DataLakeInterface.kt:27)
at ca.app.api.domain.repository.datalake.CycleEventDataLakeRepository.save(CycleEventDataLakeRepository.kt:12)
at ca.app.api.tasks.DataLakeSyncTasks.syncCycleEvents(DataLakeSyncTasks.kt:99)
at ca.app.api.tasks.DataLakeSyncTasks.syncDataLake(DataLakeSyncTasks.kt:71)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.springframework.scheduling.support.ScheduledMethodRunnable.run(ScheduledMethodRunnable.java:84)
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
at java.base/java.lang.Thread.run(Thread.java:832)
Caused by: com.google.api.client.googleapis.json.GoogleJsonResponseException: 404 Not Found
POST https://www.googleapis.com/bigquery/v2/projects/app-prod/datasets/app-dev/tables/cycle_event_table/insertAll?prettyPrint=false
{
"code" : 404,
"errors" : [ {
"domain" : "global",
"message" : "Not found: Dataset app-prod:app-dev",
"reason" : "notFound"
} ],
"message" : "Not found: Dataset app-prod:app-dev",
"status" : "NOT_FOUND"
}
我不知道它在哪里获取应用程序产品。唯一使用 app-prod 的地方是 application-prod.yml,它只有 prod 配置文件。auth 文件和 base64 密钥都只包含 app-dev。
解决方案
它可能在密钥文件 google-dev.json 中吗?
推荐阅读
- c++ - C++ Array of char* 复制问题
- npm - 为 npm ShowMore 组件添加样式以进行预览显示
- javascript - Javascript:为什么不能对象文字使用分配?
- php - Woocommerce 3 商店页面上添加到购物车下的添加额外按钮
- excel - 输入到 Powerpoint 时如何调整 Excel VBA 文本的大小?
- django - Django模板变量不显示
- python - gurobi python约束中的整数比较
- mysql - 在 LEFT JOIN 之前从左表中过滤数据
- python-3.x - 将系列转换为浮动熊猫
- css - 复制图像并设置悬停 CSS