Стирание объектов 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);
  }
};

Для получения дополнительной информации см. официальную документацию здесь.

Другие вопросы по тегам