似乎无法使用javascript从AWS 3S删除密钥

时间:2016-05-18 14:49:33

标签: javascript amazon-web-services amazon-s3

我试图删除'文件夹'从Amazon AWS S3存储桶调用AmazonS3FullAccess。我已经遵循了许多教程,并且我使用{}权限的身份。

我收集到的所有内容都应该有效 - 但事实并非如此。我没有错误,我只获得IAM的控制台输出。

我有一个方法可以使用相同的凭据上传到Amazon S3,所以我知道他们检查正确。这是我在{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:*", "Resource": "*" } ] } ;

上配置凭据的列表
var AWS = require('aws-sdk');
AWS.config = {
    'accessKeyId': `{HIDDEN}`,
    'secretAccessKey': `{HIDDEN}`,
    'region': `us-east-1`
};
var rmAWS = function() {
    var BUCKET_NAME = `{HIDDEN}`; var s3 = new AWS.S3();

    var params = {
        Bucket: BUCKET_NAME,
        Key: 'js'
    };
    s3.deleteObject(params, function(err, data) {
        if (err) console.log(err, err.stack); // an error occurred
        else     console.log(data);           // successful response
    });
}

rmAWS();

这是我试图删除内容的实际代码;

{{1}}

2 个答案:

答案 0 :(得分:0)

AWS S3并不了解目录的概念。因此,当您尝试删除 js 时,它会查找一个关键字是js的文件。实际情况是,有几个文件的键是 js / foo 。您应该尝试删除所有这些文件,"文件夹"将被删除"。

为此,您应该使用deleteObjects方法(http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#deleteObjects-property)。

您无法使用通配符(例如 js / * )删除对象,但您可以列出存储桶中的对象,然后创建仅包含要删除的对象的数组。

尝试使用listObjects方法(http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#listObjects-property)。将前缀分配给 js / ,它只应返回您要删除的对象。然后将此结果用作deleteObjects方法的数组。

答案 1 :(得分:0)

是否有多个" js" "夹"需要删除?或只是一个?

    var params = {
    Bucket: BUCKET_NAME,
    Delimiter: '/',
    Prefix: 'FOLDERNAME/FOLDERNAME/js/'
};

请务必先尝试列出对象,而不是先删除它们。