Получение вызова команды в AWS SSM - PullRequest
0 голосов
/ 27 апреля 2018

Я пытаюсь отправить команду работающему экземпляру ubuntu ec2. Я настроил соответствующую роль, и у меня есть агент ssm, работающий на экземпляре ec2. Используя boto3 SDK, я смог использовать функцию client.send_command() для успешной отправки команды оболочки и впоследствии смог получить идентификатор команды. Теперь задача - опросить результат. Я пытаюсь использовать функцию client.get_command_invocation(), но получаю ошибку InvocationDoesNotExist. Я уверен, что использую правильный идентификатор команды и идентификатор экземпляра, потому что я протестировал их с помощью интерфейса командной строки AWS, как в aws ssm list-command-invocations --command-id #### --instance-id i-#####, и это сработало. Вот фрагмент моего кода:

`ssm_client = boto3.client('ssm')
target_id = "i-####"
response = ssm_client.send_command(
            InstanceIds=[
                target_id 
                    ],
            DocumentName="AWS-RunShellScript",
            Comment="Code to run" ,
            Parameters={
                    "commands": ["ls -l"]
                        }
            )
cmd_id= response['Command']['CommandId']
response = ssm_client.get_command_invocation(CommandId=cmd_id, 
InstanceId=target_id)
print(response)`

Вот возвращенная ошибка: botocore.errorfactory.InvocationDoesNotExist: An error occurred (InvocationDoesNotExist) when calling the GetCommandInvocation operation

Заранее спасибо.

1 Ответ

0 голосов
/ 11 мая 2018

У меня была та же проблема, я исправил ее, добавив вызов time.sleep () перед вызовом get_command_invocation (). Короткой задержки должно быть достаточно.

...