InvalidInstanceId: Произошла ошибка (InvalidInstanceId) при вызове операции SendCommand

Ниже приведен код, который я запускаю из 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: 

Ответ 1

Следующие сценарии могут привести к этому сообщению об ошибке:

  • Идентификатор экземпляра недействителен (в комментариях вы подтвердили, что это не так)
  • Экземпляр находится в другом регионе (в комментариях вы подтвердили, что это не так)
  • Экземпляр в данный момент не находится в состоянии выполнения state
  • В экземпляре не установлен и не работает агент SSM AWS.

Вам необходимо войти в консоль AWS EC2/SSM и убедиться, что экземпляры, которыми вы пытаетесь управлять, отображаются в списке ОБЩИХ РЕСУРСОВ СИСТЕМНОГО МЕНЕДЖЕРА - Управляемые экземпляры, и что они показывают статус Ping из Online. Если нет, вам нужно это исправить, прежде чем пытаться отправить команды в рассматриваемый экземпляр (ы).

Ответ 2

Убедитесь, что в вашем экземпляре есть настройка SSM. Для Linux вам нужно использовать Amazon Linux AMI или установить вручную.

Пробег:

aws ssm describe-instance-information --output text

чтобы увидеть версию агента SSM из ваших экземпляров. Поэтому убедитесь, что ваш экземпляр находится в этом списке.

См. также: Команда отправки SSM экземпляру EC2 завершилась неудачно.

Ответ 3

У меня было точно такое же сообщение об ошибке, и проблема была в версии boto3 в aws.

Когда я добавил boto3 в качестве лямбда-слоя, лямбда-код работал отлично.