web-dev-qa-db-ja.com

Amazon Elastic Beanstalk-タイムゾーンを変更する

AWS Elastic BeanstalkでEC2インスタンスを実行しています。残念ながら、タイムゾーンが正しくありません-タイムゾーンがUTCに設定されているため、本来より2時間早くなります。私が必要なのはGMT + 1です。

EC2インスタンスが正しいタイムゾーンを使用するように強制するために、.ebextensions構成をセットアップする方法はありますか?

28
tomraithel

はい、できます。

以下の内容で/.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でタイムゾーンを設定するために必要なコマンドに変更してください。

31
xwk

これはawsサポートビジネスからの返信であり、問​​題なく機能します。

- - オリジナルメッセージ - -

環境のタイムゾーンを、またはElastic Beasntalkの環境のインスタンスにUTC/GMT -3時間(ブエノスアイレス、アルゼンチン)に変更するにはどうすればよいですか?現在、Amazon Linux 2016.03を使用しています。よろしくお願いします。よろしく。

----------レスポンス----------

こんにちは、Elastic BeanstalkインスタンスのタイムゾーンをUTC/GMT -3時間(ブエノスアイレス、アルゼンチン)に変更することについてAWSサポートにお問い合わせいただきありがとうございます。この変更を実行する手順については、以下をご覧ください。

以下の例は、Amazon Linux OSの.ebextensionsを使用して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. .ebextensionsとタイムゾーンを含むElastic Beanstalkにアプリケーションをデプロイすると、上記のように変更されます。

それが役に立てば幸い

よろしく!

16
Jesús Díaz

Eb環境でWindowsを実行している場合...

プロジェクトのルートに.ebextensionsという名前のフォルダーを作成します。

そのフォルダー内にtimezone.configという名前のファイルを作成します

そのファイルに以下を追加します:

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

必要に応じてタイムゾーンを設定します

スクリーンショット

6
Adam Zeffer

私はphp.dフォルダーのカスタム.iniファイルを、 http://docs.aws.Amazon.com/AWSEC2/latest/UserGuide/set-time.html#change_time_zone からの定期的な推奨事項と共に使用しています:

# .ebextensions/02-timezone.config
files:
  /etc/php.d/webapp.ini:
    mode: "000644"
    owner: root
    group: root
    content: |
      date.timezone="Europe/Amsterdam"

commands:
  01_set_ams_timezone:
    command:
      - sed -i 's/UTC/Europe\/Amsterdam/g' /etc/sysconfig/clock
      - ln -sf /usr/share/zoneinfo/Europe/Amsterdam /etc/localtime
2
Roman Zhuzha

Java/Tomcatコンテナを実行している場合は、JVMオプションを構成に配置するだけです。

-Duser.timezone = America/Sao_Paulo

可能な値: timezones

Elastic Beanstalkを使用してEC2のタイムゾーンを変更するのは簡単です。

  1. ルートに.ebextensionsフォルダを作成します
  2. 末尾が.configのファイル名のファイルを追加(timezone.config

ファイル内

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

その後、あなたはやった。 container_commandscommandsとは異なり、ドキュメントには次のように記載されています。

commandsアプリケーションとWebサーバーがセットアップされ、アプリケーションバージョンファイルが抽出される前に実行されます。

サーバーがまだ起動していないため、タイムゾーンコマンドが機能しないのはそのためです。

container_commandsアプリケーションとWebサーバーがセットアップされ、アプリケーションバージョンファイルが抽出された後、アプリケーションバージョンがデプロイされる前に実行されます。

1
nobody

これらの回避策は、アプリケーションのタイムゾーンのみを修正します。しかし、cronのようなシステムサービスを実行すると、/etc/sysconfig/clockそしてそれは常にUTCです。 cronログまたはaws-sqsdログをテールすると、タイムスタンプがまだ2時間遅れていることがわかります(私の場合)。また、クロック設定の変更を有効にするには、再起動が必要になります。自動スケーリングが適切に設定されている場合、またはebextensionsを使用してシステムクロックの構成を変更する場合、これは考慮すべきオプションではありません。

Amazonはこの問題を認識しており、まだ解決されていないと思います。

0
Dele