我有以下情况,我将图像存储在S3中,每个图像都在其自己的文件夹中,如下所示:
{ Deleted: [ { Key: '/1b37c7ad1d9f021e000813b9d16b8ae2b24e6ed6f3c4430bfb8196ca63eec57eafe5bf2ee8993a7846faca0c95cec587395d6639f2aeb73447fb9429b673f0ca/1535564545.jpg' } ],
Errors: [] }
我正在使用AWS开发工具包,我尝试了两种方法:
有了这两者,我都会得到如下响应:
{
Bucket: 'my-app',
Delete: {
Objects: [{
Key: '/c506c3b842e1729c41542b7867b14a5eefb4159336105392ed99d250153aeea515e39986f850e3c8674d082b760b7e0d3ab5edf1c7c3e5d89ea7e71a399c0e5e/1535610612.jpg'
}]
}
}
但是,如果我去检查一下我的存储桶,文件和文件夹都就位了,就找不到原因了,有什么建议吗?
我开始认为我应该跳过文件夹的创建,而是将图像添加到存储桶的根中。
[UPDATE] S3.deleteObjects方法的参数:
<input class="form-control" id="filename" type="text" name="filename" value="">
var formData = new FormData(document.getElementById('filename'));
我正在使用无服务器框架,在它的帮助下创建了存储桶-可能与此有关吗?构建此文件时,我唯一遇到的错误是,执行删除操作的lambda函数没有执行此操作的权限,一旦我添加了s3:DeleteObject,便对此表示欢迎。
答案 0 :(得分:1)
这里的问题在于您指示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的响应正常。如果要求S3删除不存在的对象,它将返回OK。这是安全的事情。