更新:重写问题
我有一个通过 terraform 启动的 ec2 实例,它是无法到达;我基于完全相同的图像手动启动了完全相同类型的实例,并且能够毫无问题地连接到它。
比较这两个实例,我能看到的唯一区别是在网络设置方面:
Public IPv4 DNS
对于可访问(手动启动)的实例列出,但对于经过地形改造的实例则为空白。Answer private resource DNS name
IPv4 (A)
对于可访问实例,将其列出;对于已改造的实例,则为空白。
问:我该如何提供这一缺失的基础信息?
有人能指出我在 Terraform 中指定这一点的正确方向吗?
答案1
以下两篇文章也许可以回答你的问题。
来自帖子 EC2 实例没有公共 DNS:
- 转到 console.aws.amazon.com
- 去服务 -> VPC
- 打开您的 VPC
- 选择您的 VPC连接到你的EC2并
- 选择操作 > 编辑 DNS 主机名
- 将 DNS 主机名:更改为 YES
帖子 公共子网中的 EC2 实例没有公共 IP 添加了以下内容:
在子网中启用“自动分配 IPv4”后,您的实例将不会自动将公共 IP 附加到其 ENI。一种可能的解决方案是无需启动新的 EC2,即可将弹性 IP(如 @Oleksii Donoha 在评论中所建议的那样)附加到此实例。您可以按照 aws 文档进行操作分配弹性 IP 地址 进而将其与您正在运行的实例关联。
附注:无法附加短暂的ip 到已创建的 ENI 或 EC2 实例。查看讨论 这里。
答案2
我遇到了同样的问题
1\ 如果从地面构建,使用自定义 vpc 和路由表,可以尝试使用 terraform 提供程序aws_vpc
有一个参数叫做enable_dns_hostnames
设置true
然后在aws_instance
public_dns
将自动分配Public IPv4 DNS
其他解决方法可能是
2\ 使用 AWS 提供的默认 vpc 路由表
3\ 使用 aws_ec2_module,这样您就不需要从头开始构建