这个问题可能是由于在部署在GKE上的Node.js应用程序中,使用了无效的凭据导致的。以下是一个可能的解决方法,其中包含代码示例:
首先,确保你在GKE上的Node.js应用程序中正确设置了凭据。可以使用Google Cloud的Service Account密钥文件或者环境变量来提供凭据。
在应用程序的代码中,使用BigQuery Node.js客户端库来创建BigQuery客户端对象。确保在创建客户端对象时,正确设置凭据。以下是一个示例代码片段:
const { BigQuery } = require('@google-cloud/bigquery');
// 使用Service Account密钥文件来设置凭据
const bigquery = new BigQuery({
projectId: 'your-project-id',
keyFilename: '/path/to/service-account-key.json'
});
// 或者使用环境变量来设置凭据
const bigquery = new BigQuery({
projectId: 'your-project-id',
credentials: {
client_email: process.env.BQ_CLIENT_EMAIL,
private_key: process.env.BQ_PRIVATE_KEY
}
});
请注意,上述示例中的projectId
应替换为你的Google Cloud项目ID,而keyFilename
或credentials
应根据你的实际情况进行相应的设置。
// 假设你的HTTP请求体是一个JSON对象
const requestBody = {
// ...
};
// 将HTTP请求体转换为字符串
const requestBodyString = JSON.stringify(requestBody);
// 调用BigQuery的相关方法,并在其中传递正确的HTTP请求体
const [rows] = await bigquery.query({
query: 'SELECT * FROM your_table',
params: { requestBody: requestBodyString }
});
在上述示例中,我们将HTTP请求体转换为字符串,并将其作为参数传递给BigQuery的查询方法。
通过上述步骤,你可以确保在部署在GKE上的Node.js应用程序中,正确设置了凭据,并在调用BigQuery相关方法时传递了正确的HTTP请求体。这将帮助解决从Util.parseHttpRespBody
处出现无效凭据的问题。