2015-06-07 19 views
6

Sử dụng AWS SDK for Node, tại sao tôi không gặp lỗi khi cố xoá một đối tượng không tồn tại (tức là phím S3 sai)?Tại sao S3.deleteObject không thất bại khi khóa được chỉ định không tồn tại?

Nếu tôi chỉ định một nhóm không tồn tại, mặt khác, lỗi được tạo ra.

Nếu bạn xem xét các chương trình Node sau, tham số Key liệt kê một chìa khóa mà không tồn tại trong các xô, nhưng các error lập luận để gọi lại là null:

var aws = require('aws-sdk') 

function getSetting(name) { 
    var value = process.env[name] 
    if (value == null) { 
    throw new Error('You must set the environment variable ' + name) 
    } 
    return value 
} 

var s3Client = new aws.S3({ 
    accessKeyId: getSetting('AWSACCESSKEYID'), 
    secretAccessKey: getSetting('AWSSECRETACCESSKEY'), 
    region: getSetting('AWSREGION'), 
    params: { 
    Bucket: getSetting('S3BUCKET'), 
    }, 
}) 
picturePath = 'nothing/here' 
s3Client.deleteObject({ 
    Key: picturePath, 
}, function (err, data) { 
    console.log('Delete object callback:', err) 
}) 
+2

Vì đó là những gì các thông số kỹ thuật nói nó nên làm -> * "Loại bỏ phiên bản null (nếu có) của một đối tượng và chèn một điểm đánh dấu xóa, trở thành phiên bản mới nhất của đối tượng. Nếu không có null phiên bản, Amazon S3 không loại bỏ bất kỳ đối tượng. "*, nếu đối tượng không tồn tại, nó vẫn không phải là một lỗi khi gọi' deleteObject' – adeneo

+0

@adeneo Tâm viết này như là một câu trả lời? – aknuds1

Trả lời

9

Bởi vì đó là những gì các specs nói nó nên làm.

DeleteObject (params = {}, callback) ⇒ AWS.Request

Loại bỏ các phiên bản null (nếu có) của một đối tượng và chèn một dấu hiệu xóa , mà sẽ trở thành phiên bản mới nhất của đối tượng. Nếu không có phiên bản null, Amazon S3 sẽ không xóa bất kỳ đối tượng nào.

Vì vậy, nếu đối tượng không tồn tại, vẫn không có lỗi khi gọi deleteObject, nó vẫn thêm dấu xóa.

Các vấn đề liên quan