使用Boto3调用send_command()在Ubuntu实例报错InvalidInstanceId问题咨询
问题解答
1. Ubuntu 22.04是否默认支持SSM?
AWS官方提供的Ubuntu 22.04 AMI(包括你提到的ami-0b828c1c5ac3f13ee)确实默认预装了SSM Agent,但要确保实例能被SSM管理,还需满足以下条件:
- 实例必须绑定包含
*AmazonSSMManagedInstanceCore*权限的IAM角色,确保Agent能与SSM服务完成认证和通信 - 实例网络可达:要么分配公网IP并允许出站访问互联网,要么在VPC中配置SSM、EC2 Messages、CloudWatch Logs的VPC端点,否则Agent无法注册到SSM服务,会导致调用
send_command时提示实例状态无效 - 确认使用的是官方AMI,自定义构建的Ubuntu 22.04镜像可能未预装SSM Agent
2. 为何Amazon AMI偶尔也会出现该问题?
Amazon Linux AMI出现该报错通常是临时状态导致,常见原因包括:
- Agent初始化延迟:实例刚启动后,SSM Agent需要30-60秒完成初始化、注册到SSM服务,此时立即调用
send_command会失败,等待片刻重试即可 - 临时网络异常:实例所在网络出现短暂波动,导致Agent与SSM服务的连接中断,无法保持在线状态
- IAM角色权限延迟:如果实例绑定的IAM角色最近修改过权限,AWS权限同步可能存在延迟,导致Agent无法完成认证
- Agent版本兼容问题:极少数情况下,Amazon Linux上的SSM Agent版本过旧,无法兼容最新的SSM服务API,手动更新Agent即可解决
内容的提问来源于stack exchange,提问作者rare77
相关产品推荐
相关产品推荐

