Подтвердить что ты не робот

Aws s3 удалить объект с помощью javascript

Я хочу удалить файл с amazon s3 с помощью javascript. Я уже загружал файл на s3 с помощью javascript. любые идеи, пожалуйста, помогите

4b9b3361

Ответ 1

Вы можете использовать метод JS из S3:

var AWS = require('aws-sdk');

AWS.config.loadFromPath('./credentials-ehl.json');

var s3 = new AWS.S3();
var params = {  Bucket: 'your bucket', Key: 'your object' };

s3.deleteObject(params, function(err, data) {
  if (err) console.log(err, err.stack);  // error
  else     console.log();                 // deleted
});

Имейте в виду, что S3 никогда не возвращает его, объект был удален. Вы должны проверить это до или после с помощью getobject, headobject, waitfor и т.д.

Ответ 2

Вы можете использовать конструкцию следующим образом:

var params = {
  Bucket: 'yourBucketName',
  Key: 'fileName'
  /* 
     where value for 'Key' equals 'pathName1/pathName2/.../pathNameN/fileName.ext'
     - full path name to your file without '/' at the beginning
  */
};

s3.deleteObject(params, function(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
});

И не забудьте обернуть его в Обещание.

Ответ 3

Вы можете использовать API deleteObjects для удаления нескольких объектов одновременно вместо вызова API для каждого удаляемого ключа. Помогает сэкономить время и пропускную способность сети.

Вы можете сделать following-

var deleteParam = {
    Bucket: 'bucket-name',
    Delete: {
        Objects: [
            {Key: 'a.txt'},
            {Key: 'b.txt'},
            {Key: 'c.txt'}
        ]
    }
};    
s3.deleteObjects(deleteParam, function(err, data) {
    if (err) console.log(err, err.stack);
    else console.log('delete', data);
});

Для справки см. - https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#deleteObjects-property

Ответ 4

Перед удалением файла вы должны проверить 1) файл, находится ли он в корзине, потому что если файл недоступен в корзине и не использует API deleteObject, это не выдает никакой ошибки 2) CORS Configuration корзины. С помощью headObject API дает статус файла в корзине.

AWS.config.update({
        accessKeyId: "*****",
        secretAccessKey: "****",
        region: region,
        version: "****"
    });
const s3 = new AWS.S3();

const params = {
        Bucket: s3BucketName,
        Key: "filename" //if any sub folder-> path/of/the/folder.ext
}
try {
    await s3.headObject(params).promise()
    console.log("File Found in S3")
    try {
        await s3.deleteObject(params).promise()
        console.log("file deleted Successfully")
    }
    catch (err) {
         console.log("ERROR in file Deleting : " + JSON.stringify(err))
    }
} catch (err) {
        console.log("File not Found ERROR : " + err.code)
}

Поскольку параметры постоянны, лучше всего использовать их с const. Если файл не найден в s3, выдается ошибка NotFound : null.

Если вы хотите применить какие-либо операции в сегменте, вы должны изменить разрешения для CORS Configuration в соответствующем сегменте в AWS. Для изменения разрешений Bucket->permission->CORS Configuration и добавьте этот код.

<CORSConfiguration>
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedMethod>PUT</AllowedMethod>
    <AllowedMethod>POST</AllowedMethod>
    <AllowedMethod>DELETE</AllowedMethod>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedMethod>HEAD</AllowedMethod>
    <AllowedHeader>*</AllowedHeader>
</CORSRule>
</CORSConfiguration>

для получения дополнительной информации о конфигурации CROS: https://docs.aws.amazon.com/AmazonS3/latest/dev/cors.html