Ce qui suit est le code que j'exécute à partir de python pour exécuter des commandes dans l'instance 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"]})
Mais cela donne l'erreur ci-dessous
InvalidInstanceId: An error occurred (InvalidInstanceId) when calling the SendCommand operation:
Les scénarios suivants peuvent entraîner ce message d'erreur:
Vous devez vous connecter à la console AWS EC2/SSM et vous assurer que les instances que vous essayez de gérer s'affichent dans les SYSTEMS MANAGER SHARED RESOURCES - Liste des instances gérées , et qu'elles affichent un état Ping de En ligne . Sinon, vous devez corriger cela avant d'essayer d'envoyer des commandes aux instances en question.
Assurez-vous que votre instance a configuration SSM . Pour Linux, vous devez utiliser Amazon Linux AMI ou installer manuellement.
Courir:
aws ssm describe-instance-information --output text
pour voir la version de l'agent SSM à partir de vos instances. Assurez-vous donc que votre instance figure sur cette liste.
Voir aussi: Échec de la commande d'envoi SSM vers l'instance EC2 .
J'ai eu exactement le même message d'erreur et le problème était la version de boto3 dans aws.
Lorsque j'ai ajouté boto3 en tant que couche lambda, le code lambda a parfaitement fonctionné.