首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Terraform计数到for_each重构

Terraform计数到for_each重构
EN

Stack Overflow用户
提问于 2022-10-13 16:18:34
回答 1查看 32关注 0票数 1

试图将计数重构为for_each,并在这方面遇到困难。

代码语言:javascript
复制
local = {
      routes = [
        {
           CIDR = "192.225.0.0/16"
           Name = "rt-1"
         },
         {
           CIDR = "192.225.0.0/16"
           Name = "rt-2"
         },
         {
           CIDR = "192.225.1.0/16"
           Name = "rt-1"
         },
         {
           CIDR = "192.225.1.0/16"
           Name = "rt-2"
        },
        {
           CIDR = "192.225.0.0/16"
           Name = "rt-3"
         }
       ]
    }
Works:
   resource "aws_route" "sample" {    
     count = length(local.routes)
     route_table_id            = local.routes[count.index].Name
    destination_cidr_block    = local.routes[count.index].CIDR
   }

Don't Work:
   resource "aws_route" "sample" {
     for_each = local.routes 
     route_table_id            = local.routes[count.index].Name
     destination_cidr_block    = local.routes[count.index].CIDR
   }

获得此错误时,给定的"for_each“参数值是不合适的:"for_each”参数必须是一个映射或一组字符串,并且您已经提供了一个元组类型的值。

如果我改变我的本地地图,然后它抱怨重复,任何帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-13 17:01:56

for_each元参数接受一个映射或一组字符串,而不是列表,您正在尝试传递一个列表。你可以这样做:

代码语言:javascript
复制
resource "aws_route" "sample" {
   for_each = { for entry in local.routes : "${entry.Name}.${entry.CICR}" => entry }

  route_table_id            = each.value.Name
  destination_cidr_block    = each.value.CIDR
 }

阅读有关for_eachhttps://www.terraform.io/language/meta-arguments/for_each#basic-syntax的更多信息

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74058939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档