我有一个Spring应用程序,可以使用AWS Code Pipeline和Elastic Beanstalk自动构建和部署。为了使其工作,我必须创建一个.ebextensions文件fix-path.config,如下所示
container_commands:
fix_path:
command: "echo Hello world"
command: "unzip MyApp.war 2>&1 > /var/log/my_last_deploy.log"
这是必需的,因为CodeBuild的输出是war文件,但在部署之前会自动压缩。我一直在设置ELK堆栈以进行日志记录,并希望使用Filebeats将日志从Tomcat发送到我的Logstash服务器。在Elastic Beanstalk上执行此操作的推荐方法也是ebextensions配置文件。我无法弄清楚如何让fix-path配置和Filebeats配置文件和谐地生活。我已经让Filebeats使用这样的配置文件(filebeat.config):
files:
"/etc/filebeat/filebeat.yml":
mode: "000755"
owner: root
group: root
content: |
filebeat.prospectors:
-
input_type: log
paths: ["/var/log/eb-commandprocessor.log"]
fields_under_root: true
ignore_older: 3h
output.logstash:
hosts: ["url-to-logstash"]
commands:
1_command:
command: "curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.5.1-x86_64.rpm"
cwd: /home/ec2-user
2_command:
command: "rpm -ivh --replacepkgs filebeat-5.5.1-x86_64.rpm"
cwd: /home/ec2-user
3_command:
command: "/etc/init.d/filebeat start"
如果我在.ebextensions文件夹中手动打包war文件,我可以手动部署它并验证Filebeat是否设置正确。但是,如果我使用CodeBuild并包含fix-path.config文件,则部署将无限期挂起。我知道问题必须与运行命令的顺序有关,并且unzip命令需要从放置工件的目录中运行,但我似乎无法弄清楚如何制作那工作。我已经尝试将filebeat东西移动到fix-path文件中,并将命令添加为container_comands,但这也不起作用。有没有人成功使用过多个ebextensions的CodeBuild + Elastic Beanstalk + Tomcat?