lambda log 에서 비동기부분은 어디에서 볼수있나요?
lambda log보는 중인데
s3.putObject 의 callback 에서 로그 남기는곳이 있는데 이부분이 안보여서요..
로그 남길때 비동기부분은 로그 안남기고 다른곳으로 가는지 궁금합니다
---------------------------------------------------------------------
02-10 16:18분 추가
다른 커뮤니티에서도 같은 글을 올렸는데 같은 내용으로 올리실꺼 같아서 추가하면
cloudwatch 에서 로그를 보고 있습니다.
console.log('5. 엑셀 파일 업로드'); s3.putObject(uploadParams, (err, data) => { if (data) { console.log("Upload Success", data); //이부분 } else if (err) { console.log("Error", err); //또는 이부분 } }); console.log('6. 엑셀 파일 업로드 태그 확인');이런식으로 5. 6. 번을 추가 해줬을때 제 예상은
5. 엑셀 파일 업로드
6. 엑셀 파일 업로드 태그 확인
Upload Success OR Error 였는데
실제 로그에서
callback 부분 로그가 비어있습니다.
안녕하세요?
모든 코드를 다 안올리셔서 추측으로만 답변드립니다.
1. 코드시작
2. console.log(5. 엑셀 파일 업로드)
3. putObject 비동기 시작
4. console.log(6. 엑셀 파일 업로드 태그 확인)
5. lambda 종료
6. putObject 비동기 완료 및 console.log 실행(이지만, lambda 가 종료되서 cloudwatch 에 안남음)
위의 순서대로 지금 작동해서 console.log 가 찍히지 않는것이 유력합니다.
lambda 를 종료하는 callback 을 putObject 안에다가 넣으시던지 async await 을 사용해서 putObject 결과를 기다리고 callback 을 호출해야 정상작동할것으로 보입니다. 아니면 Promise 를 사용해서 then/catch 안에 callback을 넣으셔도 됩니다.
예시 1) putObject 의 콜백 함수안에서 callback 호출하기
exports.handler = function(event, context, callback) { s3.putObject(uploadParams, (err, data) => { if (data) { console.log("Upload Success", data); //이부분 callback(data) } else if (err) { console.log("Error", err); //또는 이부분 callback(err) } }); }예시 2) async await 사용하기
exports.handler = async function(event, context, callback) { const result = await s3.putObject(uploadParams) console.log('result:', result) callback() }예시 3) Promise 의 then / catch 에서 callback 호출
exports.handler = function(event, context, callback) { new Promise((resolve, reject) => { s3.putObject(uploadParams, (err, data) => { if (data) { console.log("Upload Success", data); //이부분 resolve(data) } else if (err) { console.log("Error", err); //또는 이부분 reject(err) } }).then(res => { console.log('res:', res) callback() }).catch(err => { console.log('err:', err) callback(err) }) }대충.. 요런식입니다. 도움이 되셨으면 좋겠습니다.
수고하세요. 해피코딩~