3

我在 Elastic Beanstalk 上运行我的 Web 服务器,并使用 Papertrail 进行日志记录。我正在使用官方 .ebextensions 脚本在部署期间设置 papertrail,但我遇到了问题。当 remote_syslog 将日志上传到 papertrail 时,我将环境变量用作我的主机名的一部分,该主机名用作发送者,虽然这在部署期间工作正常,但当01_set_logger_hostname触发容器命令时,每当我通过修改环境的配置来更改环境变量时,我都会遇到问题,因为看起来eb config调用只会重新启动应用程序服务器,不会运行部署期间运行的任何脚本,包括 ebextensions 容器命令。

"/tmp/set-logger-hostname.sh":
    mode: "00555"
    owner: root
    group: root
    encoding: plain
    content: |
      #!/bin/bash
      logger_config="/etc/log_files.yml"
      appname=`{ "Ref" : "AWSEBEnvironmentName" }`
      instid=`wget -q -O - http://169.254.169.254/latest/meta-data/instance-id`
      myhostname=${SOME_VARIABLE}_${appname}_${instid}

      if [ -f $logger_config ]; then
        # Sub the hostname
        sed "s/hostname:.*/hostname: $myhostname/" -i $logger_config       
      fi

如您所见,由于我的主机名依赖于${SOME_VARIABLE},因此每当${SOME_VARIABLE}eb config.

有没有办法在运行命令时触发脚本eb config运行,这样我不仅可以重新启动我的 Web 应用程序,还可以重新配置并remote_syslog使用更新的主机名重新启动?

4

1 回答 1

1

现在可以在基于 AWS Linux 2 的环境中使用配置部署平台挂钩

例如,您可以制作一个.platform/confighooks/predeploy/predeploy.sh将在所有配置更改时运行的 shell 脚本。确保根据 git 使该文件可执行,否则 Elastic Beanstalk 会给您一个权限被拒绝错误。

于 2021-12-20T20:18:14.427 回答