ann*_*ani 7 amazon-s3 amazon-web-services node.js aws-lambda
我是nodejs和aws的新手,谁能指出以下用于调整s3存储桶中图像大小的代码有什么问题吗
程序如下
'use strict';
const AWS = require('aws-sdk');
const S3 = new AWS.S3({
accessKeyId: "xxxxxxxxxxxx",
secretAccessKey: "yyyyyyyyyyy",
region: "us-east-1",
signatureVersion: 'v4',
});
const Sharp = require('sharp');
const BUCKET = "patientimg";
const URL = "https://s3.ap-south-1.amazonaws.com";
exports.handler = function(event, context, callback) {
const key = event.queryStringParameters.key;
const match = key.match(/(\d+)x(\d+)\/(.*)/);
const width = parseInt(match[1], 10);
const height = parseInt(match[2], 10);
const originalKey = match[3];
S3.getObject({Bucket: BUCKET, Key: originalKey}).promise()
.then(data => Sharp(data.Body)
.resize(width, height)
.toFormat('png')
.toBuffer()
)
.then(buffer => S3.putObject({
Body: buffer,
Bucket: BUCKET,
ContentType: "image/png",
Key: key,
}).promise()
)
.then(() => callback(null, {
statusCode: '301',
headers: {'location': "${URL}/${key}"},
body: "",
})
)
.catch(err => callback(err))
}
Run Code Online (Sandbox Code Playgroud)
这是我正在使用的确切代码,使用“S3 put”请求进行测试时 lambda 的输出
{
"errorMessage": "RequestId: edaddaf7-4c5e-11e7-bed8-13f72aaa5d38 Process exited before completing request"
}
Run Code Online (Sandbox Code Playgroud)
提前致谢
使用 lambda 调整图像大小是一个经典示例,AWS 团队对此进行了很好的解释。遵循他们的指示,而不是其他。
正确的调整大小代码是:http://github.com/awslabs/serverless-image-resizing。无论你发现什么,都可能是错误的。
基本上它的工作原理是这样的:
所有这些步骤都在上面的 AWS 博客中有详细记录。他们的方法的好处是,直到实际需要时才创建调整大小的图像,从而节省了资源。
| 归档时间: |
|
| 查看次数: |
9082 次 |
| 最近记录: |