Terraform配置AWS多地域ElastiCache参数冲突报错如何解决
错误原因
出现"global_replication_group_id": conflicts with parameter_group_name错误的核心原因是AWS ElastiCache全局复制组的从属集群规则限制:所有加入全局复制组的跨地域从属复制组,参数组必须从全局复制组(即主复制组关联的参数组)自动继承,不允许独立指定parameter_group_name参数,因此Terraform AWS Provider将这两个参数设置为互斥校验项,配置同时存在时就会抛出冲突错误。
解决方案
- 删除
aws_elasticache_replication_group.secondary资源定义中的parameter_group_name = var.parameter_group_name配置行 - 确认主复制组关联的参数组配置符合业务需求,所有从属集群会自动同步该参数组的配置,无需额外配置
修正后的完整代码示例:
resource "aws_elasticache_global_replication_group" "global-redis" { global_replication_group_id_suffix = "global-redis" primary_replication_group_id = aws_elasticache_replication_group.primary.id } resource "aws_elasticache_replication_group" "primary" { replication_group_id = "redis-primary" replication_group_description = "primary replication group" engine = "redis" engine_version = "5.0.6" node_type = "cache.m5.large" snapshot_retention_limit = var.snapshot_retention parameter_group_name = var.parameter_group_name availability_zones = var.availability-zones-primary number_cache_clusters = 1 } resource "aws_elasticache_replication_group" "secondary" { replication_group_id = "redis-secondary" replication_group_description = "secondary replication group" global_replication_group_id = aws_elasticache_global_replication_group.global-redis.global_replication_group_id snapshot_retention_limit = var.snapshot_retention availability_zones = var.availability-zones-secondary number_cache_clusters = 1 provider = aws.other_region }
注意事项
- 主复制组可以正常自定义
parameter_group_name,修改主集群参数组配置后,所有跨地域从属集群会自动同步更新 - 调整配置后执行
terraform apply不会触发从属集群重建,仅会更新关联属性 - 若使用自定义参数组,需确保参数组的Redis引擎版本与全局复制组使用的引擎版本完全匹配
内容的提问来源于stack exchange,提问作者Shashika
相关产品推荐
相关产品推荐

