我正在使用 AWS Api Gateway、Lambda 和 S3。
我的目标是访问网关并在浏览器中提供并显示来自我的 S3 存储桶的图像。目前,我能够使用我的 lambda 中的 AWS SDK 从适当的存储桶中成功获取图像,这没问题。然后我通过网络发送它,响应为 200,我可以看到所有适当的标题。然而图像被破坏了。
这是我的 lambda 中的代码:
const AWS = require('aws-sdk');
const s3 = new AWS.S3();
exports.handler = async (event) => {
const bucketParams = {
Bucket: 'my-bucket',
Key: 'build/cat.jpg',
};
const bucket = await s3.getObject(bucketParams).promise();
const response = {
statusCode: 200,
body: Buffer.from(bucket.Body).toString(),
headers: {
'Accept-Ranges': 'bytes',
'Content-Length': bucket.ContentLength,
'Content-Type': bucket.ContentType,
'Last-Modified': bucket.LastModified,
'ETag': bucket.Etag,
}
};
return response;
};
响应是 200,一切正常,但我的图像在浏览器中似乎损坏了。这是示例https://3bn2t9npbd.execute-api.us-east-1.amazonaws.com/dev/cat.jpg的 uri
作为旁注,我通过此代码提供的不仅仅是图像,但上面的示例只是一个图像。