适用版本: 6.8-8.9
1. 错误异常的基本描述 #
<storage_class> is not a valid S3 Storage Class 表示 Elasticsearch 在解析 S3 仓库配置时,发现 storage_class 不是 AWS SDK 可识别的有效存储类型,因此拒绝创建或使用该仓库配置。
常见现象 #
- 注册或更新 S3 仓库时直接返回错误。
- 节点日志显示某个
storage_class无法转换为 S3 Storage Class。 - 常见错误值包括拼写错误、大小写不对,或误用了 Glacier 这类不被当前实现支持的类型。
典型报错与异常栈 #
BlobStoreException: `<storage_class>` is not a valid S3 Storage Class.
2. 为什么会发生这个错误 #
源码表明,这里会尝试把字符串转成 AWS 存储类型枚举;如果转换失败,就抛出异常。除此之外,某些虽然是 AWS 合法值,但当前实现明确不支持,例如 Glacier,也会单独报错。
常见触发原因包括:
- 将
STANDARD_IA写成standard_ia、standard-ia等非标准形式。 - 使用了当前 Elasticsearch 版本或仓库实现不支持的存储类型。
- 从 Terraform、控制台或第三方文档复制参数时,没有按 Elasticsearch 期望的取值填写。
3. 如何排查和解决这个异常和解决这个异常 #
- 查看仓库配置中的
storage_class原始值。 - 对照当前 Elasticsearch 版本和 S3 仓库文档确认支持列表。
- 检查是否使用了 Glacier 或其他归档类存储。
- 修正后重新注册或更新仓库,并执行一次 verify。
相关 Elasticsearch API 及调用说明 #
curl -X GET "http://localhost:9200/_snapshot/my_s3_repo?pretty"
curl -X POST "http://localhost:9200/_snapshot/my_s3_repo/_verify?pretty"
排查时需要注意的问题 #
- 不同版本支持的取值和行为可能有差异,先看当前版本文档。
storage_class填错时,先修正值,不要直接把问题归因到 IAM 或网络。
4. 如何解决这个错误 #
常用修复思路 #
- 将
storage_class改为当前版本支持的合法值。 - 避免使用仓库实现明确不支持的归档类存储类型。
- 统一仓库模板,避免环境之间出现不同写法。
后续注意事项与推荐建议 #
- 在发布仓库配置前,增加枚举值校验。
- 为不同云环境维护明确的 S3 仓库配置样板。
借助 INFINI 产品提升排障效率 #
- INFINI Console 可用于对比不同环境的仓库配置差异。
- INFINI Gateway 可用于审计仓库配置变更请求,快速定位错误值来源。
5. 小结 #
is not a valid S3 Storage Class 说明问题不在快照数据,而在仓库配置值本身。把 storage_class 修正为当前实现支持的合法值,问题通常就能直接消除。
相关错误 #
附:日志上下文 #
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.");
}





