如何在amazon Elastic Beanstalk中安装和启用服务?

时间:2014-02-10 16:21:07

标签: amazon-web-services elastic-beanstalk

我正在撞墙试图安装然后启用弹性豆秆服务。我想做的是:

  1. /etc/init.d中安装指向/opt/python/current/app/

  2. 中我的python应用的服务
  3. 让Elastic Beanstalk按照.ebextensions/myapp.config文件中的指定启动并保持活动状态。

  4. (参考:http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html#customize-containers-format-services

    这是我的.ebextensions/myapp.config文件:

    container_commands:
      01_copy_service:
        command: "cp /opt/python/ondeck/app/my_service /etc/init.d/"
      02_chmod_service:
        command: "chmod +x /etc/init.d/my_service"
    
    services:
      sysvinit:
        my_service:
          enabled: true
          ensureRunning: true
          files : [/etc/init.d/my_service]
    

    此操作失败,因为服务在container_commands之前运行。如果我注释掉服务,部署,然后取消注释服务,然后再次部署,它将起作用。但我希望进行单步部署,因为这将是一个自动缩放节点。

    有解决方案吗?谢谢!

3 个答案:

答案 0 :(得分:4)

Nate,我和你的情况完全一样,我这样解决了:

放弃"服务"部分并添加"重启"命令。

container_commands:
  ...
  03_restart_service:
    command: /sbin/service my_service restart

答案 1 :(得分:2)

使用commands:项下的services:键,可以在运行命令后重新启动服务。 services:密钥的文档位于:

http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html#customize-containers-format-services

答案 2 :(得分:1)

我自己没有这样做,但我想给你一些应该有用的想法。这只是方便和工作流程的问题。

由于它不是真正的应用程序文件,而是EC2文件,并且不太可能经常更改,您可以执行以下操作之一:

  • 使用files content创建服务初始化脚本。您甚至可以为该脚本提供特定的配置文件。
  • 在S3上存储服务初始化脚本,并使用命令复制内容。
  • 创建虚拟服务脚本,将内容替换为部署容器命令和依赖上述命令的内容到服务。
  • (这个很重)创建自定义AMI并在Autoscaling配置中指定它。

希望它有所帮助。