Amazon web services 设置和测试Lambda API的最佳方法是什么?
想要在Lambda内部建立一个微服务 我希望它可以通过HTTP请求访问,因此我认为需要使用API网关对其进行配置。我不确定是否应使用Amazon web services 设置和测试Lambda API的最佳方法是什么?,amazon-web-services,lambda,aws-api-gateway,Amazon Web Services,Lambda,Aws Api Gateway,想要在Lambda内部建立一个微服务 我希望它可以通过HTTP请求访问,因此我认为需要使用API网关对其进行配置。我不确定是否应使用API网关代理请求事件或API网关代理响应事件 另外,在验证用户方面,最好的方法是什么 我正在考虑使用Auth0,这样用户基本上只需发送带有HTTP请求的JWT 谢谢我使用API网关代理请求。我将集成请求配置为使用使用Lambda代理集成,这将导致集成响应更新为代理集成无法配置为转换响应。 然后,我在lambda函数本身中处理响应。例如,我将获得以下成功响应: co
API网关代理请求事件
或API网关代理响应事件
另外,在验证用户方面,最好的方法是什么
我正在考虑使用Auth0,这样用户基本上只需发送带有HTTP请求的JWT
谢谢我使用API网关代理请求。我将
集成请求
配置为使用使用Lambda代理集成
,这将导致集成响应
更新为代理集成无法配置为转换响应。
然后,我在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})
});
注意:重要的是要注意我使用了上下文。在错误处理上成功
,而不是上下文。失败
我在节点中本地开发了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
对于我的用例,身份验证的处理方式不同,因为它是一个内部API。对于您的情况,我认为JWT是最好的解决方法,尽管很抱歉,我无法提供这方面的更多信息。我使用API网关代理请求。我将
集成请求
配置为使用使用Lambda代理集成
,这将导致集成响应
更新为代理集成无法配置为转换响应。
然后,我在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})
});
注意:重要的是要注意我使用了上下文。在错误处理上成功
,而不是上下文。失败
我在节点中本地开发了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
对于我的用例,身份验证的处理方式不同,因为它是一个内部API。就你的情况而言,我认为JWT是最好的方法,尽管很抱歉,我无法提供这方面的更多信息。有没有办法在当地发展这一点?我查看了一个npm包lambda local,但找不到任何方法来测试lambda函数上的http请求。你是在什么环境下开发脚本的?有没有办法在本地开发?我查看了一个npm包lambda local,但找不到任何方法来测试lambda函数上的http请求。您在什么环境中开发脚本?