AWS Elastic Beanstalk [远程拒绝](钩子拒绝)

时间:2012-08-30 11:43:53

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

以下示例和教程,用于使用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

此配置应该是正确的:

http://d.pr/i/ehwv

那么,这里有什么?

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

这是一个黑暗中的镜头,但我看到的唯一奇怪的是应用程序名称,尝试没有字符空格而不是“我的第一个Elastic Beanstalk应用程序”。

答案 2 :(得分:0)

具体而言,我认为这不是你的意思。

此处有三条相关的错误消息。最外层的错误是:

error: failed to push some refs to ...

这意味着,在您的推送操作中,至少一个 ref(通常意为“分支”)无法推送。因为你只想在这个操作中推动一个分支,这有点多余。

下一个级别是每个引用错误,“为什么某某某参考不成功推送?”,这个消息是:

 ! [remote rejected] HEAD -> master (hook declined)

所以,由于某种原因,遥控器拒绝了它,原因是“钩掉了”。这意味着,一切顺利进行,但是当服务器端post-receive挂钩实际确定是否可以更新指向“master”的指针以告诉它使用您刚刚上传的数据时关于钩子的事情说“不,这是好吧!”。钩子只是一个脚本,通常是shell脚本或perl,但实际上它可以是任何可执行文件。它通过返回非零退出状态来发出故障信号。

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

remote:
remote: error: Internal Error
remote:

所以实际的错误信息可能提供一些关于发生了什么的线索,似乎只是“内部错误”,这通常意味着相当于“意外情况:这可能是一个错误,所以我要去现在恐慌和中止“。我想你需要联系亚马逊支持。