在 .ebextension 中使用相同代码重新部署弹性 beantalk 时出现 python 错误
Getting python error when redeploying elastic beanstalk with same code in .ebextension
我不知道为什么在使用相同构建重新部署 ebs 时出现错误。创建新的 ebs env 时一切正常,但重新部署 ebs env 时出现 python 错误。
**CONFIG FILE**
```files:
"/root/default.json":
mode: "000755"
owner: root
group: root
content: |
{
"agent": {
"run_as_user": "root",
"metrics_collection_interval": 60
},
"metrics": {
"metrics_collected": {
"mem": {
"measurement": [
"mem_used_percent"
],
"metrics_collection_interval": 60
},
"disk": {
"measurement": [
"used_percent"
],
"metrics_collection_interval": 60,
"resources": [
"/"
]
}
},
"append_dimensions": {
"InstanceId": "${aws:InstanceId}"
}
}
}
container_commands:
00_wget_pkg:
cwd: /root
command: wget https://s3.amazonaws.com/amazoncloudwatch-agent/amazon_linux/amd64/latest/amazon-cloudwatch-agent.rpm
01_install:
cwd: /root
command: sudo rpm -U /root/amazon-cloudwatch-agent.rpm
02_change_own:
cwd: /opt/aws/amazon-cloudwatch-agent
command: chown -R root:root var && chown -R root:root logs && chown -R root:root etc
03_change_dr:
cwd: /root
command: mv default.json /etc/amazon/amazon-cloudwatch-agent/amazon-cloudwatch-agent.d/
04_start_cw:
cwd: /root
command: systemctl stop amazon-cloudwatch-agent && systemctl start amazon-cloudwatch-agent && systemctl enable amazon-cloudwatch-agent
05_start_cw:
cwd: /root
command: rm -rf /root/amazon-cloudwatch-agent.rpm*```
**ERROR**
2021-09-28 11:33:45,384 [INFO] Running configSets: Infra-EmbeddedPostBuild
2021-09-28 11:33:45,387 [INFO] Running configSet Infra-EmbeddedPostBuild
2021-09-28 11:33:45,389 [INFO] Running config postbuild_0_T8
2021-09-28 11:33:45,977 [INFO] Command 00_wget_pkg succeeded
2021-09-28 11:33:46,058 [ERROR] Command 01_install (sudo rpm -U /root/amazon-cloudwatch-agent.rpm) failed
2021-09-28 11:33:46,058 [ERROR] Error encountered during build of postbuild_0_T8: Command 01_install failed
Traceback (most recent call last):
File "/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py", line 573, in run_config
CloudFormationCarpenter(config, self._auth_config).build(worklog)
File "/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py", line 273, in build
self._config.commands)
File "/usr/lib/python3.7/site-packages/cfnbootstrap/command_tool.py", line 127, in apply
raise ToolError(u"Command %s failed" % name)
cfnbootstrap.construction_errors.ToolError: Command 01_install failed
2021-09-28 11:33:46,059 [ERROR] -----------------------BUILD FAILED!------------------------
2021-09-28 11:33:46,059 [ERROR] Unhandled exception during build: Command 01_install failed
Traceback (most recent call last):
File "/opt/aws/bin/cfn-init", line 176, in <module>
worklog.build(metadata, configSets)
File "/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py", line 135, in build
Contractor(metadata).build(configSets, self)
File "/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py", line 561, in build
self.run_config(config, worklog)
File "/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py", line 573, in run_config
CloudFormationCarpenter(config, self._auth_config).build(worklog)
File "/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py", line 273, in build
self._config.commands)
File "/usr/lib/python3.7/site-packages/cfnbootstrap/command_tool.py", line 127, in apply
raise ToolError(u"Command %s failed" % name)
cfnbootstrap.construction_errors.ToolError: Command 01_install failed
我不知道为什么在使用相同构建重新部署 ebs 时出现错误。创建新的 ebs env 时一切正常,但重新部署 ebs env 时出现 python 错误。
在这种情况下,您应该使用 commands,因为在您的应用程序服务器启动之前,这些命令应该 运行。但仅此并不能解决问题。
容器命令和命令运行每次部署/重新部署一个版本的 EB 环境。
对于这些命令中的每一个,您都可以有一个 测试指令,它将决定命令是否应该是 运行。语法 -
commands:
command: command to run
test: conditions for command
只有当测试命令 returns 为真或 0
时,该命令才会 运行
在您的情况下,命令是为您的环境安装和设置 amazon-cloudwatch-agent。由于 amazon-cloudwatch-agent 已经安装,他们在重新部署期间抛出错误。为避免这种情况,请使用测试命令来检查软件包是否已安装。
通过 AWS Docs,还有另一种使用 yum 包管理器安装包的更简单的方法。
尝试 运行仅使用以下命令,
commands:
00_install_cw_agent:
command: yum install amazon-cloudwatch-agent
test: ! yum list installed amazon-cloudwatch-agent
01_start_cw:
command: systemctl stop amazon-cloudwatch-agent && systemctl start amazon-cloudwatch-agent && systemctl enable amazon-cloudwatch-agent
第一个命令将安装 amazon-cloudwatch-agent 包。但它只会 运行 如果测试命令 returns 0.
测试命令 returns 0 如果包已经安装,与我们想要的相反,所以我们使用 ! 运算符否定它。所以命令 运行s 仅当软件包尚未安装时。
我们没有对第二个命令使用任何测试指令,因为每次部署新版本时它都需要运行。
让我知道这是否适合你。
编辑 -
由于某种原因,在 configure stage 之前创建/复制到 amazon-cloudwatch-agent.d 目录中的任何文件都被 EB
删除
所以尝试使用 container_commands
移动文件并重新启动 cloudwatch 代理。
如果这不起作用,您可以为此作业创建一个 predeploy 平台挂钩。
我不知道为什么在使用相同构建重新部署 ebs 时出现错误。创建新的 ebs env 时一切正常,但重新部署 ebs env 时出现 python 错误。
**CONFIG FILE**
```files:
"/root/default.json":
mode: "000755"
owner: root
group: root
content: |
{
"agent": {
"run_as_user": "root",
"metrics_collection_interval": 60
},
"metrics": {
"metrics_collected": {
"mem": {
"measurement": [
"mem_used_percent"
],
"metrics_collection_interval": 60
},
"disk": {
"measurement": [
"used_percent"
],
"metrics_collection_interval": 60,
"resources": [
"/"
]
}
},
"append_dimensions": {
"InstanceId": "${aws:InstanceId}"
}
}
}
container_commands:
00_wget_pkg:
cwd: /root
command: wget https://s3.amazonaws.com/amazoncloudwatch-agent/amazon_linux/amd64/latest/amazon-cloudwatch-agent.rpm
01_install:
cwd: /root
command: sudo rpm -U /root/amazon-cloudwatch-agent.rpm
02_change_own:
cwd: /opt/aws/amazon-cloudwatch-agent
command: chown -R root:root var && chown -R root:root logs && chown -R root:root etc
03_change_dr:
cwd: /root
command: mv default.json /etc/amazon/amazon-cloudwatch-agent/amazon-cloudwatch-agent.d/
04_start_cw:
cwd: /root
command: systemctl stop amazon-cloudwatch-agent && systemctl start amazon-cloudwatch-agent && systemctl enable amazon-cloudwatch-agent
05_start_cw:
cwd: /root
command: rm -rf /root/amazon-cloudwatch-agent.rpm*```
**ERROR**
2021-09-28 11:33:45,384 [INFO] Running configSets: Infra-EmbeddedPostBuild
2021-09-28 11:33:45,387 [INFO] Running configSet Infra-EmbeddedPostBuild
2021-09-28 11:33:45,389 [INFO] Running config postbuild_0_T8
2021-09-28 11:33:45,977 [INFO] Command 00_wget_pkg succeeded
2021-09-28 11:33:46,058 [ERROR] Command 01_install (sudo rpm -U /root/amazon-cloudwatch-agent.rpm) failed
2021-09-28 11:33:46,058 [ERROR] Error encountered during build of postbuild_0_T8: Command 01_install failed
Traceback (most recent call last):
File "/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py", line 573, in run_config
CloudFormationCarpenter(config, self._auth_config).build(worklog)
File "/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py", line 273, in build
self._config.commands)
File "/usr/lib/python3.7/site-packages/cfnbootstrap/command_tool.py", line 127, in apply
raise ToolError(u"Command %s failed" % name)
cfnbootstrap.construction_errors.ToolError: Command 01_install failed
2021-09-28 11:33:46,059 [ERROR] -----------------------BUILD FAILED!------------------------
2021-09-28 11:33:46,059 [ERROR] Unhandled exception during build: Command 01_install failed
Traceback (most recent call last):
File "/opt/aws/bin/cfn-init", line 176, in <module>
worklog.build(metadata, configSets)
File "/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py", line 135, in build
Contractor(metadata).build(configSets, self)
File "/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py", line 561, in build
self.run_config(config, worklog)
File "/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py", line 573, in run_config
CloudFormationCarpenter(config, self._auth_config).build(worklog)
File "/usr/lib/python3.7/site-packages/cfnbootstrap/construction.py", line 273, in build
self._config.commands)
File "/usr/lib/python3.7/site-packages/cfnbootstrap/command_tool.py", line 127, in apply
raise ToolError(u"Command %s failed" % name)
cfnbootstrap.construction_errors.ToolError: Command 01_install failed
我不知道为什么在使用相同构建重新部署 ebs 时出现错误。创建新的 ebs env 时一切正常,但重新部署 ebs env 时出现 python 错误。
在这种情况下,您应该使用 commands,因为在您的应用程序服务器启动之前,这些命令应该 运行。但仅此并不能解决问题。
容器命令和命令运行每次部署/重新部署一个版本的 EB 环境。
对于这些命令中的每一个,您都可以有一个 测试指令,它将决定命令是否应该是 运行。语法 -
commands:
command: command to run
test: conditions for command
只有当测试命令 returns 为真或 0
时,该命令才会 运行在您的情况下,命令是为您的环境安装和设置 amazon-cloudwatch-agent。由于 amazon-cloudwatch-agent 已经安装,他们在重新部署期间抛出错误。为避免这种情况,请使用测试命令来检查软件包是否已安装。
通过 AWS Docs,还有另一种使用 yum 包管理器安装包的更简单的方法。
尝试 运行仅使用以下命令,
commands:
00_install_cw_agent:
command: yum install amazon-cloudwatch-agent
test: ! yum list installed amazon-cloudwatch-agent
01_start_cw:
command: systemctl stop amazon-cloudwatch-agent && systemctl start amazon-cloudwatch-agent && systemctl enable amazon-cloudwatch-agent
第一个命令将安装 amazon-cloudwatch-agent 包。但它只会 运行 如果测试命令 returns 0.
测试命令 returns 0 如果包已经安装,与我们想要的相反,所以我们使用 ! 运算符否定它。所以命令 运行s 仅当软件包尚未安装时。
我们没有对第二个命令使用任何测试指令,因为每次部署新版本时它都需要运行。
让我知道这是否适合你。
编辑 - 由于某种原因,在 configure stage 之前创建/复制到 amazon-cloudwatch-agent.d 目录中的任何文件都被 EB
删除所以尝试使用 container_commands
移动文件并重新启动 cloudwatch 代理。
如果这不起作用,您可以为此作业创建一个 predeploy 平台挂钩。