【问题标题】:AWS UnicodeDecodeError when creating application on ElasticBeanstalk在 ElasticBeanstalk 上创建应用程序时出现 AWS UnicodeDecodeError
【发布时间】:2016-04-14 06:15:18
【问题描述】:

尝试使用 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

【问题讨论】:

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


    【解决方案1】:

    可能是您的 Beanstalk 在没有定义 LC_ALL 的情况下运行 Python 环境。在我的 Beanstalk 环境属性中设置 LC_ALL=en_US.UTF-8 为我解决了这个问题。

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

    【讨论】:

      【解决方案2】:

      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,它就像魅力一样工作(后来添加它没有复制粘贴)

      【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方留下评论。 - From Review
      • @4dgaurav 该人询问凭据在哪里,我的回答符合他的问题。不知道为什么你的想法不同。
      • 这可能是对 OP 问题的评论,以防万一,如果 OP 接受您的回答,我将删除我的评论。
      • 不幸的是,这并没有解决问题。我更新了 OP
      • @DanS。你能分享你的其余设置吗?使用 --debug 运行它并在 gist 中分享输出。
      猜你喜欢
      • 2021-12-09
      • 2019-08-20
      • 2016-11-14
      • 2019-03-28
      • 2020-08-24
      • 2021-09-16
      • 2020-06-05
      • 2016-10-20
      • 2017-09-24
      相关资源
      最近更新 更多