amazon-web-services - AWS S3 存储的对象锁定设置不起作用
问题描述
我为合规模式创建了一个带有对象锁定设置的 AWS S3 存储桶。当我在存储桶中上传文件时(在文件设置中,我可以看到对象锁定在合规模式下启用),我能够删除该文件。我不确定,根据 AWS 文档,即使是根用户也无法使用合规模式对象锁定删除文件。
如果我被误解了,请帮忙。
解决方案
重要的
对象锁定仅适用于单个对象版本。
https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html
查看如何查看 S3 对象的版本?并将您的控制台视图切换为“显示”对象版本。您应该会发现您实际上并没有删除锁定的对象版本。
当您“删除”对象时,您所做的是创建一个删除标记。
DELETE
删除标记是在简单请求中命名的版本化对象的占位符(标记) 。由于该对象位于启用版本控制的存储桶中,因此该对象未被删除。但是,删除标记使 Amazon S3 的行为就像它已被删除一样。https://docs.aws.amazon.com/AmazonS3/latest/dev/DeleteMarker.html
控制台处于“隐藏”版本模式时,删除请求是DELETE
上面提到的“简单请求”。
当控制台处于“显示”版本模式时,您尝试的删除操作是针对对象的特定版本,您应该会发现无法删除任何带有对象锁的版本。
您还会发现您显然可以用新的上传来覆盖对象,但实际上您不能这样做,因为在版本化存储桶中上传具有相同密钥的对象(并且启用版本控制对于对象锁定工作是必需的) 不会覆盖对象——它只是创建对象的更新版本,而使旧版本保持不变。
当对象的最高(最新、当前)版本是删除标记时,该对象将从控制台中消失,并且不包含在通过 API 发送到存储桶的 ListObjects 请求中,但会出现在 ListObjectVersions API 请求中。“显示/隐藏”设置仅适用于您的个人控制台视图,它不会改变实际的存储桶行为。
对象版本的时间戳无法更改,因此锁定对象版本不仅可以防止删除对象内容,还可以保留该对象最初创建时间的记录。“覆盖”一个对象会创建一个带有新时间戳的新版本,版本上的时间戳证明在任何给定时间点存储桶中存在哪些内容。
推荐阅读
- python - 赋值错误之前引用的局部变量“表单”
- google-apps-script - 当行有数据时有边框,但如果为空则没有边框
- html - 为什么与其他浏览器相比,谷歌浏览器在查看此页面时表现异常?
- sql - Round time(7) 列值不接近 15 分钟
- events - 发布/发射具有巨大负载(json/xml)的事件的好策略是什么?
- if-statement - 使用 If 语句页面加载错误有效,但页面加载成功无效
- asp.net-mvc - id 为 x 的进程未运行(Visual Studio 2017)
- algorithm - 从源节点生成图形的有效方法
- python - 通过 PySpark pandas_udf 数据限制?
- javascript - 如何缩小纯 CSS 组件以适应父组件?