【发布时间】:2018-12-04 20:14:17
【问题描述】:
我有一个 lambda 函数试图将一个 mp3 文件放入 S3 存储桶,但是我没有看到我的文件已上传,更奇怪的是没有看到来自回调的任何日志记录/响应。
我的 lambda/s3 存储桶都在同一个 AWS 账户上,并且存储桶名称绝对正确。
这里有什么我遗漏的吗?或者任何解释为什么我的回调没有被触发?
exports.handler = async (event, context, callback) => {
// prior setup
console.log('about to putObject on s3');
const s3BucketData = {
Bucket: 'media-files',
Key: fileName,
Body: fileDataBuffer,
ContentType: 'audio/mp3'
};
await s3.putObject(s3BucketData, (err, data) => {
console.log('putObject callback executing');
if (err) {
console.log('err occurred storing to s3: ', err)
} else{
console.log(`${fileName} succuessfully uploaded`);
}
context.done();
});
};
【问题讨论】:
-
您的代码是异步/等待、上下文和回调的奇怪组合。请参阅aws.amazon.com/blogs/compute/… 了解如何编写此代码的示例。特别是, s3.putObject() 不返回 Promise。要从 AWS 开发工具包调用中获取 Promise,您需要使用 .promise() 方法。
标签: node.js amazon-web-services amazon-s3 aws-lambda