You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 01:35:18