以下是我从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:
答案 0 :(得分:7)
以下方案可能会导致出现此错误消息:
您需要登录AWS EC2 / SSM控制台并确保您正在尝试管理的实例显示在系统管理员共享资源 - 托管实例列表,并显示在线的 Ping状态。如果没有,您需要在尝试向相关实例发送命令之前解决此问题。
答案 1 :(得分:3)
确保您的实例有SSM setup。对于Linux,您需要使用 Amazon Linux AMI 或手动安装。
执行命令
aws ssm describe-instance-information --output text
从您的实例中查看SSM代理版本。因此,请确保您的实例位于该列表中。
答案 2 :(得分:0)
我有完全相同的错误消息,而问题是abo中boto3的版本。
当我将boto3添加为lambda层时,lambda代码可以完美运行。
答案 3 :(得分:0)
您必须确保在实例上安装了SSM代理,其中preinstalled在一些AMI上。
另外,最终对我有用的是通过AWS Systems Manager service上的设置。快速设置非常简单,只需几分钟即可运行。在我完成了快速设置并直接在Systems Manager上测试了命令之后,我的Lambda函数也成功运行了。