aws / amazon-ssm-agent

An agent to enable remote management of your EC2 instances, on-premises servers, or virtual machines (VMs).
https://aws.amazon.com/systems-manager/
Apache License 2.0
1.04k stars 323 forks source link

[session-manager-plugin] "aws ssm start-session" should print debug output to stderr instead of stdout #358

Open heidemn opened 3 years ago

heidemn commented 3 years ago

Confirm by changing [ ] to [x] below to ensure that it's a bug:

Describe the bug

ssm start-session should enable the user to pipe stdout to a file or other command. Currently, it dumps debug output to stdout, which is not helpful.

SDK version number Same behavior with v1 and v2. aws-cli/1.19.12 Python/3.8.5 Linux/4.19.128-microsoft-standard botocore/1.20.12 aws-cli/2.1.27 Python/3.7.3 Linux/4.19.128-microsoft-standard exe/x86_64.ubuntu.20 prompt/off

$ session-manager-plugin --version -> 1.2.54.0

Platform/OS/Hardware/Device Ubuntu 20.04.1 LTS (in WSL2)

To Reproduce (observed behavior)

$ aws ssm start-session --target i-0123456789abcde --document-name AWS-StartInteractiveCommand --parameters 'command=["echo 42"]' > 42.txt
(no output)

$ cat 42.txt

Starting session with SessionId: root-0001234567abcde
42

Exiting session with sessionId: root-0001234567abcde.

Expected behavior

$ aws ssm start-session --target i-0123456789abcde --document-name AWS-StartInteractiveCommand --parameters 'command=["echo 42"]' > 42.txt

Starting session with SessionId: root-0001234567abcde

Exiting session with sessionId: root-0001234567abcde.

$ cat 42.txt
42

Logs/output n/a

Additional context Use case: Run a command on the instance, and do some follow-up actions (local or remote) based on the output.

Unix commands generally print additional info to stderr. Only the main output / payload should go to stdout.

I could find the text "Starting session" / "session with SessionId" neither in this repo, nor in the botocore repo. -> I assume that this needs to be fixed in the session-manager-plugin, which seems not to be available on Github.

heidemn commented 3 years ago

As requested by @kdaily , I'm re-opening https://github.com/aws/aws-cli/issues/5965 here.

Hi @heidemn, thanks for the report. You're right, this would need to be fixed in the session manager plugin. I will alert the SSM team to this feature request.

You can open this issue here - unfortunately I do not have the permissions to transfer this issue to the other repository. https://github.com/aws/amazon-ssm-agent Thanks!

Thanks in advance for fixing this.

nitikagoyal87 commented 3 years ago

Thanks for your feedback! We have noted this request.

rmccue commented 3 years ago

We are also interested in this feature, as using scp over a shell requires separating stderr from stdout in the stream. As SSM merges these streams together currently, it is not possible to use SSM for scp functionality.

heidemn commented 2 years ago

@nitikagoyal87 looking at the code, it seems that 42milez' PR should fix the issue. Since the change is quite small, can we get it merged soon?

ioquatix commented 1 year ago

We have exactly the same problem.

@MehdiZonjy anyway we can get some more attention on this?

ioquatix commented 1 year ago

Even just an option to switch off this logging, or to specify a log device, e.g. --log /dev/null

tapajos commented 1 year ago

We have exactly the same problem.

@MehdiZonjy anyway we can get some more attention on this?

ioquatix commented 1 year ago

@tapajos you should file an internal support request in AWS.

ioquatix commented 1 year ago

@gianniLesl any chance we can merge this?

cohesion-flotz commented 1 year ago

Bumping this as I am having the same problem :)

ioquatix commented 4 months ago

Any progress on this?

tapajos commented 4 months ago

Not yet!

I’m not having time to work on it.

chancez commented 4 months ago

https://github.com/aws/session-manager-plugin/pull/94 should help with this if anyone wants to test it out.