Search code examples
linuxamazon-web-servicesamazon-s3command-line-interfaceaws-cli

AWS CLI -'Aws-shell' namespace object has no attribute: cli_binary_format


When I attempt to use aws-shell to check my s3 bucket list I get this error: enter image description here

my environment is [cloudshell-user@ip-10-0-***~]$ aws --version

aws-cli/2.2.43 Python/3.8.8 Linux/4.14.252-195.483.amzn2.x86_64 exec-env/CloudShell exe/x86_64.amzn.2 prompt/off

Is anything wrong with any of my Envir. verions? Pls advice


Solution

  • See below for recommended approach -or- keep reading for a fix for aws-shell.

    aws-shell requires awscli version 1 to function correctly, otherwise you'll receive the cli_binary_format error. To work around this you can do the following in the cloudshell environment.

    1. Install awscli version 1 and aws-shell:

    pip3 install --user -U awscli aws-shell boto3 --use-feature=2020-resolver --no-cache-dir

    1. Update your PATH to cause the awscli version 1 to be the default:

    export PATH=/home/cloudshell-user/.local/bin/:$PATH

    However, the better solution would be to use awscli version 2 and enable the auto prompt feature as described here https://github.com/aws/aws-cli/issues/5664

    aws configure set cli_auto_prompt on

    or

    export AWS_CLI_AUTO_PROMPT=on

    Then awscli version 2 will behave similarly to aws-shell, providing completion hints etc.