Elastic Beanstalk .ebextensions 在 WAR 中被忽略
Posted
技术标签:
【中文标题】Elastic Beanstalk .ebextensions 在 WAR 中被忽略【英文标题】:Elastic Beanstalk .ebextensions ignored in WAR 【发布时间】:2017-04-21 00:01:35 【问题描述】:我正在尝试更改我的 Elastic Beanstalk nginx 反向代理的 client_max_body_size
属性,以允许上传更大的 JPEG 文件。因此,我将文件夹“.ebextensions”添加到我的 WAR 文件(WAR 文件还包括 Spring Boot 应用程序)的根目录中,并添加了一个文件“.ebextensions/01_files.config”,内容如下:
files:
"/etc/nginx/conf.d/proxy.conf" :
mode: "000755"
owner: root
group: root
content: |
client_max_body_size 20M;
我通过 Travis-CI 将 WAR 文件部署到 Elastic Beanstalk。但是,Elastic Beanstalk 似乎忽略了该文件,因为上传文件大小为例如2MB 不起作用,当使用 SSH 连接到实例并查找“/etc/nginx/conf.d/proxy.conf”时,该文件不存在。
我已经使用 YAML 验证器成功验证了上述内容。我知道,存在很多相关问题,但似乎没有一个可以解决我的问题。我还检查了根目录的 WAR 文件中是否包含“.ebextensions/01_files.config”。当我检查“/tmp/eb_extracted_jar”时,文件“.ebextensions/01_files.config”也存在,内容正确。我什至在“/var/log/cfn-init.log”中找不到任何错误。我注意到,就在几秒钟内,文件“proxy.conf”在部署期间出现在“/etc/nginx/conf.d/”中,但随后它已被删除。
是否会因为通过 Travis-CI 部署到 Elastic Beanstalk 而出现此问题?还是我错过了其他重要的事情?
编辑:
我刚刚认识到在部署应用程序时每次都会创建“proxy.conf”文件几秒钟,但几秒钟后它就会消失(在“/etc/nginx/conf.d/”中使用ls -lsa
检查,请参阅“elasticbeanstalk”目录和“healthd_http.conf”的时间戳为 13:34,“proxy.conf”的时间戳为 13:43)
4 drwxr-xr-x 3 root root 4096 6. Dec 13:43 .
4 drwxr-xr-x 4 root root 4096 6. Dec 13:34 ..
4 drwxr-xr-x 2 root root 4096 6. Dec 13:34 elasticbeanstalk
4 -rw-r--r-- 1 root root 148 6. Dec 13:34 healthd_http.conf
4 -rwxr-xr-x 1 root root 26 6. Dec 13:43 proxy.conf
几秒钟后ls -lsa
“/etc/nginx/conf.d/”:
4 drwxr-xr-x 3 root root 4096 6. Dec 13:44 .
4 drwxr-xr-x 4 root root 4096 6. Dec 13:44 ..
4 drwxr-xr-x 2 root root 4096 6. Dec 13:44 elasticbeanstalk
4 -rw-r--r-- 1 root root 148 6. Dec 13:44 healthd_http.conf
【问题讨论】:
【参考方案1】:阅读文档数小时后,我发现我错过了 Elastic Beanstalk Java SE 平台的官方 AWS 文档的一些重要部分(请参阅 http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/java-se-platform.html)。
绝对是我的错误:我使用了错误的文件扩展名,文件夹“.ebextensions”中的文件扩展名必须是“.conf”但不是“.config”。
至少对于 Java SE 平台:可以直接在“.ebextensions”目录中添加 NGINX 配置文件,而无需使用“files: ...”语法生成具有特定内容的文件,即在“/etc/nginx/conf.d/proxy.conf”中创建代理文件,直接在“.ebextension/nginx/conf.d/proxy.conf”中添加内容client_max_body_size 20M;
。随后,“proxy.conf”将被部署到“/etc/nginx/conf.d/proxy.conf”并自动包含在默认的NGINX配置中。
希望这个答案可以节省其他人我弄清楚这一点所花费的时间。
【讨论】:
我不认为这是正确的。我正在使用.config
文件扩展名@ 987654322@ 但是,我仍然遇到问题:(
您是否使用带有负载均衡器的反向代理?因为那样你就需要.conf
,如下所述:docs.aws.amazon.com/elasticbeanstalk/latest/dg/…以上是关于Elastic Beanstalk .ebextensions 在 WAR 中被忽略的主要内容,如果未能解决你的问题,请参考以下文章
Amazon Elastic BeanStalk 错误:无法创建 AWS Elastic Beanstalk 应用程序版本
在 AWS Elastic Beanstalk 和 EKS 上部署了一个 laravel 应用程序 相同的数据库 RDS 为啥在 Elastic Beanstalk 中获得快速响应