[Update] วิธีเพิ่ม Timezone ใน Elastic Beanstalk

เราสามารถเปลี่ยนแปลง Timezone ให้กับ Environment ใน Elastic Beanstalk ได้ ซึ่งในบทความนี้ผมจะมาแนะนำวิธีการเปลี่ยนแปลง Timezone จาก UTC ให้เป็น +07 หรือ Timezone ของเประเทศไทย

สวัสดีครับ POP จากบริษัท Classmethod (Thailand) ครับ

การเปลี่ยน Timezone ใน Elastic Beanstalk เป็นการปรับแต่ง Timezone ของแอปพลิเคชันของเราให้ตรงกับโซนเวลาท้องถิ่นหรือโซนเวลาที่เราต้องการให้แอปพลิเคชันทำงาน ซึ่งอาจจำเป็นเพื่อให้แสดงเวลาหรือการวางกำหนดการในแอปพลิเคชันของเราให้ตรงตามเวลาท้องถิ่นที่เหมาะสม หรือเพื่อความสะดวกในการเปรียบเทียบข้อมูลเวลาระหว่างแอปพลิเคชันและผู้ใช้

สิ่งที่ต้องมี

  • สร้าง Application และ Deploy Project ใน Environment บน Elastic Beanstalk แล้ว

เลือก Deploy Project ใน Elastic Beanstalk ได้ตามลิงก์ด้านล่างนี้

เตรียมไฟล์สำหรับ Deploy ใน Elastic Beanstalk

ไฟล์ที่จะสร้างมีดังนี้

  • โฟลเดอร์ ".ebextensions"
  • ไฟล์ ".ebextensions/02_timezone.config"

สร้างโฟลเดอร์ .ebextensions และไฟล์ 02_timezone.config

Project ที่ใช้เป็นตัวอย่างนี้ จะอ้างอิงจากลิงก์บทความด้านล่างนี้ (สามารถดำเนินการใน Project อื่นๆ ได้เช่นเดียวกัน)

การสาธิตนี้เป็นการแนะนำแบบง่ายๆ ก็จะสร้างไฟล์ด้วย Notepad บนอุปกรณ์ Windows
ดูรายละเอียดเพิ่มเติมได้ที่ เตรียมไฟล์สำหรับใช้ใน Elastic Beanstalk

การตั้งค่านี้จะเปลี่ยน Timezone จาก UTC เป็น +07 ใน Instance ที่สร้างขึ้นจาก Environment

ก่อนอื่นให้สร้างโฟลเดอร์ .ebextensions ใน Project ที่จะ Deploy และสร้างไฟล์ 02_timezone.config ในโฟลเดอร์ ".ebextensions" อีกที ก็จะเป็น .ebextensions/02_timezone.config
แล้วคัดลอก Code ด้านล่างนี้วางลงในไฟล์ 02_timezone.config แล้วบันทึก

commands:
  01_timezone:
    command: |
      timedatectl set-timezone Asia/Bangkok


เมื่อเตรียมไฟล์ ".ebextensions/02_timezone.config" เสร็จแล้ว ให้บีบอัดไฟล์ Project เป็นไฟล์ ZIP ซึ่งวิธีการแบบอัดไฟล์มีหลายวิธี แต่ครั้งนี้จะบีบอัดไฟล์ดังนี้

การบีบอัดไฟล์ครั้งนี้จะบีบอัดโฟลเดอร์ .ebextensions รวมกับไฟล์ info.php ที่ใช้เป็น Project เนื่องจากสามารถแสดงผลหน้าเว็บไซต์ได้

ดูตัวอย่างเพิ่มเติมได้ที่นี่เฉพาะเนื้อหาการบีบอัดไฟล์นี้: Compress to ZIP file (2 ไฟล์)

วิธีการบีบอัดไฟล์ง่ายๆ คือเลือกไฟล์ที่จะบีบอัด แล้วคลิกขวาที่ไฟล์ใดไฟล์หนึ่ง แล้วเลือก Compress to ZIP file

แล้วตั้งชื่อไฟล์ ZIP ตามต้องการ

เมื่อเตรียมไฟล์เสร็จแล้ว Deploy Project ได้เลย (วิธี Deploy สำหรับกรณีที่ Environment กำลังทำงาน)

เชื่อมต่อกับ Instance ที่ถูกสร้างจาก Elastic Beanstalk ด้วย PuTTY

เชื่อมต่อกับ Instance ที่ถูกสร้างจาก Elastic Beanstalk ด้วย PuTTY เพื่อตรวจสอบผลลัพธ์การตั้งค่า Timezone

ดูตัวอย่างที่นี่เฉพาะหัวข้อย่อยนี้: การเชื่อมต่อกับ EC2 Instance ด้วย PuTTY

ตรวจสอบ Timezone

รันคำสั่งตรวจสอบ Timezone ใน Server Instance ที่สร้างจาก Elastic Beanstalk

date

จะเห็นว่าเปลี่ยนเป็น +07 ตามที่ได้กำหนดในไฟล์ 02_timezone.config

root@ip-xx-xx-xx-xx:~

Using username "ec2-user".
Authenticating with public key "tinnakorn-timezone-config"
  _____ _           _   _      ____                       _        _ _
 | ____| | __   ___| |_(_) ___| __ )  ___  __ _ _ __  ___| |_ __ _| | | __
 |  _| | |/ _ \/ __| __| |/ __|  _ \ / _ \/ _\ | '_ \/ __| __/ _\ | | |/ /
 | |___| | (_| \__ \ |_| | (__| |_) |  __/ (_| | | | \__ \ || (_| | |   <
 |_____|_|\__,_|___/\__|_|\___|____/ \___|\__,_|_| |_|___/\__\__,_|_|_|\_\

 Amazon Linux 2023 AMI

 This EC2 instance is managed by AWS Elastic Beanstalk. Changes made via SSH
 WILL BE LOST if the instance is replaced by auto-scaling. For more information
 on customizing your Elastic Beanstalk environment, see our documentation here:
 http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html

   ,     #_
   ~\_  ####_        Amazon Linux 2023
  ~~  \_#####\
  ~~     \###|
  ~~       \#/ ___   https://aws.amazon.com/linux/amazon-linux-2023
   ~~       V~' '->
    ~~~         /
      ~~._.   _/
         _/ _/
       _/m/'
[ec2-user@ip-xx-xx-xx-xx ~]$ date
Thu Mar 28 09:00:29 AM UTC 2024
[ec2-user@ip-xx-xx-xx-xx ~]$ date
Thu Mar 28 04:03:16 PM +07 2024
[ec2-user@ip-xx-xx-xx-xx ~]$


เพียงเท่านี้การเปลี่ยน Timezone ก็เสร็จเรียบร้อยแล้ว

สรุป

เราสามารถเปลี่ยน Timezone ใน Elastic Beanstalk ได้อย่างง่ายดาย เพียงแค่เขียน Code ลงในไฟล์ 02_timezone.config โดยระบุ Timezone ของประเทศที่ต้องการ แล้วบีบอัดไฟล์รวมกับ Project ที่จะ Deploy ให้เป็นไฟล์ ZIP แล้ว Deploy ใน Elastic Beanstalk และตรวจสอบใน Server Instance ที่ถูกสร้างจาก Elastic Beanstalk ก็จะเห็นผลลัพธ์ของ Timezone เป็นของประเทศที่เรากำหนดไว้

ผมหวังว่าบทความนี้จะเป็นประโยชน์ให้กับผู้อ่านได้นะครับ

POP (Tinnakorn Maneewong) จากบริษัท Classmethod (Thailand) ครับ !

บทความที่เกี่ยวข้อง