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

标签 javascript node.js aws-lambda invoke

我正在尝试使用 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));
      }
    }
  );
});
}

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

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

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

  };

最佳答案

从 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"}

此架构在 here 中定义.

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

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

const payload = {
  pathParameters: data.consulteeId
}

关于javascript - 我可以使用 lambda 调用将路径参数传递给另一个 lambda 函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50342504/

相关文章:

javascript - 如何让按钮点击后转到页面的某个部分?

运行 grunt 后添加 %20(空格)的 Javascript URL 字符串

node.js - 为什么 Protractor 调试器范围内没有任何内容?

javascript - 在 Nodejs 和 Express 中使用 JQuery 需要帮助

python - AWS lambda AccessDeniedException 调用另一个 lambda 函数

javascript - 我想使用文件上传选项将多个图像路径保存到 mysql 数据库?我正在使用一个将其他数据输入数据库的表单

javascript - 异步系列 : variable number of callbacks

node.js - 范围内回调的最佳实践

amazon-s3 - 如何授予 lambda 权限将文件上传到 `terraform` 中的 s3 存储桶?

node.js - 在无服务器中创建 Lambda 权限