Amazon web services 设置和测试Lambda 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

想要在Lambda内部建立一个微服务

我希望它可以通过HTTP请求访问,因此我认为需要使用API网关对其进行配置。我不确定是否应使用
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请求。您在什么环境中开发脚本?