[英]AWS ElasticBeanstalk boto3 - how to select capacity when creating environment?
[英]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.