【发布时间】:2019-07-16 15:35:29
【问题描述】:
首先采用这种方法的动机来自亚马逊: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,然后返回新图像(如果尚未缓存)。
【问题讨论】:
-
为什么投反对票?该选项在管理员中可用,它并没有说它在您按下部署之前不起作用,那时我已经在我的代码中实现了它,将它上传到 s3 .. 花了至少一个小时..
标签: amazon-web-services environment-variables aws-lambda-edge