Git AWS弹性豆茎[远程拒绝](拒绝挂钩)

Git AWS弹性豆茎[远程拒绝](拒绝挂钩),git,amazon-web-services,amazon-elastic-beanstalk,Git,Amazon Web Services,Amazon Elastic Beanstalk,以下示例和教程介绍如何使用AWS Elastic Beanstalk启动和运行PHP应用程序,以及在尝试推送时出现错误: git aws.push remote: remote: error: Internal Error remote: To https://MYKEY:20120830T1133112489ce23684fb0061664e8de896cce922cf6d06981add734c00e356828847eb54@git.elasticbeanstalk.us-east-1

以下示例和教程介绍如何使用AWS Elastic Beanstalk启动和运行PHP应用程序,以及在尝试推送时出现错误:

git aws.push
remote: 
remote: error: Internal Error
remote: 
To https://MYKEY:20120830T1133112489ce23684fb0061664e8de896cce922cf6d06981add734c00e356828847eb54@git.elasticbeanstalk.us-east-1.amazonaws.com/repos/4d7920466972737420256c6173746963204265616e7374616c6b204170706c69636174696f6e20456e7669726f6e6d656e6463/philsturgeon
 ! [remote rejected] HEAD -> master (hook declined)
error: failed to push some refs to 'https://MYKEY:20120830T1133112489ce23684fb0061664e8de896cce922cf6d06981add734c00e356828847eb54@git.elasticbeanstalk.us-east-1.amazonaws.com/repos/4d7920466972737420256c6173746963204265616e7374616c6b204170706c69636174696f6e20456e7669726f6e6d656e6463/philsturgeon'
这是什么原因?谷歌似乎对此一无所知。我原本认为这是因为我的主机不匹配,因为第二次运行aws.config时它不会请求主机,但在手动更改
.git/config
中的配置后,它仍然会给出相同的错误

[aws "endpoint"]
        us-east-1 = git.elasticbeanstalk.us-east-1.amazonaws.com
        ap-northeast-1 = git.elasticbeanstalk.ap-northeast-1.amazonaws.com
        eu-west-1 = git.elasticbeanstalk.eu-west-1.amazonaws.com
        us-west-1 = git.elasticbeanstalk.us-west-1.amazonaws.com
        us-west-2 = git.elasticbeanstalk.us-west-2.amazonaws.com
[alias "aws"]
        push = !git aws.elasticbeanstalk.push $@
        config = !git aws.elasticbeanstalk.config $@
[aws]
        accesskey = MYKEY
        secretkey = MYSECRET
        region = us-east-1
[aws "elasticbeanstalk"]
        host = git.elasticbeanstalk.us-east-1.amazonaws.com
        application = My First Elastic Beanstalk Application
        environment = philsturgeon
此配置应正确:


那么,这是什么呢?

这是一个暗箱操作,但我看到的唯一奇怪的事情是应用程序名称,尝试一些没有空格的字符,而不是“我的第一个弹性豆茎应用程序”。

我不认为这与你有关,特别是

这里有三条相关的错误消息。最外面的错误是:

error: failed to push some refs to ...
这意味着,在推送操作中,至少有一个ref(通常指“分支”)推送失败。由于您在这个操作中只尝试推送一个分支,这有点多余

中的下一个级别是per ref错误,“为什么so和so ref未成功推送?”,消息如下:

 ! [remote rejected] HEAD -> master (hook declined)
所以,遥控器出于某种原因拒绝了它,原因是“钩子被拒绝了”。这意味着,一切都进行得很顺利,但是当服务器端的
post receive
hook启动以确定是否可以更新指向“master”的指针以告诉它使用刚刚上传的数据时,关于hook的某些信息说“不,这不好!”。钩子只是一个脚本,通常是一个shell脚本或perl,但实际上它可以是任何可执行文件。它通过返回非零退出状态来表示故障

那么,为什么它会返回非零退出状态呢?这一部分可能有点难以确定,因为钩子没有义务向客户提供任何解释。如果它愿意,它可以通过在stderr上输出它想要的任何内容来通知客户端,这些消息将出现在客户端,前缀为“remote:”。幸运的是,这个特殊的钩子选择了这样做。不幸的是,它产生的实际错误消息是:

remote:
remote: error: Internal Error
remote:

因此,实际的错误消息,可能会提供一些关于发生了什么的线索,看起来仅仅是“内部错误”,这通常意味着相当于“意外情况:这可能是一个错误,所以我现在要恐慌并中止”。我认为您需要联系亚马逊支持部门。

您可能超出了Elastic Beanstalk 500个应用程序版本的限制。您需要通过Elastic Beanstalk管理控制台在“版本”选项卡下删除旧的应用程序版本。

我正在努力使我的第一个应用程序正常运行,我肯定没有499个其他应用程序。@PhilSturgeon和其他由google(像我一样)发送到这里的应用程序。应用程序、环境和应用程序版本之间存在差异。每次你
git aws.push
你都会创建一个新版本,如果你推得太多,这个版本很快就会达到500。一位同事收到了Phil看到的错误(在这个问题中),但我收到了中提到的错误。最好的解决方案就是删除旧版本(假设您的错误实际上不是什么不同的东西。)我相信错误是不同的。这个错误是从一个全新的设置中发生的,每次都是一致的,在尝试使这个该死的东西再次工作之间有很大的间隔(数小时或数天)。