AWS S3 Удаление объектов, Nodejs - PullRequest
0 голосов
/ 29 августа 2018

У меня следующая ситуация, я храню изображения в S3, каждое изображение находится в своей собственной папке, что-то вроде этого:

https://s3.eu-central-9.amazonaws.com/my-app/6a68045c14754f3c0b22d206053ff67406217981043a24ad06d3789b67024747125b8900ee8a1e9af2220a5c6558946136cd82807d0666b4678406337239530f/1535565432.jpg

Я использую AWS SDK, я попробовал два подхода:

  • Проходя полный путь
  • Передача только пути после my-app

С обоими я получаю ответ, похожий на этот:

{ Deleted: [ { Key: '/1b37c7ad1d9f021e000813b9d16b8ae2b24e6ed6f3c4430bfb8196ca63eec57eafe5bf2ee8993a7846faca0c95cec587395d6639f2aeb73447fb9429b673f0ca/1535564545.jpg' } ],
Errors: [] }

Но если я пойду и проверю свое ведро, файл и папка на месте, не могу понять почему, какие-либо предложения?

Я начинаю думать, что мне просто нужно пропустить создание папки и добавить изображения в корень корзины.

[UPDATE] Параметры для метода S3.deleteObjects:

{ 
    Bucket: 'my-app',
    Delete: { 
        Objects: [{
            Key: '/c506c3b842e1729c41542b7867b14a5eefb4159336105392ed99d250153aeea515e39986f850e3c8674d082b760b7e0d3ab5edf1c7c3e5d89ea7e71a399c0e5e/1535610612.jpg' 
        }] 
    } 
}

Я использую безсерверный фреймворк, с его помощью создается корзина - может быть, это как-то связано с этим? Единственная ошибка, которую я получил при сборке, - это то, что моя лямбда-функция, которая выполняет удаление, не имела разрешения на это, как только я добавила s3: DeleteObject, меня встретили с этим.

1 Ответ

0 голосов
/ 30 августа 2018

Проблема здесь в том, как вы указываете корзину S3 и ключ к SDK. В настоящее время они поставляются следующим образом:

Bucket: https://s3.eu-central-9.amazonaws.com/my-app
Key: /1234.jpg

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

Bucket: my-app
Key: 1234.jpg

Если объект находится в структуре подпапок, то это будет:

Bucket: my-app
Key: folder1/folder2/1234.jpg

Часть проблемы здесь, я думаю, в том, что вы предоставили информацию неправильно, но S3 ответил OK. Если вы попросите S3 удалить объект, который не существует, он вернет OK. Это вопрос безопасности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...