Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

aws cli output automatically being sent to vi

I am currently learning the AWS CLI (v2) and have installed it on Ubuntu 18.04. I am running zsh with oh-my-zsh installed. I am trying to get aws command output to be reported back to the terminal as a JSON string (or even as text), but the output is always redirected to vi.

My AWS account is brand new - no EC2 instances. When I run the following command:

aws ec2 describe-instances 

It sends the expected output value (e.g. { "Reservations": [] }), but directly to vi instead of outputting a JSON string to the terminal requiring closing vi afterwards. This occurs regardless of output format (json, text, table) or what shell I use (bash, zsh).

I am not sure if this is a AWS CLI configuration issue/change or a shell/Linux configuration issue/change

  • I've reviewed my .zshrc, .bashrc, .bash_profile and .bash_aliases files and have not seen any obvious solution here that would change or redirect output.
  • I've been scouring the AWS CLI documentation, Stack Overflow and Google and I have not found a fix or a similar case.

Thank you for any/all suggestions.

like image 246
moulder Avatar asked Feb 21 '20 21:02

moulder


People also ask

How do I change the default output format in AWS CLI?

1 Answer. Use the output option in the named profile in the 'config' file. It sets the default output format to JSON. Do check out AWS Training by Intellipaat and master AWS.

Why my AWS CLI is not working?

If the aws command cannot be found after first installing or updating the AWS CLI, you might need to restart your terminal for it to recognize any PATH updates. If the aws command cannot be found after first installing or updating the AWS CLI, it might not have been fully installed.

How does AWS CLI communicate?

By default, the AWS CLI sends requests to AWS services by using HTTPS on TCP port 443. To use the AWS CLI successfully, you must be able to make outbound connections on TCP port 443. To use the Amazon Web Services Documentation, Javascript must be enabled. Please refer to your browser's Help pages for instructions.

Which switch provides debug output on the AWS CLI?

The default value is auto . A Boolean switch that enables debug logging. The AWS CLI by default provides cleaned up information regarding any successes or failures regarding command outcomes in the command output. The --debug option provides the full Python logs.


2 Answers

It was the PAGER environment variable set to "less" (which I was confusing with vi).

This fix is to update the ~/.aws/config file and setting cli_pager to an empty value, e.g. :

[default] region = us-west-2 output = json cli_pager = 

Thank you to Sorin who commented on my question lead me to the answer.

like image 137
moulder Avatar answered Sep 22 '22 15:09

moulder


Just run your command with --no-cli-pager like so

aws ec2 describe-instances --no-cli-pager

like image 31
nacholibre Avatar answered Sep 22 '22 15:09

nacholibre