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é?
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.
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:
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
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!
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
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
Changer le fuseau horaire de EC2 avec Elastic Beanstalk est simple:
.ebextensions
à la racinetimezone.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.
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.