Terraform-授权VPC对等连接之间的安全组
我在AWS上运行,我有VPC-A和VPC-B 我在两个VPC之间进行了VPC对等 我想允许从VPC-B中的SecurityGroupB到VPC-A中的SecurityGroupA的流量 到目前为止,我使用ruby客户机完成了以下调用Terraform-授权VPC对等连接之间的安全组,terraform,amazon-vpc,terraform-provider-aws,aws-security-group,Terraform,Amazon Vpc,Terraform Provider Aws,Aws Security Group,我在AWS上运行,我有VPC-A和VPC-B 我在两个VPC之间进行了VPC对等 我想允许从VPC-B中的SecurityGroupB到VPC-A中的SecurityGroupA的流量 到目前为止,我使用ruby客户机完成了以下调用 security\u group\u a.授权进入( ip_权限:[ { 从_端口:“-1”, ip_协议:“-1”, 至_端口:“-1”, 用户\标识\组\对:[ { description:“接受来自SecurityGroupB的所有流量”, 组id:安全组id
security\u group\u a.授权进入(
ip_权限:[
{
从_端口:“-1”,
ip_协议:“-1”,
至_端口:“-1”,
用户\标识\组\对:[
{
description:“接受来自SecurityGroupB的所有流量”,
组id:安全组id,
vpc_id:vpc_b.id,
vpc_对等_连接_id:peering_连接_id,
},
],
},
]
)
我看过terraform的,但找不到任何与上述设置相同的东西
当我尝试将安全组B放入安全组A的入口时,我得到以下错误:
Error: Error authorizing security group rule type ingress: InvalidGroup.NotFound: You have specified two resources that belong to different networks
我做错了什么?假设已设置对等连接,如何创建允许流量从VPC B上的安全组进入VPC a上的安全组的规则?如果满足以下条件,则安全组规则可以引用对等VPC中的安全组:
123456789012/sg-1a2b3c4d
李>
只要满足这些条件,你就不会有问题
下面是一个关于地形资源外观的示例:
resource "aws_security_group_rule" "example" {
type = "ingress"
from_port = 0
to_port = 65535
protocol = "tcp"
security_group_id = "sg-123456"
source_security_group_id = "sg-789012"
}
因此@Ben Whaley的回答在入口规则中指定来自另一个VPC的安全组方面是正确的 关于我收到的错误
Error: Error authorizing security group rule type ingress: InvalidGroup.NotFound: You have specified two resources that belong to different networks
原因是在将安全组添加到入口规则之前,我必须添加对vpc对等连接的依赖:
resource "aws_security_group_rule" "vpc_a_to_vpc_b" {
security_group_id = var.vpc_a_security_group_id
description = "Allow vpc_b to communicate with vpc_a"
type = "ingress"
from_port = 0
to_port = 0
protocol = "-1"
source_security_group_id = aws_security_group.vpc_b.id
depends_on = [aws_vpc_peering_connection.vpc_a_to_vpc_b]
}
区别在于
依赖于
,有点吹毛求疵,但第三种选择是模糊的。如果省略它,那么AWS API会将其解析为正确的帐户ID并附加它。然后,这将创建一个差异,因为Terraform希望将123456789012/sg-1a2b3c4d
更改回sg-1a2b3c4d
,因为它没有意识到这种损坏。我怀疑,如果你运气不好,在不同帐户中的对等VPC中有多个相同的安全组ID,那么就会发生不好的事情,因为我认为安全组ID不是全局唯一的,只是整个帐户唯一的。但这是一种令人惊讶的行为,我始终建议人们指定帐户ID作为前缀,即使您不介意它创建的Terraform差异(或不使用Terraform)。此外,答案可能会通过链接到VPC对等和安全组的文档而得到改进。