2016-06-28 6 views
2

Я пытаюсь удалить изображение из хранилища Amazon S3, но оно не удаляется.Удалить изображение из Amazon S3 Storage

Я использую следующий код:

var s3 = AWS.S3(awsCredentials); 
s3.deleteObject({ 
    Bucket: MY_BUCKET, 
    Key: myKey 
},function (err,data){}) 

, но образы, которые я хочу, чтобы удалить все еще сохраняются.

Я даже использовал функцию s3.deleteObjects, она возвращает имена удаленных объектов, но когда я проверил хранилище, изображения все еще были там.

+0

Если вы включили версию на S3 – error2007s

+0

versionId = null на всех моих изображениях, значит ли это, что управление версиями не включено? –

+0

, и после удаления он не добавляет маркер удаления в версию, он по-прежнему равен нулю –

ответ

3

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

var s3 = AWS.S3(awsCredentials); 
s3.deleteObject({ 
    Bucket: MY_BUCKET, 
    Key: 'some/subfolders/nameofthefile1.extension' 
},function (err,data){}) 
+2

Фактически я использовал для ключа следующий формат '/some/subfolders/nameofthefile1.extension', но ведущий '/' не нужен. –

+0

Не просто лишний, но и неправильный. Соглашение S3 состоит в том, что корень ведра представляет собой пустую строку, а не '/'. Последующий вопрос заключается в том, почему вы не сталкивались с исключением при попытке удалить несуществующий объект. Ответ, лучше всего рассмотренный, когда вы чувствуете себя философски, заключается в том, что 'DELETE' является идемпотентным. После 'DELETE/foo HTTP/1.1' больше нет/foo. Независимо от того, существовал ли он раньше, он, конечно же, не существует после запроса, и поэтому любое удаление, которое у вас есть, позволяет * всегда * преуспеть ... даже если объект не существует. –

Смежные вопросы