第一个 git aws.push 到弹性 beantalk 时出错

Posted

技术标签:

【中文标题】第一个 git aws.push 到弹性 beantalk 时出错【英文标题】:Error on first git aws.push to elastic beanstalk 【发布时间】:2014-11-16 00:38:06 【问题描述】:

我是 Elastic Beanstalk 的新手,正在尝试启动 Rails 4 应用程序。我已经按照这里的指南http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-reference-get-started.html但是当我去做的时候

git aws.push

它告诉我我的更新有错误。

[Instance: i-a6482b8b Module: AWSEBAutoScalingGroup ConfigSet: null] Command failed on instance. Return code: 1 Output: Error occurred during build: Command hooks failed .

ebs 日志只是挤满了我不熟悉的许多令人困惑的项目。很难说要分享什么,但这两个领域很突出

    这里有很多不,所以这不是一个好兆头。还调用了一堆令人困惑的python文件,因为我应该运行运行Ruby 2.0(Passenger Standalone)的64位Amazon Linux 2014.03 v1.0.4。

    14-09-22 05:31:28,375 [INFO] 运行 configSet Infra-WriteApplication2 2014-09-22 05:31:28,376 [INFO] 运行配置 Infra-WriteApplication2 2014-09-22 05:31:28,376 [DEBUG] 未指定包 2014-09-22 05:31:28,376 [DEBUG] 未指定组 2014-09-22 05:31:28,377 [DEBUG] 未指定用户 2014-09-22 05:31:28,377 [DEBUG] 未指定来源 2014-09-22 05:31:28,377 [DEBUG] 将内容写入 /opt/elasticbeanstalk/bin/download_source_bundle 2014-09-22 05:31:28,377 [DEBUG] 从https://s3.amazonaws.com/elasticbeanstalk-env-resources-us-east-1/eb_patching_resources/download_source_bundle.py 检索内容 2014-09-22 05:31:28,624 [DEBUG] /opt/elasticbeanstalk/bin/download_source_bundle 的设置模式为 000750 2014-09-22 05:31:28,625 [调试] 为 /opt/elasticbeanstalk/bin/download_source_bundle 设置所有者 0 和组 0 2014-09-22 05:31:28,625 [DEBUG] 运行命令 01downloadVersion 2014-09-22 05:31:28,626 [DEBUG] 没有测试命令 01downloadVersion 2014-09-22 05:31:29,354 [INFO] 命令 01downloadVersion 成功 2014-09-22 05:31:29,355 [DEBUG] 命令 01downloadVersion 输出: 2014-09-22 05:31:29,355 [DEBUG] 运行命令 02deleteVersionDownloadScriptFile 2014-09-22 05:31:29,356 [DEBUG] 没有测试命令 02deleteVersionDownloadScriptFile 2014-09-22 05:31:29,370 [INFO] 命令 02deleteVersionDownloadScriptFile 成功 2014-09-22 05:31:29,371 [DEBUG] 命令 02deleteVersionDownloadScriptFile 输出: 2014-09-22 05:31:29,371 [DEBUG] 未指定服务 2014-09-22 05:31:29,384 [INFO] 运行 configSet Infra-EmbeddedPreBuild 2014-09-22 05:31:29,388 [INFO] 运行 configSet Hook-PreAppDeploy 2014-09-22 05:31:29,389 [INFO] 运行配置 Hook-PreAppDeploy 2014-09-22 05:31:29,389 [DEBUG] 未指定包 2014-09-22 05:31:29,389 [DEBUG] 未指定组 2014-09-22 05:31:29,389 [DEBUG] 未指定用户 2014-09-22 05:31:29,390 [DEBUG] 未指定来源 2014-09-22 05:31:29,390 [DEBUG] 未指定文件 2014-09-22 05:31:29,390 [DEBUG] 运行命令挂钩 2014-09-22 05:31:29,390 [DEBUG] 没有测试命令挂钩 2014-09-22 05:31:41,367 [错误] 命令挂钩(directoryHooksExecutor.py --path /opt/elasticbeanstalk/hooks/appdeploy/pre/)失败 2014-09-22 05:31:41,367 [DEBUG] 命令挂钩输出: 2014-09-22 05:31:41,368 [错误] 在构建 Hook-PreAppDeploy 期间遇到错误:命令挂钩失败 回溯(最近一次通话最后): 文件“/usr/lib/python2.6/site-packages/cfnbootstrap/construction.py”,第 511 行,在 run_config CloudFormationCarpenter(配置,self._auth_config).build(工作日志) 文件“/usr/lib/python2.6/site-packages/cfnbootstrap/construction.py”,第 247 行,在构建中 更改['commands'] = CommandTool().apply(self._config.commands) 文件“/usr/lib/python2.6/site-packages/cfnbootstrap/command_tool.py”,第 113 行,在应用中 raise ToolError(u"Command %s failed" % name) ToolError:命令挂钩失败 2014-09-22 05:31:41,369 [错误] 构建期间未处理的异常:命令挂钩失败 回溯(最近一次通话最后): 文件“/opt/aws/bin/cfn-init”,第 122 行,在 worklog.build(detail.metadata, configSets) 文件“/usr/lib/python2.6/site-packages/cfnbootstrap/construction.py”,第 117 行,在构建中 承包商(元数据).build(configSets,self) 文件“/usr/lib/python2.6/site-packages/cfnbootstrap/construction.py”,第 502 行,在构建中 self.run_config(配置,工作日志) 文件“/usr/lib/python2.6/site-packages/cfnbootstrap/construction.py”,第 511 行,在 run_config CloudFormationCarpenter(配置,self._auth_config).build(工作日志) 文件“/usr/lib/python2.6/site-packages/cfnbootstrap/construction.py”,第 247 行,在构建中 更改['commands'] = CommandTool().apply(self._config.commands) 文件“/usr/lib/python2.6/site-packages/cfnbootstrap/command_tool.py”,第 113 行,在应用中 raise ToolError(u"Command %s failed" % name)

    这是另一个看起来非常糟糕的领域。我已经安装了 git,但不确定它为什么要询问 bundle...

    捆绑安装 不要以 root 身份运行 Bundler。如果需要,Bundler 可以要求 sudo,并且 以 root 身份安装您的捆绑软件将破坏所有非 root 用户的此应用程序 这台机器上的用户。 从 https://rubygems.org/ 获取 gem 元数据...... 您需要安装 git 才能使用来自 git 存储库的 gem。求助 安装 git,请参考 GitHub 的教程 https://help.github.com/articles/set-up-git

    2014-09-22 05:31:41,280 [错误] (4868 MainThread) [directoryHooksExecutor.py-33] [root directoryHooksExecutor 错误] 脚本 /opt/elasticbeanstalk/hooks/appdeploy/pre/10_bundle_install.sh 失败并返回代码11

