我想要一个名为GoalsFeed的lambda来使用AWS.Lambda调用另一个名为Goals的lambda。这似乎有效,除了两件事:
我不确定如何将标头传递给目标服务。
FunctionName是“myapp-goals-get”(又名Goals)但我想转到该服务的特定路径 - 下面显示的三条路径都是有效的,但我想指定“../owner/123”路径。
下面是我的第一个解决方法,有人可以帮我修改它以将“tenantid”作为标题传递并确保在调用“myapp-goals-get”时,它会将自己视为从路径调用“../owner/123”?
// fetch back all goals by userid
var lambda = new AWS.Lambda({
region: 'us-east-1'
});
var payload = {};
payload[ "userId" ] = "123";
payload[ "tenantid" ] = "1";
const params = {
FunctionName: 'myapp-goals-get',
InvocationType: "RequestResponse",
Payload: JSON.stringify(payload)
};
lambda.invoke( params, function(error, data) {
console.log( "data: %s", JSON.stringify( data ) );
if( error ) {
context.done( 'error', error );
}
else if( data.Payload )
{
context.succeed( data.Payload )
}
});
答案 0 :(得分:0)
处理此用例的正确方法是使用代理集成设置带有API-Gateway + Lambda的REST API(将所有HTTP标头/正文/转发到您的lambda函数)
然后,您可以在同一请求中链接或再次调用您的API。
答案 1 :(得分:0)
我的解决方案是简单地重置pathParameters并将Event传递给子lambda。
event.pathParameters = { };
event.pathParameters.id = 123;
const tdParms = {
FunctionName : 'mylambda',
Payload: JSON.stringify( event )
};
lambda.invoke( tdParms, function( error, data ) {
...
}