当我尝试使用
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 有什么问题吗?版本?请指教
请参阅下面的推荐方法 - 或者 - 继续阅读 aws-shell 的修复程序。
aws-shell 需要 awscli 版本 1 才能正常运行,否则您将收到 cli_binary_format 错误。要解决此问题,您可以在 cloudshell 环境中执行以下操作。
pip3 install --user -U awscli aws-shell boto3 --use-feature=2020-resolver --no-cache-dir
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 类似,提供完成提示等。
回复真的很晚,但对于那些来到这里的人来说,问题是 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)