Teo*_*oro 6 amazon-ec2 amazon-web-services
我正在启动一个 Windows 10 EC2 实例,并尝试使用以下命令从 CMD 检索它的实例 ID:
curl http://169.254.169.254/latest/meta-data/instance-id
Run Code Online (Sandbox Code Playgroud)
这一直有效,直到昨天,但现在每次都会失败,引发超时错误。
curl: (7) Failed to connect to 169.254.169.254 port 80: Timed out
Run Code Online (Sandbox Code Playgroud)
我查阅了有关检索 EC2 元数据的 aws 文档,但没有找到有关检索尝试过期时间的任何内容。另外,我尝试从我的实例创建一个 AMI,并基于此 AMI 启动一个新实例,以尝试对可能的过期时间进行某种“刷新”,但没有成功。
我在 IAM 角色中搜索了与检索元数据权限相关的内容,但似乎没有任何内容适合我的问题。
我也尝试过这里的答案,但没有任何内容足以解决我的问题。
可能发生了什么?这种方法连续工作了大约两个月,突然就失效了。
另一篇关于类似问题的帖子得到了解决我的问题的答案。
我只是简单地运行C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1,脚本应用了新生 EC2 Windows 实例的默认规范。我仍然不知道为什么会发生这个问题,但是这个解决方案适用于在配置规范上没有任何松动的人。
小智 2
从您分享的解决方法来看,您无法获取实例 ID 的原因似乎是您的实例的路由配置错误。要从元数据中检索实例 ID,路由 169.254.169.254 必须指向实例的正确网关。当您尝试从自定义 AMI 启动实例时,在 Windows Server 2016 或更高版本中,通常会出现此问题,且该子网与创建 AMI 的父实例不同。
当您运行该命令时,它会调度 InitializeInstance.ps1 脚本,并在下次引导期间重新配置路由。
以后,如果您看到任何此类问题,请确保 IP 169.254.169.254 指向正确的网关,您可以使用命令 ipconfig /all 和路由打印命令检查该网关,以防您发现路由配置错误,您可以使用带有适当参数的路由删除和路由添加命令来使路由正确,或者简单地安排InitializeInstance.ps1脚本,该脚本将在实例下次启动时更正路由。
请参考:https ://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2launch.html
| 归档时间: |
|
| 查看次数: |
7576 次 |
| 最近记录: |