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 应用程序版本

将 AMI 映像用于 Elastic Beanstalk

elastic-beanstalk http请求超时

在 AWS Elastic Beanstalk 和 EKS 上部署了一个 laravel 应用程序 相同的数据库 RDS 为啥在 Elastic Beanstalk 中获得快速响应

AWS Elastic Beanstalk CLI 安装错误

我正在尝试使用 .ebextensions 配置在弹性 beanstalk 上安装 pdftk 服务器,但无法安装