[英]AWS EC2 Windows 10 can't access metadata
有一个脚本调用InitializeInstance.ps1
可以重置一些配置信息。
例如,如果实例更改了子网,则由于缓存的路由规则,它可能无法正常工作。 InitializeInstance.ps1
可以更正此问题。
我们在 EC2 上的 Windows 2016 服务器上遇到了同样的问题。 我们注意到 169 个 IP 上的默认网关路由(持久)指向一个不存在的(旧的?)网关 IP。
在实例元数据开始工作并且 AmazonSSMAgent 服务再次运行之后,我们将路由更改为主适配器的默认网关。
旧情况:
IPv4 Route Table
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 172.16.3.129 172.16.3.152 15
....
===========================================================================
Persistent Routes:
Network Address Netmask Gateway Address Metric
169.254.169.254 255.255.255.255 172.16.0.129 15
169.254.169.250 255.255.255.255 172.16.0.129 15
169.254.169.251 255.255.255.255 172.16.0.129 15
请注意 169 的持久路由上的网关指向一个 IP,这不是 0.0.0.0 的默认值。 此 172.16.0.129 也无法 ping 通。
使用 route CHANGE 更改路线后:
route CHANGE 169.254.169.254 MASK 255.255.255.255 172.16.3.129 METRIC 15 IF 4 /P
route CHANGE 169.254.169.250 MASK 255.255.255.255 172.16.3.129 METRIC 15 IF 4 /P
route CHANGE 169.254.169.251 MASK 255.255.255.255 172.16.2.129 METRIC 15 IF 4 /P
在哪里:
METRIC 15 IF 4
是主适配器的接口 ID,在路由 PRINT 上的接口列表中列出,这在每个实例上也可能不同。我们现在有:
IPv4 Route Table
===========================================================================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 172.16.3.129 172.16.3.152 15
....
===========================================================================
Persistent Routes:
Network Address Netmask Gateway Address Metric
169.254.169.254 255.255.255.255 172.16.3.129 15
169.254.169.250 255.255.255.255 172.16.3.129 15
169.254.169.251 255.255.255.255 172.16.3.129 15
===========================================================================
这基本上就是前面提到的ProgramData/Amazon/EC2-Windows/Launch/Module/Scripts/Add-Routes.ps1
脚本所做的。
无法编辑 John Rotenstein,所以我会在这里添加它,
我通过再次初始化实例解决了这个问题,当您在一个子网或 vpc 中创建图像并在另一个子网或 vpc 中启动它时会发生这种情况。
警告这会更改管理员密码,请确保您有权访问所需的密钥以在控制台获取新密码。
为了仅在运行一次时初始化实例:
C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 -Schedule
为了在每次启动运行时初始化它
C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeInstance.ps1 -SchedulePerBoot
文档: https ://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/ec2launch.html
运行后,重启实例,从控制台获取新密码,里面是 rdp,你可以获取元数据并使用 aws s3 cli / powershell 和附加的实例 IAM 角色
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.