【发布时间】:2021-03-13 20:31:54
【问题描述】:
我正在尝试仅从列表中提取特定索引。
模块块
module "app_sg" {
source = "../modules/sg/sg_rules"
ingress_rules = var.app_ingress_rules
egress_rules = var.app_egress_rules
ingress_sg = var.app_ingress_sg
egress_sg = var.app_egress_sg
src_sg_id = ["module.app_sgs.sg_id[0]", "module.app_sgs.sg_id[2]"]
sg_id = module.app_sgs.sg_id[0]
depends_on = [module.app_sgs]
}
资源块
# Application security group rules creation
resource "aws_security_group_rule" "ingress_cidr" {
for_each = var.ingress_rules != "" ? var.ingress_rules : {}
type = "ingress"
from_port = each.key
to_port = each.key
protocol = "tcp"
security_group_id = var.sg_id
cidr_blocks = each.value
}
resource "aws_security_group_rule" "egress_cidr" {
for_each = var.egress_rules != "" ? var.egress_rules : {}
type = "egress"
from_port = each.key
to_port = each.key
protocol = "tcp"
security_group_id = var.sg_id
cidr_blocks = each.value
}
resource "aws_security_group_rule" "ingress_sg" {
for_each = var.ingress_sg != "" ? var.ingress_sg : {}
type = "ingress"
from_port = each.key
to_port = each.key
protocol = "tcp"
security_group_id = var.sg_id
source_security_group_id = var.src_sg_id
}
resource "aws_security_group_rule" "egress_sg" {
for_each = var.egress_sg != "" ? var.egress_sg : {}
type = "egress"
from_port = each.key
to_port = each.key
protocol = "tcp"
security_group_id = var.sg_id
source_security_group_id = var.src_sg_id
}
在运行 terraform apply 时会抛出如下错误
Error: Incorrect attribute value type
on ../modules/sg/sg_rules/main.tf line 29, in resource "aws_security_group_rule" "ingress_sg":
29: source_security_group_id = var.src_sg_id
|----------------
| var.src_sg_id is tuple with 2 elements
Inappropriate value for attribute "source_security_group_id": string required.
有人可以为我提供这种情况的解决方案吗?最终我需要在安全组规则中传递多个source_security_group_id。我试过slice函数,但它只能提取start和end索引。
【问题讨论】:
-
什么是
var.src_sg_id? -
它是
source_security_group_id -
我的意思是
var.src_sg_id的实际值。 -
@Marcin 变量
src_sg_id的值将是["sg-054d0adc1ad49f042" "sg-06368b6a1aebb0e13"]
标签: amazon-web-services syntax terraform interpolation