PluralSight 자습서를 따라 작성한 다음 Lambda 함수가 있습니다. [js에 대한 지식이 거의 없습니다. API Gateway <-> Lambda 자습서 학습을 위해 수행]
{}
테스트 json 과 똑같은 함수를 작성했습니다 .
var faker = require('faker');
exports.handler = function(event, context){
var inventory = [];
for(var i = 0; i < 10; i++){
var shoe = {};
var shoeType = getShoeType();
shoe.name = getShoeName(shoeType);
shoe.color = getShoeColor();
shoe.description = getShoeDescription(showType);
shoe.size = getShoeSize();
shoe.price = getShoePrice();
inventory.push(shoe);
}
context.succeed(inventory);
}
function getShoeName(showType){
return faker.company.catchPhraseNoun() + " " + faker.company.catchPhraseDescriptor() +
" " + showType;
}
function getShoeColor(){
return faker.commerce.color();
}
function getShoeDescription(shoeType){
return "A(n)" + faker.commerce.productAdjective() + ", " + faker.commerce.productAdjective() +
" " + shoeType + "made from the finest " + faker.commerce.productMaterial() + "designed for the " +
faker.commerce.bsBuzz() + " individual!";
}
function getShoeSize(){
return getNum(1, 13);
}
function getShoePrice(){
return faker.commerce.price();
}
function getShoeType(){
var shoeType = [
"running shoes",
"training shoes",
"tennis shoe",
"cricket shoe",
"other shoe"
]
return shoeType[getNum(0, 5)];
}
function getNum(min, max){
return Math.floor(Math.random() * (max - min +1)) + min;
}
그러나 Lambda에서 다음 오류가 발생합니다.
{
"errorMessage": "RequestId: e5566a3c-1df8-11e7-8b71-d961323b4fcf Process exited before completing request"
}
나도 위치를 확인 context.succeed()
했는데 완벽하게 괜찮습니다.
그래서 내가 어디로 잘못 갔습니까?
내가 보는 한 가지 오류는 귀하의 getShoeType()
기능에 있습니다. 이 함수에는 5 가지 신발 유형 (배열 인덱스 0 ~ 4)의 배열이 있습니다.
그러나 난수 함수에 전달하는 인수로 인해 0에서 5까지의 값을 반환합니다. 따라서 난수 함수가 5를 반환하면 오류 b / c를 생성합니다. 표시 유형 배열의 마지막 요소는 인덱스 4에 있습니다. , 5가 아닙니다.
편집 : 추가 검토에서 요청을 완료하기 전에 함수가 종료되지 않을 수 있지만에서 반환하는 문자열에 "정의되지 않음"이 표시 될 수 있습니다 getShoeName()
.
편집 # 2 또 다른 오류는 정의되지 않은 변수 showType
(대신 shoeType
)를 getShoeDescription()
함수에 전달한다는 것 입니다.
발생하는 실제 오류를 보지 못하는 것은 AWS Lambda로 작업 할 때 실망 스러웠던 것 중 하나입니다. 결국 저는 서버리스 프레임 워크를 사용하기 시작했습니다.이 프레임 워크는 Lamdba 함수를 로컬에서 실행할 수 있다는 좋은 이점이 있습니다. 그렇게하면 훨씬 더 나은 오류 메시지가 표시됩니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다