reactjs 使用AWS lambda从S3检索图像

exdqitrt  于 2023-04-05  发布在  React
关注(0)|答案(1)|浏览(143)

我试图从Amazon S3中检索React项目的图像。然而,我的react项目设置似乎与aws-sdk相矛盾,可以追溯到this post
因此,我尝试使用AWS lambda作为我的中间件来检索图像。我使用s3.getSignedUrlPromise()来获取图像的签名URL,然后将URL传递回前端。在本地环境中,这种方法有效,我可以使用从后端检索的签名URL渲染请求的图像。
然而,当我部署lambda函数时,签名的url读取403 forbidden文件。因此我认为签名的url绑定到域localhost。问题是,有没有办法告诉getSingedUrlPromise()签名的url应该绑定到哪个主机?
我还尝试使用s3.getObject() API但我很难尝试将Buffer对象转换为Image。

qij5mzcb

qij5mzcb1#

假设你正在使用@aws-sdk/client-s3,我已经实现了一个类似的例子,使用下面的代码从我的S3 bucket中获取图像:

const AWS = require('aws-sdk');
//*/ get reference to S3 client 
var s3 = new AWS.S3();
exports.handler = (event, context, callback) => {
    var params = {
      "Bucket": "your-bucket-name",
      "Key": "your-key"
    };
    s3.getObject(params, function(err, data){
       if(err) {
           callback(err, null);
       } else {
           let base64String= data.Body.toString('base64');
           let src = "data:image/jpeg;base64,"+base64String;
           
           let response = {
             "statusCode": 200,
             "base64image": base64String
           };

           callback(null, response);
       }
    });
    
};

相关问题