AWS Elastic BeanstalkでEC2インスタンスを実行しています。残念ながら、タイムゾーンが正しくありません-タイムゾーンがUTCに設定されているため、本来より2時間早くなります。私が必要なのはGMT + 1です。
EC2インスタンスが正しいタイムゾーンを使用するように強制するために、.ebextensions構成をセットアップする方法はありますか?
はい、できます。
以下の内容で/.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でタイムゾーンを設定するために必要なコマンドに変更してください。
これはawsサポートビジネスからの返信であり、問題なく機能します。
- - オリジナルメッセージ - -
環境のタイムゾーンを、またはElastic Beasntalkの環境のインスタンスにUTC/GMT -3時間(ブエノスアイレス、アルゼンチン)に変更するにはどうすればよいですか?現在、Amazon Linux 2016.03を使用しています。よろしくお願いします。よろしく。
----------レスポンス----------
こんにちは、Elastic BeanstalkインスタンスのタイムゾーンをUTC/GMT -3時間(ブエノスアイレス、アルゼンチン)に変更することについてAWSサポートにお問い合わせいただきありがとうございます。この変更を実行する手順については、以下をご覧ください。
以下の例は、Amazon Linux OSの.ebextensionsを使用してElastic Beanstalk環境のタイムゾーンを変更する方法を示しています。
たとえば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
.ebextensionsとタイムゾーンを含むElastic Beanstalkにアプリケーションをデプロイすると、上記のように変更されます。
それが役に立てば幸い
よろしく!
Eb環境でWindowsを実行している場合...
プロジェクトのルートに.ebextensionsという名前のフォルダーを作成します。
そのフォルダー内にtimezone.configという名前のファイルを作成します
そのファイルに以下を追加します:
commands:
set_time_zone:
command: tzutil /s "Central Standard Time"
必要に応じてタイムゾーンを設定します
私は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
Elastic Beanstalkを使用してEC2のタイムゾーンを変更するのは簡単です。
.ebextensions
フォルダを作成しますtimezone.config
)ファイル内
container_commands:
time_zone:
command: ln -f -s /usr/share/zoneinfo/America/Argentina/Buenos_Aires /etc/localtime
その後、あなたはやった。 container_commands
はcommands
とは異なり、ドキュメントには次のように記載されています。
commands
アプリケーションとWebサーバーがセットアップされ、アプリケーションバージョンファイルが抽出される前に実行されます。
サーバーがまだ起動していないため、タイムゾーンコマンドが機能しないのはそのためです。
container_commands
アプリケーションとWebサーバーがセットアップされ、アプリケーションバージョンファイルが抽出された後、アプリケーションバージョンがデプロイされる前に実行されます。
これらの回避策は、アプリケーションのタイムゾーンのみを修正します。しかし、cronのようなシステムサービスを実行すると、/etc/sysconfig/clock
そしてそれは常にUTC
です。 cronログまたはaws-sqsdログをテールすると、タイムスタンプがまだ2時間遅れていることがわかります(私の場合)。また、クロック設定の変更を有効にするには、再起動が必要になります。自動スケーリングが適切に設定されている場合、またはebextensions
を使用してシステムクロックの構成を変更する場合、これは考慮すべきオプションではありません。
Amazonはこの問題を認識しており、まだ解決されていないと思います。