Javascript 我可以使用lambda调用将路径参数传递给另一个lambda函数吗?

Javascript 我可以使用lambda调用将路径参数传递给另一个lambda函数吗?,javascript,node.js,aws-lambda,invoke,Javascript,Node.js,Aws Lambda,Invoke,我正在尝试使用lambda invoke调用另一个lambda函数并从中获取响应。问题是另一个lambda函数需要将id作为路径参数(或查询字符串)发送。但我在lambda invoke中没有看到用于此的选项。如果我在有效负载中传递id,则另一个函数将在事件体中接收它,而不是作为路径参数。是否有一个现有的解决方案 这里是lambda函数中的一个函数,它调用另一个lambda函数,该函数接收作为查询字符串参数的数据 函数getWisIqLink(数据){ 常数有效载荷={ queryString

我正在尝试使用lambda invoke调用另一个lambda函数并从中获取响应。问题是另一个lambda函数需要将id作为路径参数(或查询字符串)发送。但我在lambda invoke中没有看到用于此的选项。如果我在有效负载中传递id,则另一个函数将在事件体中接收它,而不是作为路径参数。是否有一个现有的解决方案

这里是lambda函数中的一个函数,它调用另一个lambda函数,该函数接收作为查询字符串参数的数据

函数getWisIqLink(数据){ 常数有效载荷={ queryStringParameters:{ userId:data.userId, eventId:data.eventId, } }; 常量参数={ FunctionName:'咨询rest api开发人员WisiqClassGet', 调用类型:“请求响应”, 有效负载:JSON.stringify(有效负载) } 返回新承诺((解决、拒绝)=>{ //log(`Starting promiseInvoke InvokeAsync with ES6承诺包装器-${functionName}`); lambda.invoke(参数,(错误,数据)=>{ 如果(错误){ 拒绝(错误); }否则{ 解析(JSON.parse(data)); } } ); });
}您可以将Lambda作为ApiGatewayRequest调用。ApiGatewayRequest具有正文和标头。您可以在标题中传递参数。下面是代码

 public ApiGatewayProxyResponse invokeLambda(LambdaService lambda, Object data, Map<String, String> headers) 
{
     ApiGatewayRequest request = new ApiGatewayRequest();
     request.setBody(data);
     request.setHeaders(headers);
     ApiGatewayProxyResponse response = lambda.execute(request);
     return response.getBody();
}
public apigatewayproxysesponse invokeLambda(LambdaService lambda、对象数据、映射头)
{
ApiGatewayRequest=新的ApiGatewayRequest();
请求.实体(数据);
setHeaders(headers);
ApiGatewayProxyResponse=lambda.execute(请求);
返回response.getBody();
}

API网关代理集成对Lambda函数的输入如下所示

{
"resource": "Resource path",
"path": "Path parameter",
"httpMethod": "Incoming request's method name"
"headers": {Incoming request headers}
"queryStringParameters": {query string parameters }
"pathParameters":  {path parameters}
"stageVariables": {Applicable stage variables}
"requestContext": {Request context, including authorizer-returned key-value pairs}
"body": "A JSON string of the request payload."
"isBase64Encoded": "A boolean flag to indicate if the applicable request payload is Base64-encode"}
此架构在中定义

您的需求是将路径参数从一个lambda函数(比如lambda-A)传递到另一个lambda函数(比如lambda-B)。这意味着您的Lambda-A函数必须充当向Lambda-B发送上述格式请求的API网关

因此,您的Lambda-A函数应该创建“payload”对象(请参阅您附带的代码示例),如下所示。在Lambda-B中,您可以使用“event.pathParameters”访问路径参数


我不太明白你说的话。对不起,我在这方面缺乏知识。我相信这是您给出的java代码。我用NodeJs中的代码编辑了这个问题。你能建议我该怎么做吗?Lambda函数只接受两个输入,
事件
上下文
——而不是“路径参数”——因此不清楚第二个函数需要什么。你能给我们看一下密码吗?当然。我将编辑该问题以包含第二个函数。是,Lambda函数只接受事件和上下文。问题在于函数如何解码事件。对于通过路径参数接收事件数据的函数,它必须像module.exports.get=async function(event,context,callback){const data={id:event.pathParameters.id};非常感谢!!!这很有效。如果将来有人需要它,我已经更新了如何在函数中实现它的问题。
const payload = {
  pathParameters: data.consulteeId
}