希望在Lambda中構建一個微服務。設置和測試Lambda API的最佳方式是什麼?
我希望它可以通過HTTP請求訪問,所以我相信我需要使用API網關對其進行配置。我不確定我是否應該使用API Gateway Proxy Request Event
或API Gateway Proxy Response Event
。
同樣在驗證用戶方面,最好的方法是什麼?
我想使用Auth0,所以用戶本質上只是發送一個JWT的HTTP請求。
謝謝
希望在Lambda中構建一個微服務。設置和測試Lambda API的最佳方式是什麼?
我希望它可以通過HTTP請求訪問,所以我相信我需要使用API網關對其進行配置。我不確定我是否應該使用API Gateway Proxy Request Event
或API Gateway Proxy Response Event
。
同樣在驗證用戶方面,最好的方法是什麼?
我想使用Auth0,所以用戶本質上只是發送一個JWT的HTTP請求。
謝謝
我使用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
與摩卡沿如下:
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。對於你的情況,我認爲智威湯遜是最好的方式,但我很抱歉無法提供更多信息。
有什麼辦法可以在本地開發嗎?我看了一個npm包lambda-local,但找不到任何方式來測試lambda函數上的http請求。你在什麼環境下開發你的腳本? – Stretch0