环境信息
Ceph 版本:Red Hat Ceph Storage 3.1(对应社区版为 12.2.8)
问题描述
如果在对象存储的 bucket 上设置了 lifecycle(生命周期),那么 rgw 网关返回给客户端的 response headers 中会加一个 x-amz-expiration。
对于 x-amz-expiration 的格式,Amazon 官网给出的示例为:
x-amz-expiration: expiry-data="Fri, 21 Dec 2012 00:00:00 GMT, rule-id="Rule for testfile.txt"
即 “星期,日 月 年,时:分:秒” 的 GMT 格式。并且 Amazon S3 的 JDK 也是按照这个格式来解析的。
在社区版本的 Ceph Luminous 中,无论是否配置 lifecycle ,均不会有此字段。社区版的 Ceph ,直到 Nautilus 版本才有此功能。
但在红帽的的 rhceph3.1 中,红帽自行修复了此问题,不过返回的 respose header 中,格式却为:
expiry-date="Mon Aug 8 08:32:50 2019"
即 “星期 月 日 时:分:秒 年” 格式。由于格式与 Amazon S3 中明显不同,导致 Amazon S3 client 包在解析时一直报 warn 日志。
原因分析
个人推测,Amazon 的格式为 GMT 标准。在 Ceph 社区版无此功能时,红帽作为一个美国公司,直接按照美式时间日期显示格式设置了返回值,造成与标准 GMT 格式不兼容。
解决办法
升级到 Red Hat Ceph Storage 3.3,或者采用 Ceph Nautilus 社区版即可解决此问题。