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

OpenStack Swift对象元数据增查异常求助:REST API与Horizon UI操作指导

OpenStack Swift 对象元数据操作方案

一、Horizon Web UI 添加与查看对象元数据

可以通过Horizon控制台操作对象元数据,步骤如下:

  • 登录Horizon,进入项目 → 对象存储 → 容器
  • 点击目标对象所在的容器名称,进入对象列表页
  • 找到目标对象,点击右侧的下拉菜单(⋮),选择编辑元数据
  • 在编辑界面中,添加自定义元数据:键名必须以X-Object-Meta-开头(例如X-Object-Meta-Description),填写对应值后点击保存
  • 查看元数据:同样在对象的下拉菜单中选择查看元数据,即可查看所有系统默认及自定义元数据

二、REST API 元数据操作(解决HEAD请求无元数据问题)

1. 添加元数据的正确请求方式

单个元数据

curl -X POST -H "X-Auth-Token: <你的认证令牌>" \
     -H "X-Object-Meta-<自定义键名>: <对应值>" \
     <Swift端点>/v1/AUTH_<项目ID>/<容器名>/<对象名>

多个元数据

curl -X POST -H "X-Auth-Token: <你的认证令牌>" \
     -H "X-Object-Meta-Key1: Value1" \
     -H "X-Object-Meta-Key2: Value2" \
     <Swift端点>/v1/AUTH_<项目ID>/<容器名>/<对象名>

注意:所有自定义元数据键名必须以X-Object-Meta-为前缀,否则Swift不会将其识别为自定义元数据

2. HEAD请求无元数据的原因及解决

从你提供的swift capabilities输出中,tempurl中间件配置了:

outgoing_remove_headers: [u'x-object-meta-*'] 
outgoing_allow_headers: [u'x-object-meta-public-*']

这意味着:

  • 普通自定义元数据(非public-前缀)会在响应中被过滤,所以HEAD请求无法返回这些元数据
  • 若要让元数据能通过HEAD请求返回,可将元数据键名改为X-Object-Meta-Public-*开头(例如X-Object-Meta-Public-Tag),这类元数据会被允许出现在响应头中

三、操作元数据的配置要求

从当前swift capabilities输出看,默认配置已满足元数据操作的基本要求:

  • max_meta_count: 90:支持最多90个元数据键值对
  • max_meta_name_length: 128:元数据键名最大长度128字符
  • max_meta_value_length: 256:元数据值最大长度256字符
  • max_meta_overall_size: 4096:所有元数据总大小不超过4KB

无需额外修改配置即可添加元数据,但如果需要解除HEAD请求的元数据过滤限制,需调整Swift代理服务的proxy-server.conf中tempurl中间件的配置:

  1. 找到[filter:tempurl]配置段
  2. 修改outgoing_remove_headers,移除x-object-meta-*;或在outgoing_allow_headers中添加需要保留的元数据前缀
  3. 重启Swift proxy服务使其生效

内容的提问来源于stack exchange,提问作者Surya Kumar Kumaravelan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 08:47:34