Terraform创建ES/OpenSearch域报InvalidTypeException实例类型无效错误
问题根因
该报错和调整实例规格大小、切换ES/OpenSearch版本无关,核心是实例类型的命名规则匹配错误,附带一个容易忽略的区域支持问题:
- OpenSearch服务(含版本号为
OpenSearch_x.x的全系列,以及7.10版本的托管Elasticsearch)的t3系列实例合法后缀为.search,.elasticsearch后缀仅适配m3、m4、r4这类已经下线/即将下线的老一代实例族,配置里写的t3.large.elasticsearch本身就不是AWS认可的合法实例类型,所以不管换t3.medium还是切7.10版本都会报相同错误。 - 部分特殊区域(例如新开通区域、GovCloud区域)默认不对OpenSearch服务开放t3系列实例,即使后缀写对也会报类型无效。
修复步骤
- 先将配置里的实例类型后缀修正,合法的t3.large实例类型标识为
t3.large.search,修正后的核心配置片段如下:
resource "aws_elasticsearch_domain" "es" { domain_name = "apple-logs" elasticsearch_version = "OpenSearch_1.2" cluster_config { instance_type = "t3.large.search" } tags = { Environment = "prod" } }
- 如果修正后缀后仍报错,登录AWS控制台手动走一遍OpenSearch域创建流程,在「实例类型」下拉选项里直接复制当前区域实际支持的实例类型全称,替换Terraform配置里的
instance_type值即可,不同区域的实例支持列表存在差异,以控制台展示的内容为准。
补充说明:不要凭记忆写实例类型后缀,AWS在OpenSearch上线后已经把新一代实例(t3、m5、r5、c5等)的后缀统一调整为
.search,仅保留老实例族的.elasticsearch后缀兼容存量资源,新创建资源用新后缀才会校验通过。
内容的提问来源于stack exchange,提问作者Red Bottle
相关产品推荐
相关产品推荐

