使用 terraform 将 EC2 自己的 IP 添加为入站规则

Posted

技术标签:

【中文标题】使用 terraform 将 EC2 自己的 IP 添加为入站规则【英文标题】:Add EC2s own IP as inbound rule using terraform 【发布时间】:2021-09-21 03:43:57 【问题描述】:

我有一个许可证服务器,它在与我使用 terraform 启动的 EC2 相同的安全组和 VPC 中设置了静态 IP。基本上我希望许可证服务器和这些 EC2 能够通信。目前他们不能,因为安全没有将 EC2 添加为入站规则,因此许可证服务器也将其作为入站规则(相同的安全组)获取。我想知道如何将我在 terraform 中启动的 EC2 的 IP 添加到其安全组的入站,以便它可以与许可证服务器通信?

【问题讨论】:

所以您不知道要添加的 IP 地址? 不,我没有,每次 EC2 启动时它都会改变 那么您想要实例上的公共静态 IP,还是您的本地工作站? 我想将EC2的公网IP添加到入站规则中 很抱歉,但很难看到您想要实现的目标。您能否提供您的 TF 代码并解释它失败的原因并提供任何错误消息。 【参考方案1】:

没有“在同一个安全组内”这样的概念。安全组规则分别适用于每个实例。

正确的配置是:

EC2 实例 (EC2-SG) 创建一个安全组,允许适当的入站访问以使用该实例,许可服务器 (License-SG) 创建一个安全组,允许来自EC2-SG 的许可端口上的入站访问

也就是说,您需要两个安全组。 License-SG 将允许来自与 EC2-SG 关联的任何 EC2 实例的入站访问。您可以根据需要为您的实例添加更多安全组 - 只需将它们作为源添加到 License-SG

安全组也可以引用自己。在您当前的情况下,实例和许可服务器都与相同安全组相关联,您可以添加一个允许来自自身的入站连接的规则。但是,这也意味着实例允许来自许可服务器的入站连接,这不是正确的配置。

请注意,VPC 内的所有通信都应通过私有 IP 地址进行,否则流量会从 VPC 退出然后再次进入,这会导致安全组无法正常运行(以及花费你更多的钱!)。

【讨论】:

以上是关于使用 terraform 将 EC2 自己的 IP 添加为入站规则的主要内容,如果未能解决你的问题,请参考以下文章

引用 IP 地址生成配置文件时的 Terraform 循环依赖问题

在 terraform 中使用模块将多个安全组分配给 ec2 时出错

如何使用 terraform 将负载均衡器添加到 ec2 实例

如何使用 terraform 将 aws ec2 私有 ips 传递给模板文件

Terraform - 创建 EBS 的快照,然后将快照转换为 EBS 并附加到 EC2

Terraform 获取 api 网关的 ip 地址