想要在Lambda中构建微服务。
我希望它可以通过HTTP请求访问,所以我相信我需要使用API网关进行配置。我不确定是否应该使用API Gateway Proxy Request Event
或API Gateway Proxy Response Event
。
另外,在验证用户方面,最好的方法是什么?
我在考虑使用Auth0,因此用户基本上只需发送带有HTTP请求的JWT。
由于
答案 0 :(得分:1)
我使用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
和mocha,如下所示:
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
对其进行测试,否则只需RsaKeyPairGenerator
对于我的用例,身份验证的处理方式不同,因为它是内部API。对于你的情况,我认为JWT是前进的最好方式,虽然我很抱歉我无法提供更多这方面的信息。