我正在尝试将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 build
和react-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文件夹提供服务的方式。
任何方向都表示赞赏。
答案 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日志流是付费服务。