Стирание объектов AWS/S3 из Node.JS (JavaScript)
У меня есть приложение Node.JS, использующее mLab в качестве БД, а также AWS/S3 для хранения файлов. Я только что реализовал функциональность, позволяющую пользователю стирать информацию из БД mLab, это прекрасно работает.
Единственное, что мне еще нужно сделать, это стереть возможную соответствующую информацию из AWS/S3, а я пока не знаю, как это сделать.
Я уже просмотрел сеть и увидел пару вещей, но ничего вполне удовлетворительного.
Может ли кто-то точно сказать (если возможно, четко и просто), что мне нужно сделать (необходим модуль npm, если он есть, и т. Д.), Чтобы иметь возможность удалять объекты из моей корзины AWS/S3. Хороший учебник по этому вопросу также будет хорошо, если таковой имеется.
2 ответа
AWS предоставляет SDK для JavaScript. Во-первых, убедитесь, что вы установили свои учетные данные любым удобным для вас способом. Далее установите SDK:
npm i aws-sdk
Удаление объекта из ведра:
const AWS = require('aws-sdk');
const s3 = new AWS.S3();
const params = {
Bucket: 'examplebucket',
Key: 'objectkey.jpg'
};
s3.deleteObject(params, function(err, data) {
if (err) {
console.log(err, err.stack); // an error occurred
else {
console.log(data); // successful response
}
});
Пара заметок:
- Существует также функция deleteObjects, которая может удалять несколько объектов одним вызовом.
- Необязательно, но рекомендуется, если вы используете последнюю версию узла, вы можете использовать util.promisify, чтобы превратить стиль обратного вызова, который использует AWS SDK, в обещания.
Использовать SDK для JavaScript (v3) проще; вам просто нужно выполнить несколько шагов, чтобы удалить объект.
Сначала установите пакет @aws-sdk/client-s3 :
Использование npm:(дополнительный установщик пакетов )
npm install @aws-sdk/client-s3
ИмпортироватьDeleteObjectCommand
иS3Client
от@aws-sdk/client-s3
import { DeleteObjectCommand, S3Client } from "@aws-sdk/client-s3";
Создайте новый экземпляр:
const s3Client = new S3Client({});
Создайте асинхронную функцию для удаления объекта:
export const deleteObject = async () => {
const deleteCommand = new DeleteObjectCommand({
Bucket: "bucket_name",
Key: "your_object_name_with_file_extension", // kayes_note.txt
});
try {
const response = await s3Client.send(deleteCommand);
console.log(response);
} catch (err) {
console.error(err);
}
};
Для получения дополнительной информации см. официальную документацию здесь.