아하
검색 이미지
생활꿀팁 이미지
생활꿀팁생활
생활꿀팁 이미지
생활꿀팁생활
듬직한담비100
듬직한담비10020.02.10

lambda log 에서 비동기부분은 어디에서 볼수있나요?

s3.putObject(uploadParams, (err, data) => { if (data) { console.log("Upload Success", data); //이부분 } else if (err) { console.log("Error", err); //또는 이부분 } });

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 부분 로그가 비어있습니다.

55글자 더 채워주세요.
답변의 개수
1개의 답변이 있어요!
  • 안녕하세요?

    모든 코드를 다 안올리셔서 추측으로만 답변드립니다.

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

    대충.. 요런식입니다. 도움이 되셨으면 좋겠습니다.

    수고하세요. 해피코딩~