我不知道为什么在用相同的构建重新部署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错误。
发布于 2021-10-04 08:47:35
在本例中,您应该使用命令,因为这些命令应该在启动应用程序服务器之前运行。但单靠这一点并不能解决问题。
容器命令和命令每次部署/重新部署EB环境的版本时都运行。
对于这些命令中的每一个,您都可以有一个测试指令,它将决定是否运行该命令。语法-
commands:
command: command to run
test: conditions for command只有当测试命令返回True或0时,该命令才会运行。
在您的示例中,这些命令是为您的环境安装和设置代理。他们在重新部署期间抛出错误,因为amazon代理是已经安装的。为了避免这种情况,可以使用一个测试命令来检查包是否已经安装。
通过AWS文档,还有另一种使用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第一个命令将安装代理包。但是,只有当测试命令返回0时,它才会运行。
测试命令返回0 (如果包已经安装)与我们想要的相反,所以我们使用!操作符否定它。因此,只有在尚未安装包的情况下,命令才会运行。
我们不会对第二个命令使用任何测试指令,因为每次部署新版本时都需要运行它。
如果这对你有用的话请告诉我。
编辑-由于某种原因,在配置阶段被EB删除之前创建/复制到amazon agent.d目录中的任何文件
因此,尝试使用container_commands移动文件并重新启动cloudwatch代理。
如果这不起作用,您可以为该作业创建一个预部署平台钩子。
https://stackoverflow.com/questions/69372084
复制相似问题