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

GCP服务号-拒绝NodeJS脚本的访问

张星洲
2023-03-14

你好,我快绝望了。

我正在尝试使用Cron和NodeJS脚本将数据导入GoogleBigQuery。但我被拒绝访问错误:

Access Denied: Dataset arcane-pillar-XXX:MyProj: User does not have bigquery.datasets.get permission for dataset arcane-pillar-XXX:MyProj
  1. 我已经创建了一个服务帐户bq数据导入-user@arcane-支柱XXX。国际机械师协会。gserviceaccount。com
  2. 我创建了一个密钥,将其下载为JSON文件,并设置了环境变量
  3. 当我在本地机器上运行NodeJS脚本时,我得到了错误
  4. 我已经用Policy Troubleshooter测试了该帐户。故障排除程序说已授予该权限

我曾多次尝试重新创建该帐户,但都无济于事。我已经验证了没有项目不匹配,因为删除数据集时错误会发生变化。

有什么提示吗?

#!/usr/bin/env node
"use strict";

const {BigQuery} = require('@google-cloud/bigquery');

process.env["GOOGLE_APPLICATION_CREDENTIALS"] = "/etc/my-app/google-application-credentials.json";


const bq = new BigQuery();
const bqDataset = (await bq.dataset("TheDataset").get({ autoCreate: true }))[0]; // THIS LINE THROWS THE ERROR
const bqTable = (await bqDataset.table("TheTable").get({ autoCreate: true, schema: [ /* The BQ schema */ ] }))[0];

for await (const row of rows) { // Rows is a async generator (cursor in MySQL)
    await bqTable.insert(row);
}

共有1个答案

南门星河
2023-03-14

这是我们的公开文章,展示了向云应用编程接口进行身份验证的推荐方法

基于我们的公共文档,从服务号文件在应用程序中创建凭据。然后使用凭据使用BigQuery客户端库创建服务对象。

// Create a BigQuery client explicitly using service account credentials.
// by specifying the private key file.

const {BigQuery} = require('@google-cloud/bigquery');

const options = {
  keyFilename: 'path/to/service_account.json',
  projectId: 'my_project',
};

const bigquery = new BigQuery(options);
 类似资料:
  • 问题内容: 我有一个使用jQuery 1.4.2脚本的iframe。将相同的iframe注入到和站点中。jQuery脚本作为相对路径包含在主HTML文件中(例如/scripts/jquery-1.4.2.min.js)。 进行AJAX调用时,Internet Explorer拒绝访问。AJAX正在调用另一个子域,但是它使用的是正确的协议。所有其他浏览器都可以使用,但是Internet Explor

  • 我正在构建一个RMI应用程序,我有以下服务器类。然而,当我在eclipse中运行它时,我得到了以下异常。出了什么问题,我该如何解决?我花了两天时间在网上阅读类似的问题,但我找不到解决方法。我怀疑这与策略文件有关,但我不知道如何使用。另外,如果问题出在我的运行方式上,你能告诉我在eclipse中如何操作吗。 --

  • 拒绝服务(DoS)攻击是黑客企图使网络资源不可用的一种攻击。它通常会临时或无限地中断主机,让正常使用的用户无法访问目标服务。这些攻击通常针对托管在关键任务Web服务器(如银行,信用卡支付网关)上的服务。 DoS的症状 网络性能异常缓慢。 特定网站不可用。 无法访问任何网站。 收到的垃圾邮件数量大幅增加。 长期拒绝访问网络或任何互联网服务。 特定网站不可用。 动手实践 第1步 - 启动WebGoat

  • 我得到了这个错误。显然,我想使用ckfinder文件上传。 我已经设置了到. php。我已经看了访问拒绝(403)的PHP文件与Nginx PHP-FPM和我尝试了大部分(除了fix_pathinfo)没有运气。在我注意到错误消息中的脚本路径之前,来自connector.php的GET请求位于php/目录中。我认为问题是nginx看到这个目录名作为脚本,并试图运行它,不确定。 这是我的nginx服

  • 我读过类似的问题,答案都围绕着纠正这样的一行: 不幸的是,我读过的书中没有什么能解决这个问题。 在我的index.html中,我有: 在我的app.js im中使用: 当我访问该页时,控制台记录 LocalHost/:1拒绝应用来自“http://localhost:3000/public/css/style.css”的样式,因为它的MIME类型(“text/html”)不是受支持的样式表MIME

  • 我正在Nodejs(10)中编写一个云函数,并尝试访问这样一个秘密: 我在web控制台中创建了该机密,代码中使用的名称与现有机密的名称匹配。在云功能详细信息页面上,它指出服务帐户是PROJECT_ID@appspot.gserviceaccount,com,所以我添加了secretmanager。秘书助理角色。但是,每次我都会遇到同样的错误: <代码>错误:7 PERMISSION\u DENIE