为Auto Scaling配置AWS Elastic Beanstalk时区

时间:2015-06-19 16:21:18

标签: amazon-web-services amazon-ec2 timezone elastic-beanstalk autoscaling

我在 AWS - Elastic Beanstalk 上部署了一个需要时区配置的单实例服务器,并且我将时区更改为使用ssh登录EC2环境,并更新它与下面列出的linux命令;

sudo rm /etc/localtime
sudo ln -sf /usr/share/zoneinfo/Europe/Istanbul /etc/localtime
sudo reboot

当服务器作为单个实例运行时,一切都很好。问题出现了,因为我想使用Auto Scaling,负载平衡功能。在单个实例上,更新linux AMI上的时区很好,但在自动扩展模式下,因为根据阈值指标创建/销毁/重新创建实例,所有配置都将丢失。

我的简单问题是,如何在AWS Elastic Beanstalk中为自动可扩展的负载均衡模式更改/配置时区?

4 个答案:

答案 0 :(得分:10)

您可以使用ebextensions配置新启动的服务器 这是一个适合我的例子。将以下命令添加到文件.ebextensions/timezone.config

commands:
    set_time_zone:
        command: ln -f -s /usr/share/zoneinfo/US/Pacific /etc/localtime 

答案 1 :(得分:1)

这里的答案只能部分地为我工作(我在使用上面的答案时遇到了错误)。经过一些修改后,以下内容对我有用。我认为这与“cwd”和“权限”有关。

commands:
  0000_0remove_localtime:
    command: rm -rf /etc/localtime
  0000_1change_clock:
    command: sed -i 's/UTC/Asia\/Singapore/g' /etc/sysconfig/clock
    cwd: /etc/sysconfig
  0000_2link_singapore_timezone:
    command: ln -f -s /usr/share/zoneinfo/Asia/Singapore /etc/localtime
    cwd: /etc

答案 2 :(得分:0)

对于我在 StackOverflow 上的第一个答案......我必须在一个出色的早期答案中添加新信息。

对于 AWS Linux 2、Elastic Beanstalk,有一种新的简单的时间设置方法。将以下命令添加到文件 .ebextensions/xxyyzz.config 中:

container_commands:
  01_set_bne:
    command: "sudo timedatectl set-timezone Australia/Brisbane"
    command: "sudo systemctl restart crond.service"

我不确定第二个命令是否绝对必要,但实例在那里肯定能很好地发挥作用(尤其是对于立即发生的任务!)。

答案 3 :(得分:-1)

您也可以通过命令行中的 ssh 进行配置:

连接到Elastic Beanstalk实例时: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-time.html#change_time_zone

sudo ln -sf /usr/share/zoneinfo/America/Montreal /etc/localtime

您可以使用 eb 命令行工具连接到EB实例。 http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/eb3-cmd-commands.html

eb ssh