阿里云OSS中删除目录需要的权限有哪些

所需权限

权限 Action 说明
oss:DeleteObject 删除单个文件/目录的权限
oss:DeleteMultipleObjects 批量删除多个文件的权限(推荐)
oss:ListObjects 列举目录下文件的权限(删除前需先列出目录内容)

重要说明

OSS 没有真正的”目录”概念,目录是通过 Object Key 的前缀模拟的。因此删除目录的本质是:

    1. 先列举该目录(前缀)下的所有 Object
    1. 逐个或批量删除这些 Object
    1. 最后删除目录占位符(如果有)

RAM Policy示例

允许删除指定目录及其内容的自定义策略:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"oss:ListObjects",
"oss:DeleteObject",
"oss:DeleteMultipleObjects"
],
"Resource": [
"acs:oss:*:*:example-bucket",
"acs:oss:*:*:example-bucket/target-dir/*"
]
}
]
}

删除方式

方式一:通过控制台

直接勾选目录 → 点击删除,系统会自动删除目录下所有文件。

方式二:通过 ossutil 命令行

1
2
# 删除目录及目录下所有文件
ossutil rm oss://example-bucket/target-dir/ -r

方式三:通过 SDK

需先 List 出目录下所有 Object,再调用 DeleteObjectDeleteMultipleObjects 批量删除。每次最多删除 1000 个文件。


注意事项

  • ⚠️ 文件删除后无法恢复除非开启了版本控制
  • 如果 Bucket 开启了版本控制,删除操作会生成删除标记(Delete Marker),原文件以历史版本形式保留
  • 删除非空目录时,必须将目录下所有文件删除后才能删除该目录