首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在.ebextension中用相同的代码重新部署弹性豆秆时的python错误

在.ebextension中用相同的代码重新部署弹性豆秆时的python错误
EN

Stack Overflow用户
提问于 2021-09-29 07:25:30
回答 1查看 559关注 0票数 1

我不知道为什么在用相同的构建重新部署ebs时会出错。当创建一个新的ebs env时,一切都很好,但是当重新部署ebs env时,获取python错误。

代码语言:javascript
复制
    **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错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-04 08:47:35

在本例中,您应该使用命令,因为这些命令应该在启动应用程序服务器之前运行。但单靠这一点并不能解决问题。

容器命令和命令每次部署/重新部署EB环境的版本时都运行

对于这些命令中的每一个,您都可以有一个测试指令,它将决定是否运行该命令。语法-

代码语言:javascript
复制
commands:
  command: command to run
  test: conditions for command

只有当测试命令返回True或0时,该命令才会运行。

在您的示例中,这些命令是为您的环境安装和设置代理。他们在重新部署期间抛出错误,因为amazon代理是已经安装的。为了避免这种情况,可以使用一个测试命令来检查包是否已经安装。

通过AWS文档,还有另一种使用yum包管理器安装包的更简单的方法。

试着只运行以下命令,

代码语言:javascript
复制
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代理。

如果这不起作用,您可以为该作业创建一个预部署平台钩子。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69372084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档