以下示例和教程,用于使用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
此配置应该是正确的:
那么,这里有什么?
答案 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:
所以实际的错误信息可能提供一些关于发生了什么的线索,似乎只是“内部错误”,这通常意味着相当于“意外情况:这可能是一个错误,所以我要去现在恐慌和中止“。我想你需要联系亚马逊支持。