Amazon Elastic Beanstalk - 更改时区

时间:2014-08-20 08:05:30

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

我通过 AWS Elastic Beanstalk 运行EC2实例。不幸的是,它有不正确的时区 - 比它应该提前2小时,因为时区设置为UTC。我需要的是GMT + 1。

有没有办法设置.ebextensions配置,以强制EC2实例使用正确的时区?

10 个答案:

答案 0 :(得分:29)

是的,你可以。

只需使用以下内容创建文件/.ebextensions/00-set-timezone.config

commands:
  set_time_zone:
    command: ln -f -s /usr/share/zoneinfo/Australia/Sydney /etc/localtime

这假设您使用的是默认的Amazon Linux AMI映像。如果您使用其他Linux发行版,只需将命令更改为在该Linux中设置时区所需的任何内容。

答案 1 :(得分:15)

这是来自aws支持业务的回复,这有效!

----原帖----

  

如何将环境的时区或更改为Elastic Beasntalk的环境实例更改为UTC / GMT -3小时(阿根廷布宜诺斯艾利斯)?   我目前正在使用Amazon Linux 2016.03。在此先感谢您的帮助。   问候。

----------回应----------

您好,感谢您就修改Elastic Beanstalk实例时区以使用UTC / GMT -3小时(阿根廷布宜诺斯艾利斯)联系AWS支持,请参阅下面有关如何执行此修改的步骤。

以下示例显示如何使用.ebextensions为Amazon Linux OS修改Elastic Beanstalk环境的时区:

  1. 在应用程序的根目录中创建.ebextensions文件夹
  2. 为示例00-set-timezone.config文件创建.config文件,并以yaml格式添加以下内容。

    container_commands:
      01changePHP:
        command: sed -i '/PHP_DATE_TIMEZONE/ s/UTC/America\/Argentina\/Buenos_Aires/' /etc/php.d/environment.ini
      01achangePHP:
        command: sed -i '/aws.php_date_timezone/ s/UTC/America\/Argentina\/Buenos_Aires/' /etc/php.d/environment.ini
      02change_AWS_PHP:
        command: sed -i '/PHP_DATE_TIMEZONE/ s/UTC/America\/Argentina\/Buenos_Aires/' /etc/httpd/conf.d/aws_env.conf
      03php_ini_set:
        command: sed -i '/date.timezone/ s/UTC/America\/Argentina\/Buenos_Aires/' /etc/php.ini
    commands:
      01remove_local:
        command: "rm -rf /etc/localtime"
      02link_Buenos_Aires:
        command: "ln -s /usr/share/zoneinfo/America/Argentina/Buenos_Aires /etc/localtime"
      03restart_http:
        command: sudo service httpd restart
    
  3. 将应用程序部署到Elastic Beanstalk,包括.ebextensions,时区将按照上述内容进行更改。

  4. 我希望有帮助

    问候!

答案 2 :(得分:6)

如果您在eb环境中运行Windows ... 。

在项目的根目录中创建名为.ebextensions的文件夹..

在该文件夹中创建一个名为timezone.config的文件

在该文件中添加以下内容:

commands:
    set_time_zone:
        command: tzutil /s "Central Standard Time"

根据需要设置时区

screenshot

答案 3 :(得分:2)

我在php.d文件夹中使用自定义.ini文件以及http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-time.html#change_time_zone的常规推荐:

ax.set_title(label)

答案 4 :(得分:1)

使用Elastic Beanstalk更改EC2的时区很简单:

  1. 在根
  2. 中创建.ebextensions文件夹
  3. 使用.config(timezone.config
  4. 添加文件名结尾的文件

    文件内

    container_commands:
      time_zone:
        command: ln -f -s /usr/share/zoneinfo/America/Argentina/Buenos_Aires /etc/localtime
    

    然后你就完成了。 请注意,container_commandscommands的不同之处在于它所声明的文档:

      在应用程序和Web服务器设置之前运行

    commands   提取应用程序版本文件。

    由于服务器尚未启动,因此您的时区命令无法正常工作。

      

    container_commands在应用程序和Web服务器运行之后运行   设置和应用程序版本文件已被提取,但之前   部署了应用程序版本。

答案 5 :(得分:0)

这些变通办法仅修复了应用程序的时区。但是当你有像cron run这样的系统服务时,它会查看/etc/sysconfig/clock,而且始终是UTC。如果你拖尾cron日志或aws-sqsd日志会发现时间戳仍然落后2小时 - 在我的情况下。并且时钟设置的更改需要重新启动才能生效 - 如果您已进行自动缩放,或者您希望使用ebextensions来更改系统时钟,则无法考虑此选项配置。

亚马逊意识到了这个问题,我认为他们还没有解决这个问题。

答案 6 :(得分:0)

如果您正在运行Java / Tomcat容器,只需将JVM Option放在配置中。

-Duser.timezone =美国/圣保罗

可能的值:timezones

答案 7 :(得分:0)

如果您的EB应用程序正在使用Java / Tomcat容器,则可以将JVM时区选项添加到Procfile configuration。示例:

web: java -Duser.timezone=Europe/Berlin -jar application.jar

确保在-jar选项之前添加所有配置选项,否则它们将被忽略。

答案 8 :(得分:0)

迁移到 AWS Linux 2 具有挑战性。我花了一段时间才弄清楚如何在 .ebextensions 中轻松做到这一点。

我在 another stackoverflow question 中编写了简单的解决方案 .. 但对于任何需要即时满足的人.. 将以下命令添加到文件 .ebextensions/xxyyzz.config 中:

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

答案 9 :(得分:-2)

通过 putty ssh 连接 AMI amazon linux实例)并执行以下命令;

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

上述程序的说明很简单;

  1. 删除localtime,
  2. 更新时区,
  3. 重新启动
  4. 请通知我已将我的时区更改为土耳其当地时间,您可以通过以下命令列出zoneinfo目录找到您的时区;

    ls /usr/share/zoneinfo
    

    或者只是通过维基百科检查时区abbrevetaions;

    http://en.wikipedia.org/wiki/Category:Tz_database

    您还可以查看相关的Amazon AWS文档;

    http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/set-time.html

    注意:我不确定这是否是最佳做法(可能不是),但是我已经应用了我上面写的程序并且它正在努力我