AWS Beanstalk 应用程序无法部署,因为 awscli-bundle 部署程序中的 Python 版本太旧
Posted
技术标签:
【中文标题】AWS Beanstalk 应用程序无法部署,因为 awscli-bundle 部署程序中的 Python 版本太旧【英文标题】:AWS Beanstalk application cant deploy because Python version within awscli-bundle deployer too old 【发布时间】:2021-09-25 18:59:46 【问题描述】:我的 AWS Elastic Beanstalk tomcat Java 应用程序在过去六个月一直运行得非常愉快,昨天崩溃了,当我尝试使用克隆重新部署时它失败了
实例:i-0872ed7568a9820f5] 实例上的命令失败。返回 代码:1 输出:(截断)...检测到:Python 2.7 继续使用 此安装程序必须使用 Python 3.6 或更高版本。了解更多信息 请参阅以下博客文章: https://aws.amazon.com/blogs/developer/announcing-end-of-support-for-python-2-7-in-aws-sdk-for-python-and-aws-cli-v1/。 .ebextensions/copyindexes.config 中的命令 01_install_cli 失败。为了 更多详细信息,请使用控制台或 EB CLI 检查 /var/log/eb-activity.log。
我检查了 eb_activity.log,似乎问题出在使用的 awscli-bundle 版本上,但我不明白我在哪里定义它。
Archive: awscli-bundle.zip
inflating: awscli-bundle/install
inflating: awscli-bundle/packages/jmespath-0.10.0.tar.gz
inflating: awscli-bundle/packages/pyasn1-0.4.8.tar.gz
inflating: awscli-bundle/packages/docutils-0.15.2.tar.gz
inflating: awscli-bundle/packages/s3transfer-0.5.0.tar.gz
inflating: awscli-bundle/packages/virtualenv-16.7.8.tar.gz
inflating: awscli-bundle/packages/awscli-1.20.1.tar.gz
inflating: awscli-bundle/packages/six-1.16.0.tar.gz
inflating: awscli-bundle/packages/rsa-4.7.2.tar.gz
inflating: awscli-bundle/packages/colorama-0.4.3.tar.gz
inflating: awscli-bundle/packages/PyYAML-5.4.1.tar.gz
inflating: awscli-bundle/packages/urllib3-1.26.6.tar.gz
inflating: awscli-bundle/packages/botocore-1.21.1.tar.gz
inflating: awscli-bundle/packages/python-dateutil-2.8.2.tar.gz
inflating: awscli-bundle/packages/setup/setuptools_scm-3.3.3.tar.gz
inflating: awscli-bundle/packages/setup/wheel-0.33.6.tar.gz
Unsupported Python version detected: Python 2.7
To continue using this installer you must use Python 3.6 or later.
For more information see the following blog post: https://aws.amazon.com/blogs/developer/announcing-end-of-support-for-python-2-7-in-aws-sdk-for-python-and-aws-cli-v1/
(ElasticBeanstalk::ExternalInvocationError)
我查看了 .war 文件的 .ebextensions 文件夹,但看不到定义的版本号
所以我尝试使用较新的平台创建一个新环境,因此认为亚马逊 cli 工具是作为平台的一部分安装的,而不是使用 Tomcat 7 和 Java 7 我尝试了 Tomcat 8.5 Corretto 8 在 64 位 Amazon Linux 2/4.2.2 上运行
现在我在 cfn-init.log 中得到一个不同的错误
2021-07-17 07:26:02,021 [INFO] -----------------------Starting build-----------------------
2021-07-17 07:26:02,028 [INFO] Running configSets: _OnInstanceBoot
2021-07-17 07:26:02,031 [INFO] Running configSet _OnInstanceBoot
2021-07-17 07:26:02,033 [INFO] Running config AWSEBBaseConfig
2021-07-17 07:26:02,228 [INFO] Command clearbackupfiles succeeded
2021-07-17 07:26:02,234 [INFO] Running config AWSEBCfnHupEndpointOverride
2021-07-17 07:26:02,237 [INFO] Command clearbackupfiles succeeded
2021-07-17 07:26:02,238 [INFO] ConfigSets completed
2021-07-17 07:26:02,238 [INFO] -----------------------Build complete-----------------------
2021-07-17 07:26:37,586 [INFO] -----------------------Starting build-----------------------
2021-07-17 07:26:37,592 [INFO] Running configSets: Infra-EmbeddedPreBuild
2021-07-17 07:26:37,596 [INFO] Running configSet Infra-EmbeddedPreBuild
2021-07-17 07:26:37,599 [INFO] Running config prebuild_0_jthinkws
2021-07-17 07:26:39,257 [ERROR] Command 01_install_cli (wget https://s3.amazonaws.com/aws-cli/awscli-bundle.zip; unzip awscli-bundle.zip; ./awscli-bundle/install -b ~/bin/aws) failed
2021-07-17 07:26:39,257 [ERROR] Error encountered during build of prebuild_0_jthinkws: Command 01_install_cli failed
Traceback (most recent call last):
File "/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py", line 573, in run_config
CloudFormationCarpenter(config, self._auth_config).build(worklog)
File "/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py", line 273, in build
self._config.commands)
File "/usr/lib/python3.7/site-packages/cfnbootstrap/command_tool.py", line 127, in apply
raise ToolError(u"Command %s failed" % name)
cfnbootstrap.construction_errors.ToolError: Command 01_install_cli failed
2021-07-17 07:26:39,260 [ERROR] -----------------------BUILD FAILED!------------------------
2021-07-17 07:26:39,260 [ERROR] Unhandled exception during build: Command 01_install_cli failed
Traceback (most recent call last):
File "/opt/aws/bin/cfn-init", line 176, in <module>
worklog.build(metadata, configSets)
File "/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py", line 135, in build
Contractor(metadata).build(configSets, self)
File "/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py", line 561, in build
self.run_config(config, worklog)
File "/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py", line 573, in run_config
CloudFormationCarpenter(config, self._auth_config).build(worklog)
File "/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py", line 273, in build
self._config.commands)
File "/usr/lib/python3.7/site-packages/cfnbootstrap/command_tool.py", line 127, in apply
raise ToolError(u"Command %s failed" % name)
cfnbootstrap.construction_errors.ToolError: Command 01_install_cli failed
我不明白我要如何解决这个问题,因为 01_install_cli 不是我编写的脚本,它不是战争文件的一部分,它是亚马逊使用的内部脚本! p>
【问题讨论】:
【参考方案1】:没有从基于Amazon Linux 1
的EB 平台到Amazon Linux 2
的自动迁移。您必须在新的 EB 平台中手动执行此操作,如 AWS 文档中所述:
【讨论】:
谢谢,好的,但我没有尝试从 Linux 1 迁移到 Linux 2 我是否必须这样做,即我现有的版本无法像以前那样重新部署。其次,您在哪里将 Amazon Linux 1 配置为 Amazon Linux 2,或者您是说所有 Amazon pklatform 实例现在都是 Linux 2 @PaulTaylor 你没有尝试是什么意思。你写道你做到了:“所以我尝试使用更新的平台创建一个新环境,因此认为亚马逊 cli 工具是作为平台的一部分安装的,而不是使用带有 Java 7 的 Tomcat 7 我尝试了在 64 位亚马逊上运行的带有 Corretto 8 的 Tomcat 8.5 Linux 2/4.2.2"。 only supported version 基于 Amazon Linux 2。 好吧,我发现这有点令人困惑,但我的意思是两件事。首先,为什么不能只克隆我现有的直到昨天才起作用的环境,或者克隆并将平台版本从 2.7.6 更新到 3.4.8。由于这些选项都没有工作,我尝试使用不同的平台分支(Tomcat 8.5 Coretto),但由于上述错误而失败,而且失败似乎发生在甚至部署我的代码之前,所以我不明白我是如何可以解决吗? 嗨 @Marcin 我找到了问题的根源,但不知道如何解决 ***.com/questions/68418789/… 任何帮助表示赞赏,因为这是我的生产应用程序。以上是关于AWS Beanstalk 应用程序无法部署,因为 awscli-bundle 部署程序中的 Python 版本太旧的主要内容,如果未能解决你的问题,请参考以下文章
无法将 Rails API 应用程序部署到 AWS Elastic Beanstalk
为啥我的 Rails 应用程序无法部署到 AWS Elastic Beanstalk?
超时后无法部署到 AWS Elastic Beanstalk
无法将 Spring Boot v2 Gradle 应用程序部署到 AWS Beanstalk