Я хочу удалить файл с amazon s3 с помощью javascript. Я уже загружал файл на s3 с помощью javascript. любые идеи, пожалуйста, помогите
Aws s3 удалить объект с помощью javascript
Ответ 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