使用Terraform创建Kinesis投递流至OpenSearch时遇版本兼容错误
问题分析与解决方案
核心问题原因
你遇到的错误大概率是Terraform AWS Provider版本过低导致的——旧版本的Provider还未将OpenSearch 2.3纳入Kinesis Firehose目标的支持版本列表,尽管AWS官方已经支持该版本组合。
解决方案步骤
1. 升级Terraform AWS Provider版本
在你的Terraform配置文件(通常是versions.tf或主配置文件)中,将AWS Provider的版本约束更新到足够新的版本(建议>=4.0.0):
terraform { required_providers { aws = { source = "hashicorp/aws" version = ">= 4.0.0" } } }
执行terraform init -upgrade完成Provider升级。
2. 移除废弃的OpenSearch参数
OpenSearch 2.x及以上版本已废弃文档类型(type)概念,你当前配置中的type_name = "test"属于无效参数,需要移除:
elasticsearch_configuration { domain_arn = aws_opensearch_domain.domain.arn role_arn = aws_iam_role.firehose_role.arn index_name = "test" # 移除废弃的type_name参数 # type_name = "test" processing_configuration { enabled = "true" processors { type = "Lambda" parameters { parameter_name = "LambdaArn" parameter_value = "${aws_lambda_function.lambda_processor.arn}:$LATEST" } } } }
3. 验证Firehose目标配置
无需修改destination = "elasticsearch",Terraform的elasticsearch_configuration块同时支持Elasticsearch和OpenSearch(部分新版本Provider也支持destination = "opensearch",两种配置均有效)。
额外检查点
- 确认你的AWS账户所在区域支持OpenSearch 2.3(部分区域可能暂未上线该版本)。
- 检查Firehose角色权限是否包含对OpenSearch域的写入权限(如
es:ESHttpPut等动作),避免后续出现权限类错误。
内容的提问来源于stack exchange,提问作者vishwajeet_preeti
相关产品推荐
相关产品推荐

