【发布时间】:2021-11-06 05:48:33
【问题描述】:
我正在学习 Terraform 和 AWS,但在创建 aws_security_group 资源时遇到了麻烦。
我从Terraform Docs 复制了此资源的一个示例,然后我配置了我的数据(我想通过 SSH 访问我的 EC2 资源。我知道这不是一个好习惯,但我只是在学习,我我要在测试后销毁)
resource "aws_security_group" "allow_tls_ssh" {
name = "allow_tls"
description = "Allow TLS inbound traffic"
vpc_id = aws_vpc.vpc.id
ingress = [
{
description = "TLS from VPC"
from_port = 443
to_port = 443
protocol = "tcp"
cidr_blocks = [aws_vpc.vpc.cidr_block]
ipv6_cidr_blocks = [aws_vpc.vpc.ipv6_cidr_block]
prefix_list_ids = []
security_groups = []
self = false
},
{
description = "SSH from VPC"
from_port = 22
to_port = 22
protocol = "tcp"
cidr_blocks = [aws_vpc.vpc.cidr_block]
ipv6_cidr_blocks = [aws_vpc.vpc.ipv6_cidr_block]
prefix_list_ids = []
security_groups = []
self = false
},
{
description = "HTTP from VPC"
from_port = 80
to_port = 80
protocol = "tcp"
cidr_blocks = [aws_vpc.vpc.cidr_block]
ipv6_cidr_blocks = [aws_vpc.vpc.ipv6_cidr_block]
prefix_list_ids = []
security_groups = []
self = false
}
]
tags = {
Name = "allow_tls_ssh"
}
}
然后,当我terraform apply 我得到:
(...)
│ 59: }
│ 60: ]
│ ├────────────────
│ │ aws_vpc.vpc.cidr_block will be known only after apply
│ │ aws_vpc.vpc.ipv6_cidr_block will be known only after apply
│
│ Inappropriate value for attribute "ingress": element 0: attributes "prefix_list_ids", "security_groups", and "self" are required.
╵
这个错误让我很困惑。为什么我在创建时必须指明 security_groups?
【问题讨论】:
-
stackoverflow.com/a/69080432/2291321 会回答您的问题吗?基本上它取决于你使用attribute as block style。
标签: terraform terraform-provider-aws terraform0.12+