设置和测试Lambda API的最佳方式是什么?
希望在Lambda中构建一个微服务。设置和测试Lambda API的最佳方式是什么?
我希望它可以通过HTTP请求访问,所以我相信我需要使用API网关对其进行配置。我不确定我是否应该使用API Gateway Proxy Request Event
或API Gateway Proxy Response Event
。
同样在验证用户方面,最好的方法是什么?
我想使用Auth0,所以用户本质上只是发送一个JWT的HTTP请求。
谢谢
我使用API网关代理请求。我配置Integration Request
使用Use Lambda Proxy integration
这将导致Integration Response
更新到Proxy integrations cannot be configured to transform responses.
然后我处理lambda函数本身的响应。例如,我将有一个成功的响应如下:
context.succeed({
statusCode: 200,
headers: { 'Content-Type': 'Application/json'},
body
});
并为预期失败的例子,我有:
context.succeed({
statusCode: 404,
headers: { 'Content-Type': 'Application/json'},
body: JSON.stringify({'Error': error})
});
注:注意我用的是很重要的context.succeed
错误处理,而不是context.fail
。
我在Node中本地开发了我的lambda,并使用lambda-local
和lambda-tester
的组合来调试/测试功能。例如,我会运行下面的命令在lambda和事件经过:
lambda-local -f ~/Desktop/lambdaNode/myNewAPI.js -e ~/Desktop/lambdaEvents/testEvent.json
一个例子事件将是这样的:
{
"queryStringParameters":
{
"param1": "1234567890",
"param2": "0987654321",
}
}
对于我的单元测试,我用lambda-tester
与摩卡沿如下:
const LambdaTester = require('lambda-tester');
describe('handle my new lambda: ',() => {
it('should do exactly what I expect',() => {
return LambdaTester(myNewAPI.handler)
.event(testEvents.newLambdaEvent)
.expectSucceed((result) => {
expect(result.statusCode).to.equal(200);
});
});
});
测试上面npm test
如果你设置为,否则只是mocha testFile
对于我的用例,身份验证的处理方式不同,因为它是一个内部API。对于你的情况,我认为智威汤逊是最好的方式,但我很抱歉无法提供更多信息。
有什么办法可以在本地开发吗?我看了一个npm包lambda-local,但找不到任何方式来测试lambda函数上的http请求。你在什么环境下开发你的脚本? – Stretch0