AWS SDK를 사용하고 있으며 Lambda를 사용하여이 코드를 실행하고 있습니다. 비동기 함수 내에서 콜백과 함께 업로드 함수를 사용하면 함수가 실행되지 않는다는 것을 알았습니다.
const aws = require('aws-sdk');
exports.handler = async (event) => {
const s3 = new aws.S3();
console.log('START UPLOAD')
const params = {
Bucket: 'practice-bucket',
Key: 'hello.txt',
Body: "hello",
}
s3.upload(params, function(err, data) {
console.log(err, data);
});
};
나는 이것을 작동시키는 방법을 안다. 함수를 비동기가 아닌 함수로 변경하거나 await를 사용하고 upload ()의 응답을 promise로 전환합니다. 하지만 왜 upload () 함수를 실행하지 않는지 궁금합니다. 나는 그것을 기다리라고 말하지 않기 때문에 그냥 정규 함수로 실행하기를 기대하고 있습니다.
이것이 s3.upload가 완료되기 전에 함수가 반환되는 경우 Javascript의 이벤트 루프가 비동기 함수와 함께 작동하는 방식입니다.
s3.upload를 promise로 변환 한 다음 await를 사용하여 결과를 얻고 비동기 처리기의 반환을 차단하여이 문제를 해결할 수 있습니다.
await result = s3.upload(params).promise();
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다