InvalidInstanceId:调用SendCommand操作时发生错误(InvalidInstanceId)

时间:2017-10-31 11:55:06

标签: python amazon-web-services amazon-ec2 boto3

以下是我从python运行以在aws ec2实例

中执行命令的代码
import boto3
ec2 = boto3.client('ssm',region_name='us-east-1',aws_access_key_id='xxxxxxxxxxxxxxx',aws_secret_access_key='xxxxxxxxx')
a = ec2.send_command(InstanceIds=ids, DocumentName='AWS-RunShellScript', Comment='abcdabcd', Parameters={"commands":["ifconfig"]})

但是它给出了以下错误

InvalidInstanceId: An error occurred (InvalidInstanceId) when calling the SendCommand operation: 

4 个答案:

答案 0 :(得分:7)

以下方案可能会导致出现此错误消息:

  • 实例ID无效(在您已经验证过的评论中)
  • 实例位于不同的区域(在您已经验证过的评论中)
  • 实例目前不在正在运行状态
  • 实例没有安装并运行AWS SSM agent

您需要登录AWS EC2 / SSM控制台并确保您正在尝试管理的实例显示在系统管理员共享资源 - 托管实例列表,并显示在线 Ping状态。如果没有,您需要在尝试向相关实例发送命令之前解决此问题。

答案 1 :(得分:3)

确保您的实例有SSM setup。对于Linux,您需要使用 Amazon Linux AMI 或手动安装。

执行命令

aws ssm describe-instance-information --output text

从您的实例中查看SSM代理版本。因此,请确保您的实例位于该列表中。

另请参阅:SSM send command to EC2 instance Failed

答案 2 :(得分:0)

我有完全相同的错误消息,而问题是abo中boto3的版本。

当我将boto3添加为lambda层时,lambda代码可以完美运行。

答案 3 :(得分:0)

您必须确保在实例上安装了SSM代理,其中preinstalled在一些AMI上。

另外,最终对我有用的是通过AWS Systems Manager service上的设置。快速设置非常简单,只需几分钟即可运行。在我完成了快速设置并直接在Systems Manager上测试了命令之后,我的Lambda函数也成功运行了。