web-dev-qa-db-ja.com

InvalidInstanceId:SendCommand操作を呼び出すときにエラーが発生しました(InvalidInstanceId)

以下は、私が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: 
13
Teja

次のシナリオでは、このエラーメッセージが表示される可能性があります。

  • インスタンスIDが無効です(確認したコメントでは無効ではありません)
  • インスタンスは別のリージョンにあります(あなたが確認したコメントではそうではありません)
  • インスタンスは現在Running状態ではありません
  • インスタンスに AWS SSMエージェント がインストールおよび実行されていません。

AWS EC2/SSMコンソールにログインし、管理しようとしているインスタンスがSYSTEMS MANAGER SHARED RESOURCESに表示されることを確認する必要があります- Managed Instancesリストと、Pingステータスオンライン。そうでない場合は、問題のインスタンスにコマンドを送信する前に修正する必要があります。

10
Mark B

インスタンスに SSM setup があることを確認してください。 Linuxの場合、Amazon Linux AMIを使用するか、手動でインストールする必要があります。

実行:

aws ssm describe-instance-information --output text

インスタンスからSSMエージェントのバージョンを確認します。したがって、インスタンスがそのリストに含まれていることを確認してください。

参照: EC2インスタンスへのSSM送信コマンドが失敗しました

5
kenorb

まったく同じエラーメッセージが表示され、問題はawsのboto3のバージョンでした。

Boto3をラムダレイヤーとして追加すると、ラムダコードは完全に実行されました。

0
chrisd