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 в качестве лямбда-слоя, лямбда-код работал отлично.