将create-react-app部署到AWS Elastic Beanstalk

时间:2018-03-27 16:23:26

标签: node.js amazon-web-services deployment elastic-beanstalk create-react-app

我正在尝试将create-react-app部署到弹性beanstalk。

我的部署时间不断超时
ERROR: TimeoutError - The EB CLI timed out after 10 minute(s). The operation might still be running. To keep viewing events, run 'eb events -f'. To set timeout duration, use '--timeout MINUTES'.

我尝试了很多不同的东西来实现这个目标。这是我的config.yml文件

 branch-defaults:
  dev:
    environment: uu-pilot
    group_suffix: null
environment-defaults:
  uu-pilot:
    branch: null
    repository: null
global:
  application_name: uu-pilot
  branch: null
  default_ec2_keyname: null
  default_platform: Node.js
  default_region: ca-central-1
  include_git_submodules: true
  instance_profile: null
  platform_name: null
  platform_version: null
  profile: eb-cli
  repository: null
  sc: git
  workspace_type: Application

my nodecommand.config.ebextensions文件夹中:

option_settings:
aws:elasticbeanstalk:container:nodejs:
NodeCommand: "npm start"

^^我也尝试将节点命令更改为react-scripts buildreact-scripts start

所有依赖项都在package.json中的dependencies而不是devDependencies下,这里是我的脚本

  "scripts": {
    "prestart": "react-scripts build",
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test --env=jsdom",
    "start:prod": "react-scripts start"
  }

我没有收到任何特定的错误消息,并且无法查看确切的日志,因为该操作也会超时。我还添加了这个,以防它只是一个超时的事情:

option_settings:
- namespace: aws:elasticbeanstalk:command
  option_name: Timeout
  value: 1800

最后,我部署了一个基本的节点应用程序来查看它是否可以正常工作,因此问题在于create-react-app节点服务器为build文件夹提供服务的方式。

任何方向都表示赞赏。

1 个答案:

答案 0 :(得分:0)

您要查找的内容为eb deploy ... --timeout <minutes>,其中<minutes>需要您认为应用程序合法可能需要部署的时间。

它也可以被认为是EBCLI必须等待AWS响应成功/失败消息的分钟数,以便它可以停止轮询和退出。在此之前,EBCLI将定期轮询AWS。当EBCLI超时时,就像在您的情况下一样,它不会转化为AWS中的失败;您的操作可能仍在处理中,并且正如错误消息所示,eb events -f将显示其进度。

.ebextensions配置文件中的超时实际上是指AWS(而不是EBCLI)执行部署所花费的最长时间,因此更改此设置不会影响EBCLI在您的情况下的行为。

我还建议您查看CloudWatch log streaming,使用哪个Beanstalk可以将您的所有日志发送到CloudWatch。即使在环境已经死亡之后,您也应该能够访问它们,从而可以了解可能出现的问题。请注意,CloudWatch日志流是付费服务