首页 > 解决方案 > 从 aws 中删除多个图像

问题描述

这是我用于从 aws 中删除多个图像的代码

AWS.config.update({
  accessKeyId: process.env.ACCESS_KEY,
  secretAccessKey: process.env.SECRET_ACCESS_KEY
})

const s3 = new AWS.S3({
  params: {
    Bucket: process.env.BUCKET
  }
})

这是我从前端传递来删除图像的数组

const array = [
  'https://s3.amazonaws.com/lgfit/picture/5b55a7a6c316686bbbbc8120.jpg',
  'https://s3.amazonaws.com/lgfit/picture/5b4c3ca0097c915e38d0d21515-09-2018_12_13_48.jpg'
]

在这里,我在deleteObjectaws中传递图像

var options = {
  Bucket: process.env.BUCKET,
  Delete: {
    Objects: [{
      Key: array
    }],
  }
}
return new Bluebird((resolve) => {
  s3.deleteObject(options, function (err,data){
    console.log(err)
    console.log(data)
  })
})

我收到以下错误

{ MultipleValidationErrors: There were 2 validation errors:
* MissingRequiredParameter: Missing required key 'Key' in params
* UnexpectedParameter: Unexpected key 'Delete' found in params
    at ParamValidator.validate (/home/user/ashish/FitnessApp/Fitness-New-one/fitnessapp-backend/node_modules/aws-sdk/lib/param_validator.js:40:28)
    at Request.VALIDATE_PARAMETERS (/home/user/ashish/FitnessApp/Fitness-New-one/fitnessapp-backend/node_modules/aws-sdk/lib/event_listeners.js:108:42

请帮助我在这里做错了什么!!!

标签: javascriptnode.jsamazon-web-servicesamazon-s3

解决方案


您的代码中有两个错误。

  1. 您使用了错误的 SDK 方法。
  2. 您以错误的格式传递参数。

deleteObjects是删除多个对象并 Delete.Objects期望的方法,key:string但是您正在提供,key:array因此您需要从数组中生成对象。我假设那lgfit是你的桶。

const params = {
    Bucket: process.env.BUCKET,
    Delete: {
        Objects: [{
                Key: "picture/5b55a7a6c316686bbbbc8120.jpg"
            },
            {
                Key: "picture/5b4c3ca0097c915e38d0d21515-09-2018_12_13_48.jpg"
            }
        ],
        Quiet: false
    }
};
return new Bluebird((resolve) => {
    s3.deleteObjects(params, function (err, data) {
        if (err) console.log(err, err.stack); // an error occurred
        else console.log(data); // successful response
        /*
        data = {
        Deleted: [
            {
        DeleteMarker: true, 
        DeleteMarkerVersionId: "A._w1z6EFiCF5uhtQMDal9JDkID9tQ7F", 
        Key: "objectkey1"
        }, 
            {
        DeleteMarker: true, 
        DeleteMarkerVersionId: "iOd_ORxhkKe_e8G8_oSGxt2PjsCZKlkt", 
        Key: "objectkey2"
        }
        ]
        }
        */
    });
});

推荐阅读