云任务创建:错误:3 INVALID_ARGUMENT:请求包含无效参数
Posted
技术标签:
【中文标题】云任务创建:错误:3 INVALID_ARGUMENT:请求包含无效参数【英文标题】:Cloud Task Creation : Error: 3 INVALID_ARGUMENT: Request contains an invalid argument 【发布时间】:2020-12-16 13:15:26 【问题描述】:我正在关注这个教程:https://cloud.google.com/tasks/docs/tutorial-gcf
创建一个调用云函数的任务。
我已经做了很多尝试,仍然得到这个错误:
如果我将正文编码更改为其他内容,我会收到另一个关于序列化方法的错误。
这可能不是权限问题,因为我之前遇到过一些并摆脱了它。
传递给 createTask() 的对象如下:
task:
httpRequest:
url: "https://europe-west1-project_id.cloudfunctions.net/FunctionName"
httpMethod: "POST"
oidcToken:
serviceAccountEmail: "cf-targetFunctionSA@project_id.gserviceaccount.com"
body: ""
headers:
Content-Type: "application/json"
(或带有正文:base64 编码的 json 字符串。)
我使用的代码如下:
'use strict';
const common = require('./common');
const v2beta3 = require('@google-cloud/tasks');
const cloudTasksClient = new v2beta3.CloudTasksClient();
let projectName = common.getProjectName();
let location = "europe-west3";
let queue = "compute-stats-on-mysql";
const parent = cloudTasksClient.queuePath(projectName, location, queue);
async function createTask(url, serviceAccount, data)
const dataBuffer = Buffer.from(JSON.stringify(data)).toString('base64');
const task =
httpRequest:
httpMethod: 'POST',
url:url,
oidcToken:
serviceAccountEmail: serviceAccount,
,
headers:
'Content-Type': 'application/json',
,
body:dataBuffer,
,
;
try
// Send create task request.
common.logDebug(`Before creating task`, parent:parent,task:task, data:data);
const [response] = await cloudTasksClient.createTask(parent, task);
common.logDebug(`Created task $response.name`, parent:parent,task:task, response:response, data:data);
return response;
catch (error)
// Construct error for Stackdriver Error Reporting
console.error("error while creating tasks",error);
module.exports =
createTask : createTask,
cloudTasksClient:cloudTasksClient
;
错误中缺乏细节让我撞到了墙盲......
有什么建议吗?
【问题讨论】:
【参考方案1】:我的服务帐户缺少一部分...
原来是这样
"cf-"+functionName+"@"+projectName+".gserviceaccount.com";
而不是
"cf-"+functionName+"@"+projectName+".iam.gserviceaccount.com";
我在无数次测试中省略了“.iam”以使其正常工作。
当然,错误消息还有改进的余地。
【讨论】:
【参考方案2】:我有同样的问题。在您的情况下,我认为任务参数中没有属性 scheduleTime。 对我来说, scheduleTime.seconds 的值是错误的。
【讨论】:
以上是关于云任务创建:错误:3 INVALID_ARGUMENT:请求包含无效参数的主要内容,如果未能解决你的问题,请参考以下文章
出现错误类型错误:create_task() 需要 1 到 2 个位置参数,但在创建谷歌云任务时给出了 3 个
云原生之Docker实战使用Docker部署Taskover开源个人任务管理工具
使用云祺虚拟机备份软件瞬时恢复Citrix XenServer 虚拟机