我试图删除'文件夹'从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}}
答案 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/'
};
请务必先尝试列出对象,而不是先删除它们。