You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编程删除Oracle Object Storage对象?DELETE请求报404问题求助

解决Oracle Object Storage通过预认证URL删除对象时的404错误

核心排查方向

  • 预认证URL权限不匹配
    你用文件夹的预认证URL完成了PUT创建,但删除需要对应权限。文件夹预认证规则默认可能只开放了PUT权限,没包含DELETE。检查预认证规则的权限配置:必须明确勾选DELETE操作,且资源路径要精准匹配目标对象——比如要删folder/filename,路径得设为/folder/filename或者通配符/folder/*。

  • 对象路径大小写/拼写错误
    Oracle OOS的对象名是大小写敏感的,File.txt和file.txt是两个完全不同的对象;另外,确认DELETE请求的路径和PUT时完全一致,别漏了文件夹前缀,也别多打了冗余斜杠。

  • 预认证URL已失效
    检查预认证规则的有效期,是否在创建对象后过期;如果规则被手动撤销,也会导致请求返回404(OOS会用404隐藏权限失效的细节)。

立即删除的可行方案

  • 生成带DELETE权限的预认证URL
    针对目标对象或所在文件夹生成包含DELETE权限的预认证规则。比如用OCI Python SDK创建:

    from oci.object_storage import ObjectStorageClient
    from oci.object_storage.models import CreatePreauthenticatedRequestDetails
    import datetime
    
    client = ObjectStorageClient(your_config)
    par_details = CreatePreauthenticatedRequestDetails(
        name="delete-specific-file",
        object_name="filename",
        access_type="ObjectReadWriteDelete",
        time_expires=datetime.datetime(2024, 12, 31)
    )
    par_response = client.create_preauthenticated_request(your_namespace, your_bucket, par_details)
    delete_url = par_response.data.access_uri
    

    用这个URL发起DELETE请求,就能直接删除目标对象。

  • 直接调用OCI SDK/API删除
    如果你的服务有OOS直接访问权限,跳过预认证URL,直接调用删除接口:

    client.delete_object(your_namespace, your_bucket, object_name="filename")
    

    只要IAM权限配置正确(需objectstorage:object:Delete权限),就能立即完成删除,比预认证URL更可靠。

额外提醒

  • 生命周期策略是异步触发的,最短也要1小时左右生效,完全不满足立即删除的需求,必须用主动DELETE请求。
  • 如果是通过文件夹预认证URL创建的对象,删除时要确保预认证规则的资源路径覆盖该对象——比如规则路径是/my-folder/*才能删里面的文件,要是只设了/my-folder/(不带通配符),只能操作文件夹前缀本身,没法删里面的具体对象。

内容的提问来源于stack exchange,提问作者Datha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 19:52:15