Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

like image 383
linkonabe Avatar asked Jun 21 '26 16:06

linkonabe


2 Answers

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.

like image 160
Chris Lindseth Avatar answered Jun 23 '26 05:06

Chris Lindseth


A really late reply but for those who come here, the issue is that somewhere boto3 adds AWS_DATA_PATH into the env. This confuses aws cli and causes the issue, I just created a copy of the env and removed the AWS_DATA_PATH. problem sorted.

env = os.environ
# Remove injected invalid awsdatapath
env.pop('AWS_DATA_PATH')

os.execvpe('aws',['aws', 's3', 'ls',env)
like image 44
Peter Grape Avatar answered Jun 23 '26 05:06

Peter Grape



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!