采用这种方法的动机首先来自亚马逊:https ://aws.amazon.com/blogs/compute/resize-images-on-the-fly-with-amazon-s3-aws-lambda-and-amazon -api-gateway/(在他们添加“更新”之前......)
在我们的 AWS Lambda 调整大小函数中,它调整图像的大小并将新图像存储在 S3 上。
const s3_bucket = process.env.s3_bucket;
S3.putObject({
Body: buffer,
Bucket: s3_bucket,
ContentType: contentType,
CacheControl: 'max-age=31536000',
Key: key,
StorageClass: 'STANDARD'
}).promise()
现在我们希望它适用于我们所有的测试/登台环境以及生产环境。所以我找到了“环境变量”,我虽然很棒!但是当我尝试部署一个新版本时,我得到的只是:
我们是否在 CloudFront 中设置错误?我们使用的是 Node 6.10 版本。我很难相信我们是否必须对存储桶进行硬编码并保留不同版本的代码来处理这个问题?如果是这样的话,那么我们在使用 AWS Lambda 上浪费了很多时间......
编辑:我们所做的是请求图像,如“media/catalog/product/3/0/30123/768x/lorem.jpg”,然后我们使用位于“media/catalog/product/3/”的原始图像0/30123.jpg”,如果浏览器支持,将其调整为 768px 和 webp,然后返回新图像(如果尚未缓存)。