CloudFormation创建AWS MSK配置失败,请求排查问题原因
问题原因及解决方案
原因分析
你遇到的错误核心有两点:
- 参数类型不匹配:
retention.ms和retention.bytes是Topic级别的配置参数,不属于Broker全局配置范畴,不能放在AWS::MSK::Configuration的ServerProperties中。MSK的这个资源专门用于定义Broker层面的全局配置,而非单个Topic的属性。 - 全局模板验证机制:AWS MSK的Configuration是全局可用的配置模板,会被校验是否兼容所有MSK支持的Kafka版本(即错误信息里列出的全量版本),哪怕你只指定了3.5.1。而Topic级参数本身就不属于Broker配置,自然无法通过全局校验。
解决方案
1. 使用Broker级默认参数(推荐)
如果想设置所有新创建Topic的默认保留策略,应该用Broker级别的参数:log.retention.ms和log.retention.bytes,这两个是Broker的全局默认值,所有新Topic会自动继承。修正后的CloudFormation模板如下:
MSKClusterConfiguration: Type: AWS::MSK::Configuration Properties: Name: MJPMSKConfiguration KafkaVersionsList: - 3.5.1 ServerProperties: | log.retention.ms=-1 log.retention.bytes=900000000
2. 单独配置特定Topic的保留策略
如果需要给某个Topic设置差异化的保留策略,不要在MSK Configuration里配置,而是在创建Topic时通过Kafka CLI、API或MSK控制台单独设置:
- Kafka CLI示例:
kafka-topics.sh --bootstrap-server <你的MSK集群Bootstrap地址> --alter --topic <目标Topic名称> --config retention.ms=-1 --config retention.bytes=900000000
内容的提问来源于stack exchange,提问作者Ádám Sütő
相关产品推荐
相关产品推荐

