云函数和 jwt Google 令牌请求
cloud function and jwt Google token request
我知道我应该使用云功能服务帐户来访问我的 bigquery,但对于我的特定需求,我想选择我的服务帐户。
所以我决定生成一个令牌并将此令牌与 Google JWT 客户端一起使用。代码(我在 Google 示例库中重试)在本地运行良好,但当我尝试部署 gcloud 时出现错误。我不明白为什么,我不知道探索什么方法来解决这个问题。
const {JWT} = require('google-auth-library');
exports.getGoogleToken = (req,res) => {
const client = new JWT(
key.client_email,
null,
key.private_key,
['https://www.googleapis.com/auth/cloud-platform','https://www.googleapis.com/auth/bigquery','https://www.googleapis.com/auth/bigquery.insertdata']
);
await client.authorize();
const url = `https://www.googleapis.com/bigquery/v2/projects`;
const response = await client.request({url});
authorization=response.config.headers.Authorization;
res.status(200).send(authorization);
}
要部署函数,我使用以下语法:
gcloud functions deploy getGoogleToken --region=europe-west1 --memory=128MB --trigger-http --timeout=60
我得到这个错误:
**ERROR**: (gcloud.functions.deploy) OperationError: code=3, message=Function
load error: Code in file index.js can't be loaded.
Is there a syntax error in your code?
Detailed stack trace: /user_code/index.js:32
await client.authorize();
^^^^^^
SyntaxError: Unexpected identifier
at createScript (vm.js:56:10)
at Object.runInThisContext (vm.js:97:10)
at Module._compile (module.js:549:28)
at Object.Module._extensions..js (module.js:586:10)
at Module.load (module.js:494:32)
at tryModuleLoad (module.js:453:12)
at Function.Module._load (module.js:445:3)
at Module.require (module.js:504:17)
at require (internal/module.js:20:19)
at getUserFunction (/var/tmp/worker/worker.js:388:24)
我想 Google 云函数不支持该库,但它是一个 Google 库?
有人可以帮我吗?
祝你有美好的一天
非常抱歉,如果有人问同样的问题,请阅读。
目前云函数正在使用 nodejs 版本 6,此代码使用 await/async 需要更高版本的 nodejs。
您可以使用 beta 解决此问题(小心 beta 意味着没有保证和 SLA)
部署语法是这样的:
gcloud beta functions deploy [functionName] --runtime nodejs8
将 [functionName] 替换为您的函数名称。
请注意语法中第二位的单词 "beta"。
我知道我应该使用云功能服务帐户来访问我的 bigquery,但对于我的特定需求,我想选择我的服务帐户。
所以我决定生成一个令牌并将此令牌与 Google JWT 客户端一起使用。代码(我在 Google 示例库中重试)在本地运行良好,但当我尝试部署 gcloud 时出现错误。我不明白为什么,我不知道探索什么方法来解决这个问题。
const {JWT} = require('google-auth-library');
exports.getGoogleToken = (req,res) => {
const client = new JWT(
key.client_email,
null,
key.private_key,
['https://www.googleapis.com/auth/cloud-platform','https://www.googleapis.com/auth/bigquery','https://www.googleapis.com/auth/bigquery.insertdata']
);
await client.authorize();
const url = `https://www.googleapis.com/bigquery/v2/projects`;
const response = await client.request({url});
authorization=response.config.headers.Authorization;
res.status(200).send(authorization);
}
要部署函数,我使用以下语法:
gcloud functions deploy getGoogleToken --region=europe-west1 --memory=128MB --trigger-http --timeout=60
我得到这个错误:
**ERROR**: (gcloud.functions.deploy) OperationError: code=3, message=Function
load error: Code in file index.js can't be loaded.
Is there a syntax error in your code?
Detailed stack trace: /user_code/index.js:32
await client.authorize();
^^^^^^
SyntaxError: Unexpected identifier
at createScript (vm.js:56:10)
at Object.runInThisContext (vm.js:97:10)
at Module._compile (module.js:549:28)
at Object.Module._extensions..js (module.js:586:10)
at Module.load (module.js:494:32)
at tryModuleLoad (module.js:453:12)
at Function.Module._load (module.js:445:3)
at Module.require (module.js:504:17)
at require (internal/module.js:20:19)
at getUserFunction (/var/tmp/worker/worker.js:388:24)
我想 Google 云函数不支持该库,但它是一个 Google 库?
有人可以帮我吗?
祝你有美好的一天
非常抱歉,如果有人问同样的问题,请阅读。
目前云函数正在使用 nodejs 版本 6,此代码使用 await/async 需要更高版本的 nodejs。 您可以使用 beta 解决此问题(小心 beta 意味着没有保证和 SLA)
部署语法是这样的:
gcloud beta functions deploy [functionName] --runtime nodejs8
将 [functionName] 替换为您的函数名称。 请注意语法中第二位的单词 "beta"。