抱歉,sn-ps 的代码很奇怪,我今天赢不了!

有没有人有 AWS/Elastic Beanstalk 的经验可以指导我如何解决这个问题?

【问题讨论】:

【参考方案1】:

您的 ec2 实例上安装了 git 吗?

您可以使用 ebextension 安装它。创建一个名为.ebextensions/01-git.config 的文件。文件名应具有.config 扩展名。

文件内容可以如下:

packages:
  yum:
    git: []

此文件为 YAML 格式,因此缩进很重要。 您可以阅读有关 ebextensions here 的软件包部分的更多信息。 提交此文件并再次运行 git aws.push。它将向您的环境部署一个新的应用程序版本,并在您的 EC2 实例上安装 git。

您的 Gemfile 很可能有 git url 的来源。这就是为什么 bundler 试图使用 git 获取。 您还可以考虑将供应商的 gem 与 Elastic Beanstalk 一起使用。阅读更多here。

另外关于 python 文件,这些是 Elastic Beanstalk 运行以在您的实例上部署应用程序版本的 python 脚本。

【讨论】:

以上是关于第一个 git aws.push 到弹性 beantalk 时出错的主要内容,如果未能解决你的问题,请参考以下文章

不能 git aws.push 到带有 ruby​​ 存储库的弹性豆茎

PHP-如何在不重新启动 rds 的情况下将 aws.push git 到弹性 beantalk?

aws.push 到多个环境

git aws.push 到以前的环境

git aws.push 将新的 php 应用程序上传到 Elastic Beanstalk

git aws.push: 'aws.push' 不是 git 命令