Terraform中aws_lambda_event_source_mapping不支持self_managed_kafka_event_source_config块
问题分析与解决方案
核心原因
self_managed_kafka_event_source_config 块是AWS Terraform Provider 3.70.0版本才引入的新配置块,你的AWS Provider版本低于这个版本,所以Terraform无法识别该块,抛出"Unsupported block type"错误。注意:这里的关键是AWS Provider版本,和你使用的Terraform核心版本v1.5.7无关。
解决方案
方案1:升级AWS Provider版本
在你的Terraform配置的provider "aws"块中指定版本≥3.70.0,示例:
provider "aws" { region = "你的AWS区域" version = ">= 3.70.0" }
执行terraform init -upgrade完成Provider升级后,你原有包含self_managed_kafka_event_source_config块的配置即可正常生效。
方案2:不升级Provider,使用旧版配置方式
如果暂时无法升级AWS Provider,直接在aws_lambda_event_source_mapping资源中添加consumer_group_id参数,无需使用块结构:
resource "aws_lambda_event_source_mapping" "horizon" { function_name = aws_lambda_function.kafka_consumer_identity.arn topics = [var.kafka_topics] starting_position = "TRIM_HORIZON" batch_size = 10 # 直接添加consumer_group_id参数 consumer_group_id = var.consumer_group_id self_managed_event_source { endpoints = { KAFKA_BOOTSTRAP_SERVERS = var.kafka_bootstrap_servers } } source_access_configuration { type = "BASIC_AUTH" uri = var.secret_manager_key_arn } source_access_configuration { type = "VPC_SUBNET" uri = var.vpc_subnet_1 } source_access_configuration { type = "VPC_SUBNET" uri = var.vpc_subnet_2 } source_access_configuration { type = "VPC_SUBNET" uri = var.vpc_subnet_3 } source_access_configuration { type = "VPC_SECURITY_GROUP" uri = var.vpc_security_group } }
补充说明
移除self_managed_kafka_event_source_config块后配置生效,是因为Terraform不再处理未知块,但此时你丢失了consumer_group_id的配置,Lambda会使用默认消费者组ID,这可能不符合业务需求,所以必须通过上述两种方式之一明确设置该参数。
内容的提问来源于stack exchange,提问作者Yongzhi Dai
相关产品推荐
相关产品推荐

