如何将两个AWS DMS复制实例的replication_instance_id合并为字符串集合?
合并两个AWS DMS复制实例的replication_instance_id到字符串集合
有两种简洁的方式可以合并这两个资源的实例ID,推荐第二种更直观的写法:
方法1:通过concat组合资源列表后遍历
将两个资源的实例列表先合并,再统一提取ID并转成集合:
locals { target_instance_ids = toset(flatten([ for instance in concat( aws_dms_replication_instance.dms_instances_bronze, aws_dms_replication_instance.dms_instances_silver ) : instance.replication_instance_id ])) }
方法2:使用Splat表达式(更优)
利用Terraform的Splat表达式[*]直接提取每个资源实例的replication_instance_id属性,再通过concat合并两个属性列表,最后转成集合:
locals { target_instance_ids = toset(concat( aws_dms_replication_instance.dms_instances_bronze[*].replication_instance_id, aws_dms_replication_instance.dms_instances_silver[*].replication_instance_id )) }
这种写法无需嵌套循环和flatten,代码更简洁易读,同时toset会自动处理可能存在的重复ID(如果有)。
内容的提问来源于stack exchange,提问作者Ross Bush
相关产品推荐
相关产品推荐

