web-dev-qa-db-fra.com

Amazon Elastic Beanstalk - Changer le fuseau horaire

J'exécute une instance EC2 via AWS Elastic Beanstalk . Malheureusement, le fuseau horaire est incorrect - il a lieu 2 heures plus tôt que prévu, car le fuseau horaire est défini sur UTC. Ce dont j'ai besoin, c'est GMT + 1.

Existe-t-il un moyen de configurer la configuration .ebextensions afin de forcer l'instance EC2 à utiliser le fuseau horaire approprié?

25
tomraithel

Oui, vous pouvez.

Créez simplement un fichier /.ebextensions/00-set-timezone.config avec le contenu suivant

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

Cela suppose que vous utilisez une image AMI Amazon Linux par défaut. Si vous utilisez une autre distribution Linux, modifiez simplement la commande comme il convient pour définir le fuseau horaire dans ce système Linux.

28
xwk

C’est une réponse de aws Support Business et cela fonctionne!

---- Message d'origine ----

Comment puis-je changer le fuseau horaire d'un environnement ou plutôt les instances de l'environnement dans Elastic Beasntalk en UTC/GMT -3 heures (Buenos Aires, Argentine)? J'utilise actuellement Amazon Linux 2016.03. Merci d'avance pour votre aide. Cordialement.

---------- Réponse ----------

Bonjour, Merci d'avoir contacté le support AWS concernant la modification de votre fuseau horaire pour les instances Elastic Beanstalk afin d'utiliser l'heure UTC/GMT -3 (Buenos Aires, Argentine). Veuillez consulter ci-dessous les étapes à suivre pour effectuer cette modification.

L'exemple ci-dessous montre comment modifier le fuseau horaire d'un environnement Elastic Beanstalk à l'aide de .ebextensions pour un système d'exploitation Amazon Linux:

  1. Créez le dossier .ebextensions à la racine de votre application.
  2. Créez un fichier .config, par exemple un fichier 00-set-timezone.config, et ajoutez le contenu ci-dessous au format 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. Déployez l'application sur Elastic Beanstalk, y compris les extensions .eb et le fuseau horaire seront modifiés comme indiqué ci-dessus.

J'espère que ça aide

Cordialement!

14
Jesús Díaz

Si vous utilisez Windows dans votre environnement eb ... 

créez un dossier nommé .ebextensions à la racine de votre projet. 

dans ce dossier, créez un fichier nommé timezone.config.

dans ce fichier, ajoutez ce qui suit: 

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

définir le fuseau horaire selon les besoins 

capture d'écran

4
Adam Zeffer

J'utilise un fichier .ini personnalisé dans le dossier php.d avec des recommandations régulières de 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

Changer le fuseau horaire de EC2 avec Elastic Beanstalk est simple:

  1. Créez un dossier .ebextensions à la racine
  2. Ajouter un fichier dont le nom de fichier se termine par .config (timezone.config)

À l'intérieur du dossier

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

Ensuite, vous avez terminé… .. Notez que le container_commands est différent de commands, il est indiqué dans le document: 

commands exécuté avant que l'application et le serveur Web soient configurés et le fichier de version de l'application est extrait. 

C'est la raison pour laquelle votre commande de fuseau horaire ne fonctionne pas car le serveur n'a pas encore démarré.

container_commands exécuté après que l'application et le serveur Web aient été mis en place et le fichier de version de l'application a été extrait, mais avant la version de l'application est déployée.

1
nobody

Si vous exécutez un conteneur Java/Tomcat, insérez simplement l'option JVM dans la configuration.

-Duser.timezone = America/Sao_Paulo

Valeurs possibles: fuseaux horaires

Ces solutions de contournement ne corrigent que le fuseau horaire des applications. Mais lorsque vous avez des services système comme une commande cron, ils regardent le /etc/sysconfig/clock et sont toujours UTC. Si vous suivez les journaux cron ou aws-sqsd, vous remarquerez que les horodatages sont toujours en retard de 2 heures - dans mon cas. Et une modification du réglage de l'horloge nécessiterait un redémarrage afin de prendre effet - ce qui n'est pas une option à envisager si vous avez la mise à l'échelle automatique en place ou si vous souhaitez utiliser ebextensions pour modifier la configuration de l'horloge système.

Amazon est conscient de ce problème et je ne pense pas qu'ils l'aient résolu pour le moment.

0
Dele