AWS CLI -“Aws-shell”命名空间对象没有属性:cli_binary_format

问题描述 投票:0回答:2

当我尝试使用

aws-shell
检查我的 s3 存储桶列表时,出现此错误:

我的环境是

[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

我的 Envir 有什么问题吗?版本?请指教

linux amazon-web-services amazon-s3 command-line-interface aws-cli
2个回答
7
投票

请参阅下面的推荐方法 - 或者 - 继续阅读 aws-shell 的修复程序。

aws-shell 需要 awscli 版本 1 才能正常运行,否则您将收到 cli_binary_format 错误。要解决此问题,您可以在 cloudshell 环境中执行以下操作。

  1. 安装 awscli 版本 1 和 aws-shell:

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

  1. 更新您的 PATH 以使 awscli 版本 1 成为默认版本:

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

但是,更好的解决方案是使用 awscli 版本 2 并启用自动提示功能,如此处所述 https://github.com/aws/aws-cli/issues/5664

aws configure set cli_auto_prompt on

export AWS_CLI_AUTO_PROMPT=on

然后 awscli 版本 2 的行为将与 aws-shell 类似,提供完成提示等。


0
投票

回复真的很晚,但对于那些来到这里的人来说,问题是 boto3 在某个地方将 AWS_DATA_PATH 添加到环境中。这会使 aws cli 感到困惑并导致问题,我刚刚创建了 env 的副本并删除了 AWS_DATA_PATH。问题已解决。

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

os.execvpe('aws',['aws', 's3', 'ls',env)
© www.soinside.com 2019 - 2024. All rights reserved.