I am trying to send command to a running ubuntu ec2 instance. I have configured the appropriate role and I have an ssm agent running on the ec2 instance. Using the boto3 SDK I am able to use the client.send_command()
function to successfully send a shell command and was subsequently able to get the command Id. Now the challenge is polling for the result. I am trying to use the client.get_command_invocation()
function but keep getting a InvocationDoesNotExist
error. I am confident that I am using the correct command ID and instance ID because I have tested these using the AWS CLI as in aws ssm list-command-invocations --command-id #### --instance-id i-#####
and this worked. Here is a snippet of my code:
`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)`
Here is the returned error:
botocore.errorfactory.InvocationDoesNotExist: An error occurred (InvocationDoesNotExist) when calling the GetCommandInvocation operation
Thanks in advance.