我们目前正在协助客户解决他们遇到的问题,解决方案是使用 AWS SSM 将文件从 s3 存储桶复制到 Windows 目录位置。
当我们进入“设置清单”并选择手动定位所有实例时,只有可用区 EU-WEST-2A 中的实例出现,而 2b 和 2c 中的实例不可用,当我们尝试使用实例 ID 进行 API 调用以查看是否安装了 SSM 时,没有返回任何信息。这表明 2b 和 2c AZ 中的 Windows 实例上未安装 SSM 代理。
以前有人遇到过类似的事情吗?我们做错了什么吗?
本来想在 AWS 论坛上发布此信息,但我们没有高级支持。
答案1
所有实例是否都具有相同IAM 角色?
为了使 SSM 正常工作,需要满足以下几个先决条件:
实例必须具有进入
ssm.eu-west-2.amazonaws.com
- 如果他们有公共 IP,则通过 IGW,如果他们在私有子网中,则通过 NAT。你
ping ssm.eu-west-2.amazonaws.com
能从所有实例中找出答案吗?实例IAM 角色必须具有连接到 SSM 的权限。确保 IAM 角色具有
AmazonEC2RoleforSSM
附有政策。这SSM 代理必须安装并正在运行。
检查连接性、检查 IAM 角色策略并检查代理。这将是其中之一。
希望有帮助:)
答案2
我找到了问题和解决方案。
似乎基础 AMI 导致了一些问题。发生的事情是,Windows 实例是在可用区 A 中创建的,当创建它时,AWS 中间件会将一些路由配置到该可用区的 Windows 网络配置中,这些路由指向该子网 (AZ) 的网关:
当前配置:
Persistent Routes:
Network Address Netmask Gateway Address Metric
169.254.169.254 255.255.255.255 172.31.0.1 25
169.254.169.250 255.255.255.255 172.31.0.1 25
169.254.169.251 255.255.255.255 172.31.0.1 25
但是当您克隆该 AMI 并将其部署到不同的子网 (AZ) 时,路由不会改变。它应该是这样的;
Persistent Routes:
Network Address Netmask Gateway Address Metric
169.254.169.254 255.255.255.255 172.31.32.1 25
169.254.169.250 255.255.255.255 172.31.32.1 25
169.254.169.251 255.255.255.255 172.31.32.1 25
为了使其达到所需状态,AMI 中包含一个脚本,位于:C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\initializeinstance.ps1
运行此脚本解决了该问题,并且实例现在出现在 SSM 中。