2017-10-09 245 views
0

希望在Lambda中構建一個微服務。設置和測試Lambda API的最佳方式是什麼?

我希望它可以通過HTTP請求訪問,所以我相信我需要使用API​​網關對其進行配置。我不確定我是否應該使用API Gateway Proxy Request EventAPI Gateway Proxy Response Event

同樣在驗證用戶方面,最好的方法是什麼?

我想使用Auth0,所以用戶本質上只是發送一個JWT的HTTP請求。

謝謝

回答

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-locallambda-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。對於你的情況,我認爲智威湯遜是最好的方式,但我很抱歉無法提供更多信息。

+0

有什麼辦法可以在本地開發嗎?我看了一個npm包lambda-local,但找不到任何方式來測試lambda函數上的http請求。你在什麼環境下開發你的腳本? – Stretch0

相關問題