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

如何在Ruby中为S3生命周期配置设置前缀与多标签组合过滤规则

问题原因

你使用的 aws-sdk-s3 v1.103.0 版本在序列化生命周期规则时,对AND过滤器下的多标签参数格式有特殊要求,你当前使用的复数键 tags 会生成不符合S3 Schema规范的XML结构,因此触发格式校验错误。

解决方法

将规则中and下的复数键 tags 改为单数的 tag 即可,修改后的规则代码如下:

aws_s3_backup_prefix = "production_backup" # 实际使用时从环境变量中读取

rule_expire_yearly_after_10y = {
        id: "Expire 1 January backups after 10 years",
        filter: {
          and: {
            prefix: aws_s3_backup_prefix,
            # 仅修改此处的键名即可,标签数组内容保持不变
            tag: [
              { key: 'date-month-day', value: '1'},
              { key: 'date-month-num', value: '1'}
            ]
          }
        },
        status: 'Enabled',
        expiration: {
          days: 3650
        }
      }

原理说明

旧版本Ruby S3 SDK序列化Hash为XML时,复数键tags会额外生成一层<Tags>包裹节点,但S3官方的生命周期规则Schema要求<And>节点下直接放置多个<Tag>子节点,不需要外层的包裹节点,因此会返回XML格式错误。
该单数tag的写法在新版SDK中也可以正常兼容,如果你后续升级SDK到最新版本,也可以切换回官方文档标注的tags写法。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:15:03