CloudFront存储已调整大小的图像版本并将其提供给公众。每个图像都以严格的方式存储和提供:
/content/resized/2x/md5_hash_of_image.jpg
唯一的变化是2x
和md5_hash_of_image
。
此外,包含访问密钥的查询字符串将附加到请求中。
但是,我想以这种格式提供图像:
/images/2x/md5_hash_of_image/random_friendly_filename.jpg
服务器即时生成random_friendly_filename
。
这可能与CloudFront有关,例如自定义行为吗?
答案 0 :(得分:1)
CloudFront没有本机功能,但可以在CloudFront中使用Lambda@Edge的帮助来完成,它允许使用JavaScript操纵CloudFront请求(和响应)。
'use strict';
exports.handler = (event, context, callback) => {
const request = event.Records[0].cf.request;
request.uri = request.uri.replace(/\/[^\/]+\.jpg$/,'.jpg');
return callback(null, request);
};
这会获取uri(路径),并仅使用/random-friendly-filename.jpg
替换最终的.jpg
,从而删除您之前的random-friendly-filename
和/
。
如果对于任何一个特定图像,random-friendly-filename
始终相同,则这将是原始请求触发器。如果随机友好名称即使基本图像哈希值相同也会更改,那么您需要将其作为查看者请求触发器。