首页 > 解决方案 > Terraform - 在 VPC 对等连接之间授权安全组

问题描述

我在 AWS 上运行,我有 VPC-A 和 VPC-B 我在两个 VPC 之间有一个 VPC 对等互连

我想允许从 VPC-B 中的 SecurityGroupB 到 VPC-A 中的 SecurityGroupA 的流量

到目前为止,我通过以下调用使用 ruby​​ 客户端完成了此操作

        security_group_a.authorize_ingress(
          ip_permissions: [
            {
              from_port: "-1",
              ip_protocol: "-1",
              to_port: "-1",
              user_id_group_pairs: [
                {
                  description: "Accept all traffic from SecurityGroupB",
                  group_id: security_group_b.id,
                  vpc_id: vpc_b.id,
                  vpc_peering_connection_id: peering_connection_id,
                },
              ],
            },
          ]
        )

我查看了 terraform 的aws_security_group_rule但找不到与上述设置等效的任何内容。

当我尝试将安全组 B 放入安全组 AI 的入口时,会出现以下错误:

Error: Error authorizing security group rule type ingress: InvalidGroup.NotFound: You have specified two resources that belong to different networks

我在这里做错了什么?假设我设置了对等连接,如何创建规则以允许来自 VPC B 上的安全组的流量进入 VPC A 上的安全组?

标签: terraformamazon-vpcterraform-provider-awsaws-security-group

解决方案


如果满足以下条件,安全组规则可以引用对等 VPC 中的安全组:

  1. VPC 必须在同一区域
  2. 对等连接必须处于活动状态
  3. 如果对等 VPC 在另一个账户中,则引用必须包含帐号作为前缀。例如,123456789012/sg-1a2b3c4d

只要满足这些条件,你应该没有问题。

以下是 Terraform 资源外观的示例:

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"
}

推荐阅读