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)
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)
| 归档时间: |
|
| 查看次数: |
8969 次 |
| 最近记录: |