我想知道有一个例子,因为我一直在努力解决这个问题。
答案 0 :(得分:0)
我过去曾做过类似的事情,但是使用lambda(我猜你也好,因为你用lambda标记了这个问题)。这是一个较旧的,使用node.js 6.10。我还没有检查它是否适用于更高版本。
此示例获取API调用正文中的文件,将其命名,将其保存在S3中并返回文件的新名称。我使用事件id和内容类型标头来创建文件名。
这是来自API Gateway的我的身体映射模板(我设置了几个,我接受的每种内容类型都有一个):
{
"body": "$input.body",
"requestId": "$context.requestId",
"contentType" : "$input.params('Content-Type')"
}
这是我的lambda代码:
var AWS = require('aws-sdk');
AWS.config.update({region: 'us-east-1'});
var s3 = new AWS.S3();
exports.handler = function(event, context) {
var contentType = event.contentType;
var file = new Buffer(event.body, 'base64');
var fileType = (contentType.split('/'))[1];
console.log(fileType);
var key = event.requestId + '.' + fileType;
var param = {Bucket: 'aBucket', Key : key, Body: file};
s3.putObject(param, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
console.log('actually done!');
context.succeed(key);
});
};