【发布时间】:2019-05-28 15:56:42
【问题描述】:
我在 AWS 中有一个 Lambda 函数,它连接到一个 POST 方法,该方法基本上采用图像 URL 并将图像上传到 S3 存储桶。
我的 Lambda 函数如下所示:
var s3 = new AWS.S3();
exports.handler = (event, context, callback) => {
let encodedImage = JSON.parse(event.body).user_avatar;
let decodedImage = Buffer.from(encodedImage, 'base64');
var filePath = "avatars/" + event.queryStringParameters.username + ".jpg"
var params = {
"Body": decodedImage,
"Bucket": "MYBUCKETNAME.com",
"Key": filePath
};
s3.upload(params, function (err, data) {
if (err) {
callback(err, null);
} else {
let response = {
"statusCode": 200,
"headers": {
"my_header": "my_value"
},
"body": JSON.stringify(data),
"isBase64Encoded": false
};
callback(null, response);
}
});
};
好像是把图片上传到指定的bucket,但是当我查看图片时好像坏了。
我对将 AWS 用于他们提供的 GUI 之外的任何东西都非常缺乏经验。如果有人对可能发生的事情有任何想法,我将不胜感激。提前致谢!
【问题讨论】:
-
我刚刚通过 API Gateway 测试了你的 lambda 函数代码,它工作正常,上传到 S3 后没有图像损坏。唯一可能的问题是您的 base64 字符串输入不正确。
-
这似乎是个问题,我传递的是一个图片 URL,而实际上我应该传递一个 base 64 字符串
-
哦。很高兴它解决了!!!
标签: amazon-web-services amazon-s3 aws-lambda serverless-framework