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

Yas*_*aka 4 javascript invoke node.js aws-lambda

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

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

function getWisIqLink(data) {
  const payload = {
    queryStringParameters: {
      userId: data.userId,
      eventId: data.eventId,
    }
  };
  const param = {
    FunctionName: 'consult-rest-api-dev-WisiqClassGet',
    InvocationType: "RequestResponse",
    Payload: JSON.stringify(payload)
  }

  return new Promise((resolve, reject) => {
  // console.log(`Starting promiseInvoke InvokeAsync with ES6 promise wrapper - ${functionName}`);
   lambda.invoke(param,(err, data) => {
      if (err) {
        reject(err);
      } else {
        resolve(JSON.parse(data));
      }
    }
  );
});
}
Run Code Online (Sandbox Code Playgroud)

这是一个接收数据作为查询字符串的 lambda 函数(不是接收数据作为路径参数的函数)

module.exports.get = async function (event, context, callback) {

  const data = {
    userId: event.queryStringParameters.userId,
    eventId: event.queryStringParameters.eventId,

  };
Run Code Online (Sandbox Code Playgroud)

Den*_*iri 9

API Gateway 代理集成对 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"}
Run Code Online (Sandbox Code Playgroud)

此架构在此处定义

您的要求是将路径参数从一个 lambda 函数(假设为 Lambda-A)传递到另一个 lambda 函数(假设为 Lambda-B)。这意味着您的 Lambda-A 函数必须充当 API 网关,将具有上述格式的请求发送到 Lambda-B。

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

const payload = {
  pathParameters: data.consulteeId
}
Run Code Online (Sandbox Code Playgroud)