2017-10-09 2 views
0

람다 내에 마이크로 서비스를 만들고 싶습니다.람다 API를 설정하고 테스트하는 가장 좋은 방법은 무엇입니까?

HTTP 요청을 통해 액세스 할 수 있기를 원하므로 API 게이트웨이로 구성해야한다고 생각합니다. API Gateway Proxy Request Event 또는 API Gateway Proxy Response Event을 사용해야하는지 잘 모르겠습니다.

또한 사용자를 인증하는 측면에서 가장 좋은 방법은 무엇입니까?

나는 Auth0을 사용하여 사용자가 본질적으로 HTTP 요청과 함께 JWT를 보낼 것이라고 생각하고있다.

감사합니다.

답변

1

API 게이트웨이 프록시 요청을 사용합니다. 나는 다음 람다 함수 자체 내에서 응답을 처리 Proxy integrations cannot be configured to transform responses.

Integration Response 업데이트 될 것이다 Use Lambda Proxy integration를 사용하도록 Integration Request를 구성합니다. 예를 들어, 나는 성공적인 응답을 다음과 같은 것이다 :

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이 아닙니다.

노드에서 로컬로 람다를 개발했으며 디버깅/테스트 기능에 lambda-locallambda-tester의 조합을 사용했습니다. 나는 lambda-tester를 사용하여 내 단위 테스트에 대한

{ 
     "queryStringParameters": 
     { 
      "param1": "1234567890", 
      "param2": "0987654321", 
     } 
} 

:

lambda-local -f ~/Desktop/lambdaNode/myNewAPI.js -e ~/Desktop/lambdaEvents/testEvent.json

예 이벤트는 다음과 같이한다 : 예를 들어, 나는 람다 이벤트를 전달하려면 다음 명령을 실행됩니다 모카와 함께 다음과 같이 npm test와 위의

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); 
     }); 
    }); 
}); 

시험을 당신이에 대한 설정이 있다면, 그렇지 않으면 단지 mocha testFile

내 경우에는 인증이 내부 API이므로 다르게 처리됩니다. 귀하의 경우, JWT가 최선의 방법이라고 생각합니다. 유감 스럽지만 그 점에 관해 더 많은 정보를 제공 할 수는 없습니다.

+0

로컬로 개발할 수있는 방법이 있습니까? 나는 npm 패키지 lambda-local을 살펴 보았지만 람다 함수에서 http 요청을 테스트 할 방법을 찾지 못했습니다. 스크립트를 개발 한 환경은 무엇입니까? – Stretch0