我是 Google Cloud 和 BigQuery 的新手。我查看了其他十几个似乎相关的问题,但没有看到我从这些答案中遗漏了什么。我正在尝试查询公共数据集。
错误:
Caused by: com.google.api.client.googleapis.json.GoogleJsonResponseException: 403 Forbidden
{
"code" : 403,
"errors" : [ {
"domain" : "global",
"message" : "Access Denied: Project airy-advantage-235802: The user kafka-learning@airy-advantage-235802.iam.gserviceaccount.com does not have bigquery.jobs.create permission in project airy-advantage-235802.",
"reason" : "accessDenied"
} ],
"message" : "Access Denied: Project airy-advantage-235802: The user kafka-learning@airy-advantage-235802.iam.gserviceaccount.com does not have bigquery.jobs.create permission in project airy-advantage-235802."
}
at com.google.api.client.googleapis.json.GoogleJsonResponseException.from(GoogleJsonResponseException.java:150)
at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:113)
at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.newExceptionOnError(AbstractGoogleJsonClientRequest.java:40)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest$1.interceptResponse(AbstractGoogleClientRequest.java:401)
at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:1132)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:499)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.executeUnparsed(AbstractGoogleClientRequest.java:432)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:549)
at com.google.cloud.bigquery.spi.v2.HttpBigQueryRpc.create(HttpBigQueryRpc.java:183)
我做了什么:
- 创建了新的 Google Cloud 帐户
- 创建了新项目,Google 为其分配了项目 ID airy-advantage-235802,项目名称为 Kafka Learning。
- 创建了一个服务帐户 kafka-learning@airy-advantage-235802.iam.gserviceaccount.com
- 授予该用户项目中的 BigQuery Admin 角色(我最初尝试使用 BigQuery User 和 BigQuery Data Viewer)
- 我将 JSON 凭据文件保存到本地文件夹
- 我将环境变量设置
GOOGLE_APPLICATION_CREDENTIALS
为 JSON 文件的路径 - 我有一个小型 Java 项目来查询公共数据集
- 收到上述错误
- 已启用验证计费(据我所知,见下文)
我错过了一步吗?
var bigquery = BigQueryOptions.getDefaultInstance().getService();
var query = "SELECT * FROM `bigquery-public-data.google_analytics_sample.ga_sessions_20160801` LIMIT 10";
var queryConfig = QueryJobConfiguration.newBuilder(query).build();
var table = bigquery.query(queryConfig);
我还尝试通过将构建器更改为此显式设置项目 ID(也在 json 文件中):
var bigquery = BigQueryOptions.newBuilder().setProjectId("airy-advantage-235802").build().getService();