以下は、私が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:
次のシナリオでは、このエラーメッセージが表示される可能性があります。
AWS EC2/SSMコンソールにログインし、管理しようとしているインスタンスがSYSTEMS MANAGER SHARED RESOURCESに表示されることを確認する必要があります- Managed Instancesリストと、Pingステータスのオンライン。そうでない場合は、問題のインスタンスにコマンドを送信する前に修正する必要があります。
インスタンスに SSM setup があることを確認してください。 Linuxの場合、Amazon Linux AMIを使用するか、手動でインストールする必要があります。
実行:
aws ssm describe-instance-information --output text
インスタンスからSSMエージェントのバージョンを確認します。したがって、インスタンスがそのリストに含まれていることを確認してください。
まったく同じエラーメッセージが表示され、問題はawsのboto3のバージョンでした。
Boto3をラムダレイヤーとして追加すると、ラムダコードは完全に実行されました。