【发布时间】:2018-09-03 22:17:23
【问题描述】:
我正在使用 Lambda、API 网关和 Cloudfront 制作动态图像大小调整工具。
网址是这样的。
https://xxx.cloudfront.net/restaurant-101o.png&w=200
但不幸的是,API 返回
{"errorMessage":"获取对象 restaurant-101o.png&w=200 时出错 桶(桶名)。确保它们存在并且您的存储桶在 与此函数相同的区域。"}
简而言之,lambda 不能分隔 2 个参数,即 'filename' 和 'w'。 另外,API网关是这样设置的。
我该怎么办? 提前致谢。
'use strict';
console.log('Loading function');
const im = require('imagemagick');
const aws = require('aws-sdk');
const s3 = new aws.S3({ apiVersion: '2006-03-01' });
exports.handler = (event, context, callback) => {
const bucket = 'xxxx-contents';
const filename = decodeURIComponent(event.filename);
const width = decodeURIComponent(event.w);
const params = {
Bucket: bucket,
Key: 'images/' +filename.split('-')[0]+'/'+filename.split('-')[1],
};
s3.getObject(params, (err, data) => {
if (err) {
console.log(err);
var message = "Error getting object " + filename + " from bucket " + bucket +
". Make sure they exist and your bucket is in the same region as this function.";
console.log(message);
context.fail(message);
} else {
var contentType = data.ContentType;
var extension = contentType.split('/').pop();
im.resize({
srcData: data.Body,
format: extension,
width: width
}, function(err, stdout, stderr) {
if(err) {
context.fail(err);
return;
}
callback(null, new Buffer(stdout, 'binary').toString('base64'))
});
}
});
};
【问题讨论】:
标签: amazon-web-services aws-lambda aws-api-gateway