簡體   English   中英

在ElasticBeanstalk上創建應用程序時出現AWS UnicodeDecodeError

[英]AWS UnicodeDecodeError when creating application on ElasticBeanstalk

嘗試使用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憑證上粘貼了換行符。 我想重新輸入憑據,但似乎它們被緩存在某處(它在第一次安裝嘗試時要求我提供它們,但沒有任何子序列嘗試)。 我在我的環境var中看不到它們,並且在嘗試之間刪除了.elasticbeanstalk。 有任何想法嗎?

更新:我刪除了.aws / config,因此它允許我重新輸入我的憑據。 當我嘗試運行eb init時仍然出現相同的錯誤

update2:--debug輸出的要點可以在這里找到: https ://gist.github.com/dshuhler/8d64849021c48bf1ba71

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它就像魅力一樣工作(並在以后添加它而沒有復制粘貼)

您的AWS憑證位於~/.aws/config

可能是您的Beanstalk運行了沒有定義LC_ALL的Python環境。 在我的Beanstalk環境屬性中設置LC_ALL=en_US.UTF-8為我解決了此問題。

這些語言環境變量的背景知識可以在以下位置找到: 解釋導出LANG,LC_CTYPE,LC_ALL的影響

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM