在ElasticBeanstalk上创建应用程序时的AWS UnicodeDecodeError

时间:2016-01-09 16:41:26

标签: python amazon-web-services elastic-beanstalk

尝试使用CLI在ElasticBeanstalk上创建Python应用程序,在选择我的平台版本后,我收到以下错误:

Select a platform version.
1) Python 3.4
2) Python
3) Python 2.7
4) Python 3.4 (Preconfigured - Docker)
(default is 1): 1
ERROR: UnicodeDecodeError :: 'ascii' codec can't decode byte 0xe2 in position 891: ordinal not in range(128)

我发现了这个:https://github.com/aws/aws-cli/issues/708这让我觉得我可能粘贴了我的AWS凭据并添加了换行符。我想重新输入凭据,但似乎它们被缓存在某个地方(它在第一次安装尝试时询问了我们,但没有任何子序列尝试)。我没有在我的环境变量中看到它们,我一直在尝试之间删除.elasticbeanstalk。有什么想法吗?

更新:我删除了.aws / config,这样我就可以重新输入我的凭据了。当我尝试运行 eb init

时仍然会出现相同的错误

update2:--debug输出的要点可以在这里找到:https://gist.github.com/dshuhler/8d64849021c48bf1ba71

3 个答案:

答案 0 :(得分:1)

tldr;我的.gitignore具有隐藏的非ascii字符,因为我从流行的Github存储库中复制并粘贴了特定于Python的.gitignore


我采取的找出根本原因的步骤

因此,我找不到任何可以帮助我解决该问题的答案。看起来,由于不同的原因,不同的人看到此错误。

我将分享我为找出问题原因所采取的步骤。确保使用--debug标志

运行命令
$ eb init --debug

我的输出是这样的

2019-05-05 13:44:17,548 (INFO) eb : Traceback (most recent call last):
  File "/Users/mudassirali/.virtualenvs/rtp_dev/lib/python3.6/site-packages/ebcli/core/ebrun.py", line 62, in run_app
    app.run()
  File "/Users/mudassirali/.virtualenvs/rtp_dev/lib/python3.6/site-packages/cement/core/foundation.py", line 797, in run
    return_val = self.controller._dispatch()
  File "/Users/mudassirali/.virtualenvs/rtp_dev/lib/python3.6/site-packages/cement/core/controller.py", line 472, in _dispatch
    return func()
  File "/Users/mudassirali/.virtualenvs/rtp_dev/lib/python3.6/site-packages/cement/core/controller.py", line 478, in _dispatch
    return func()
  File "/Users/mudassirali/.virtualenvs/rtp_dev/lib/python3.6/site-packages/ebcli/core/abstractcontroller.py", line 89, in default
    self.do_command()
  File "/Users/mudassirali/.virtualenvs/rtp_dev/lib/python3.6/site-packages/ebcli/controllers/initialize.py", line 118, in do_command
    initializeops.setup(app_name, region_name, platform, dir_path=None, repository=repository, branch=branch)
  File "/Users/mudassirali/.virtualenvs/rtp_dev/lib/python3.6/site-packages/ebcli/operations/initializeops.py", line 57, in setup
    setup_ignore_file()
  File "/Users/mudassirali/.virtualenvs/rtp_dev/lib/python3.6/site-packages/ebcli/operations/initializeops.py", line 92, in setup_ignore_file
    source_control.set_up_ignore_file()
  File "/Users/mudassirali/.virtualenvs/rtp_dev/lib/python3.6/site-packages/ebcli/objects/sourcecontrol.py", line 294, in set_up_ignore_file
    for line in f:
  File "/Users/mudassirali/.virtualenvs/rtp_dev/lib/python3.6/encodings/ascii.py", line 26, in decode
    return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 1287: ordinal not in range(128)

我跳到了源代码,特别是这一点

for line in f:

我发现这是引发错误的部分

with open('.gitignore', 'r') as f:
    for line in f:
        if line.strip() == git_ignore[0]:
            return

一旦我将.gitignore删除后,它的工作原理就像是魅力(后来又添加了它,没有复制粘贴)

答案 1 :(得分:0)

您的凭据凭据位于~/.aws/config

答案 2 :(得分:0)

可能是您的Beanstalk运行了未定义LC_ALL的Python环境。在Beanstalk环境属性中设置LC_ALL=en_US.UTF-8可以为我解决此问题。

有关这些语言环境变量的一些背景信息,请访问:Explain the effects of export LANG, LC_CTYPE, LC_ALL