Прежде всего, это плохая практика - вставлять ваши методы в функцию-обработчик Во-вторых, у вас есть проблемы со временем выполнения. Я имею в виду, что вы выбрали узел 8.10 с поддержкой await / async, но вы все еще пытаетесь использовать обратные вызовы.
У меня есть несколько комментариев для вас. Я надеюсь, что это поможет вам.
1) Вы можете просто сделать это:
export async function handler(event)
{
// body of your function
};
2) Обещаны услуги AWS. Вы должны переписать свой метод s3. Посмотрите на следующий фрагмент. И у меня есть вопрос. Вы уверены, что вам нужно использовать метод putObject вместо загрузки?
try
{
let s3= new AWS.S3({ region: process.env.AWS_REGION, apiVersion: '2006-03-01' });
let params =
{
Bucket: //aws s3 bucket location (a full path),
Key: //file name/key,
Body: //entity to upload,
ACL: 'public-read' // access policy,
ContentType: 'audio/mp3'
};
let s3Response = await s3.upload(params).promise();
// request successed
console.log(`File uploaded to S3 at ${s3Response.Bucket} bucket. File
location: ${s3Response.Location}`);
return s3Response.Location;
}
// request failed
catch (ex)
{
console.error(ex);
}
Если вы хотите использовать обратные вызовы, то:
s3.upload(params, (err, data) =>
{
console.log('putObject callback executing');
if (err)
{
console.error('err occurred storing to s3: ', err);
return ;
}
console.log(`${fileName} succuessfully uploaded`);
return data;
});
Надеюсь, вы найдете это полезным. Ура!