适用版本: 6.8-8.9
1. 错误异常的基本描述 #
Glacier storage class is not supported 表示 Elasticsearch 在解析 S3 仓库配置中的 storage_class 时,发现它被设置成了 Glacier,于是直接拒绝该配置。
这是明确的产品限制,不是暂时性故障。原因是快照仓库要求对象可以被及时读取,而 Glacier 属于归档型存储,恢复延迟无法满足仓库读写要求。
常见现象 #
- 创建或更新 S3 仓库时立即报错。
- 即使 AWS 侧桶本身可用,仓库仍无法通过配置校验。
- 常见于从通用对象存储策略模板直接套用到 Elasticsearch 快照仓库。
2. 为什么会发生这个错误 #
源码在把 storage_class 转成 AWS StorageClass 枚举后,会显式判断是否等于 Glacier;如果是,就直接抛出 BlobStoreException。
常见原因包括:
- 为了降低成本,把仓库对象默认存储类配置成 Glacier。
- 复用了面向归档数据的 S3 生命周期或对象模板。
- 自动化模板把不适用于 Elasticsearch 的存储类填进了仓库配置。
3. 如何排查和解决这个异常和解决这个异常 #
- 查看仓库配置中的
storage_class实际值。 - 确认桶默认策略或自动化模板是否强制写入 Glacier。
- 检查是否存在对象生命周期策略,会在上传后快速迁移到 Glacier 或 Deep Archive。
- 用支持即时读取的存储类重新创建或更新仓库后再执行验证。
排查时要注意 #
- 这个错误发生在配置阶段,和网络、权限、桶不存在无关。
- 即使初始创建成功,若后续生命周期策略把对象迁到 Glacier,也会影响快照仓库可用性。
- Elasticsearch 快照仓库更适合 Standard、Standard-IA 等可直接读取的存储类,具体仍以版本文档为准。
4. 如何解决这个错误 #
常用修复思路 #
- 将
storage_class改为 Elasticsearch 支持且可即时读取的 S3 存储类。 - 调整桶生命周期策略,避免把快照仓库对象迁移到 Glacier。
- 如果有成本优化需求,优先通过快照保留策略控制数据量,而不是使用归档型存储类。
预防建议 #
- 为快照仓库单独维护 S3 模板,不要复用通用归档模板。
- 在 IaC 或配置中心中对
storage_class做白名单校验。 - 每次调整 S3 生命周期策略后,都执行一次仓库验证和快照恢复演练。
5. 小结 #
Glacier storage class is not supported 说明当前仓库配置与 Elasticsearch 快照仓库的访问模型不兼容。要解决问题,必须改用可立即读取的存储类,并避免后续生命周期策略把快照对象转入 Glacier。
相关错误 #
附:日志上下文 #
}
try {
final StorageClass _storageClass = StorageClass.fromValue(storageClass.toUpperCase(Locale.ENGLISH));
if (_storageClass.equals(StorageClass.Glacier)) {
throw new BlobStoreException("Glacier storage class is not supported");
}
return _storageClass;
} catch (final IllegalArgumentException illegalArgumentException) {
throw new BlobStoreException("`" + storageClass + "` is not a valid S3 Storage Class.");





