Node.js 如何将图像上载到AWS S3

Node.js 如何将图像上载到AWS S3,node.js,postman,Node.js,Postman,pin.js 函数上传pinmedia(请求、恢复、下一步){ var s3=新的AWS.s3({ accessKeyId:'AKIAIUCBE3TQGL6ATPBA', 秘书访问密钥:“H8U7ZE0Br+QFACZ0PN2FFPIATMPWLP/aMfPCk9W”, Bucket:'mapery-v2' }); 风险值数据={ Bucket:'mapery-v2', 键:“upload-v2”, 正文:req.files.pin\u img }; s3.putObject(数据、函数(错误

pin.js
函数上传pinmedia(请求、恢复、下一步){
var s3=新的AWS.s3({
accessKeyId:'AKIAIUCBE3TQGL6ATPBA',
秘书访问密钥:“H8U7ZE0Br+QFACZ0PN2FFPIATMPWLP/aMfPCk9W”,
Bucket:'mapery-v2'
});
风险值数据={
Bucket:'mapery-v2',
键:“upload-v2”,
正文:req.files.pin\u img
};
s3.putObject(数据、函数(错误、媒体){
如果(错误)
console.log('上传数据时出错',媒体分辨率);
控制台日志(媒体存储);
});

}
以下内容适合我。确保您有正确的配置。水桶您将使用找到上载的图像


我使用nodejs中的Promise从另一个Lambda函数触发/调用上传到S3 Bucket Lambda函数

注意:-要从源代码调用目标lambda,我们需要创建一个 调用策略[在IAM->policy下]并将其附加到Lambda角色。

Lambda函数名:-库\u更新\u S3\u存储桶


谢谢你的回复。如何通过postman发布图像??在postman select body>form data中,输入关键字名称并选择type file form Dropdown如何在我的post API
photoBucket.upload中访问该文件({ACL:'public read',body:fs.createReadStream(req.pin_img),关键字:'upload-v2',内容类型:'application/octet stream},(err,response)=>{console.log(err,response)});
ya,它拥有您可以在图像中看到的文件。但是,我仍然没有得到响应。请确保删除您的机密id+密钥;)
const AWS = require('aws-sdk');
AWS.config.update({
        accessKeyId: process.env.AWS_KeyId,
        secretAccessKey: process.env.AWS_secret,
        // region:process.env.AWS_region  
});

const s3 = new AWS.S3({   signatureVersion: 'v4',  })
var photoBucket = new AWS.S3({
    params: {
        Bucket: 'bucket'
    }
})
photoBucket.upload({
        ACL: 'public-read', 
        Body: fs.createReadStream('./test.jpg'), 
        // file upload by below name
        Key: 'aws_test.jpg',
        ContentType: 'application/octet-stream' // force download if it's accessed as a top location
},(err, response)=>{
    console.log(err, response)
});
async function uploadToS3 (indexName){
await new Promise((resolve, reject) => {

        console.log(" Uploading to S3 ");
        
        //Lambda Parameter
        let lambda_params = {
            FunctionName: 'Library_Update_S3_Bucket', // Invoke lambda function 
         
            InvocationType: 'RequestResponse',
            LogType: 'Tail',
            Payload : JSON.stringify( { name : "ElasticsearchConfig.json", Body : 
               {"tableName" : "documents" , indexName } })
            };
         
         const lambdaS3Result = lambda.invoke(lambda_params ,  function(err, results) 
          {
            if (err) {
              console.log("Upload Failed :- ",err.message);
             response = {
                statusCode: 500,
                body: {message:"Upload to S3 Failed"}
                }
              
              reject(err);
            }
            else{
                console.log("Uploaded Successfully to S3");
                console.log("Results is :", results.Payload.statusCode )
                 response = {
                    statusCode: 200,
                    body: {message:"Done Uploading to S3"}
                    }
                    
                resolve(results);
            }
         });

  });
  }
let response = {};

exports.handler = async (event) => {
// TODO implement

var params = {Bucket : 'pe-library', Key: event.name, Body: 
JSON.stringify(event.Body), ContentType: "application/json"};
console.log(params);
try {
    await s3.upload (params).promise();
    response =  { 
        statusCode: 200,
        body: "Uploaded Successfully"
    }
} catch (err){
    console.log(err)
    response =  {
        statusCode: 500,
        body: "Upload Failed"
    }
}


return response;
};