Elastic Beanstalk:执行和删除.ebextensions配置

时间:2016-04-18 15:02:31

标签: amazon-web-services elastic-beanstalk amazon-elastic-beanstalk aws-codepipeline

我正在使用Elastic Beanstalk配置CodePipeline。 Elastic Beanstalk必须在其Tomcat的webapps文件夹中部署war文件。 但它正在webapps / ROOT文件夹中部署war文件。 所以我在 .ebextensions 文件夹中创建了以下脚本 server-update.config ,将war文件从webapps / ROOT /复制到webapps文件夹中。

.ebextensions /服务器update.config

container_commands:
  copy_file:
    command: sudo cp /var/lib/tomcat8/webapps/ROOT/test/* /var/lib/tomcat8/webapps/
    leader_only: true

以上代码已成功执行。以下是日志。

[2016-04-18T14:06:30.939Z] INFO  [1128]  - [Application update code-pipeline-1460988338596-MyAppBuild-2d3bd0c0-62bc-4927-bd09-b04ba81e7c03@15/AppDeployStage0/EbExtensionPostBuild/Infra-EmbeddedPostBuild/postbuild_0_SampleEB/Command copy_file] : Starting activity...
[2016-04-18T14:06:30.973Z] INFO  [1128]  - [Application update code-pipeline-1460988338596-MyAppBuild-2d3bd0c0-62bc-4927-bd09-b04ba81e7c03@15/AppDeployStage0/EbExtensionPostBuild/Infra-EmbeddedPostBuild/postbuild_0_SampleEB/Command copy_file] : Completed activity.

但ElasticBeanstalk在执行.ebextensions文件后清理tomcat webapps文件夹(在内部运行/opt/elasticbeanstalk/hooks/appdeploy/enact/02clean.sh时)

  + EB_APP_DEPLOY_BASE_DIR=/var/lib/tomcat8/webapps
  + rm -rf /var/lib/tomcat8/webapps/ROOT /var/lib/tomcat8/webapps/sampleapp.war

我不知道如何配置我的脚本最后执行。 请任何人帮助我满足上述要求。

2 个答案:

答案 0 :(得分:1)

我们遇到了类似的问题。在Django正确设置后,我们需要重新启动Celery。我们最终解决了这个非常简单的问题。

files:
"/opt/elasticbeanstalk/hooks/appdeploy/post/99_restart_service.sh":
    mode: "000755"
    owner: root
    group: root
    content: |
        #!/usr/bin/env bash
        service celeryd restart

现在,在Elastic Beanstalk在容器上发挥作用之后,它正在执行。

答案 1 :(得分:0)

如果您需要Elastic Beanstalk在部署后执行某些操作,您可以将其添加到AppDeployPostHook。我已在此处详细说明了如何执行此操作,https://stackoverflow.com/a/36603033/3167238您可以根据自己的具体需求进行调整。