この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
POP จากบริษัท Classmethod (Thailand) ครับ
ครั้งนี้ผมจะมาแนะนำการใช้งานฟังก์ชัน Saved configuration ใน Elastic Beanstalk โดยจะเน้นไปที่ฟังก์ชัน Saved configuration ที่มีอยู่ตรงเมนูด้านซ้ายใน Elastic Beanstalk ครับ
บทนำ
เราสามารถใช้ฟังก์ชัน Saved configuration บันทึกข้อมูลการตั้งค่าของแต่ละสภาพแวดล้อมได้
โดยเฉพาะ Laravel ต้องมีการตั้งค่า Environment properties จำนวนมาก ดังนั้นฟังก์ชันนี้จึงเหมาะที่จะใช้สร้าง Environment ซ้ำ หรือปรับเปลี่ยนสภาพ Environment
การ Saved configuration
ผมได้ทำการ Saved configuration ไว้ก่อนหน้านี้แล้ว โดยใช้ชื่อ Configuration name:single
ดูตัวอย่างได้ที่ลิงก์บทความนี้ครับ
การ [Load] Saved configuration เพื่อปรับสภาพ Environment
ขั้นตอนนี้คือการใช้ Saved configuration เปลี่ยนสภาพ Environment อื่นที่กำลังใช้งานอยู่
วิธีเข้ามาที่ Saved configuration
เข้ามาที่ Service Elastic Beanstalk แล้วมาที่เมนูด้านซ้าย เลือกApplications
แล้วให้ค้นหาชื่อของเรา และคลิกเข้าไปได้เลย เช่นtinnakorn
แล้วดูที่เมนูด้านซ้าย จะเห็นว่าแสดงเป็นชื่อ Application ของเรา ในตัวอย่างนี้คือ▼ tinnakorn
ทีนี้ให้เลือกSaved configuration
การ Load Saved configuration ให้กับ Environment
ติ๊ก✅
ตรง Configuration name ที่ต้องการนำไปใช้ เช่นsingle
และคลิกLoad
เลือก Environment ที่ต้องการ และคลิกLoad
แล้วรอระบบอัปเดตสักครู่
การสร้าง Environment จาก Saved configuration
เข้ามาที่ Saved configurations ของเรา
แล้วติ๊ก✅
Configuration name ที่ต้องการใช้สร้าง Environment ซ้ำ และคลิกLaunch evironment
ในหัวข้อ Select environment tier นี้ให้เลือกWeb server environment
และคลิกSelect
แล้วตั้งค่าหัวข้อ Environment information และ Application code ตามต้องการ
จากนั้นถ้าไม่มีตั้งค่าในConfigure more options
ให้คลิกปุ่มCreate environment
ได้เลยครับ
ข้อควรระวัง: หาก Key Pair หรือ Security Group ที่อยู่ในการตั้งค่า Saved configuration หายไป จะไม่สามารถ Create enviroment ได้ เพราะฉนั้นหากท่านผู้อ่านต้องการลบ Key Pair กับ Security Group กรุณาตรวจสอบว่าไม่ซ้ำกับการตั้งค่าที่มีอยู่ใน Saved configuration ด้วย
ตรวจสอบที่บันทึกไฟล์จริงของ Saved configuration ว่าอยู่ที่ไหน
เข้ามาที่ Service S3 แล้วเลือก Buckets จากเมนูด้านซ้าย
จากนั้นค้นหาและเลือก Buckets:elasticbeanstalk-[region]-[aws-account-id]
เข้าไปที่ Path:resources/templates/[application-name]
จะเห็นว่ามีไฟล์ของแต่ละสภาพแวดล้อมอยู่ในนี้ แต่ในตัวอย่างนี้มีแค่ไฟล์single
เพราะผมทำการ Saved configurations ไว้แค่ไฟล์เดียว
ดาวน์โหลดไฟล์ของ Saved configurations
ติ๊ก✅
ไฟล์ที่ต้องการดาวน์โหลด และคลิกDownload
ไฟล์ที่ได้มาเป็นไฟล์ตั้งค่ารูปแบบ YAML
จากนั้นลองเปิดไฟล์ที่ดาวน์โหลดมา จะเห็นว่ามีข้อมูลการตั้งค่าถูกบันทึกลงในไฟล์นี้ทั้งหมด
File: single (คลิกดูตัวอย่างข้อมูลไฟล์ที่นี่)
EnvironmentConfigurationMetadata:
DateCreated: '1660538421000'
DateModified: '1660538421000'
Platform:
PlatformArn: arn:aws:elasticbeanstalk:[region]::platform/PHP 8.1 running on
64bit Amazon Linux 2/3.4.0
OptionSettings:
aws:elasticbeanstalk:container:php:phpini:
document_root: /public
aws:ec2:instances:
InstanceTypes: t3a.nano
aws:elasticbeanstalk:application:environment:
APP_ENV: local
MAIL_ENCRYPTION: null
DB_PORT: '3306'
AWS_SECRET_ACCESS_KEY: ''
PUSHER_APP_KEY: ''
APP_NAME: Laravel
VITE_PUSHER_HOST: ${PUSHER_HOST}
APP_KEY: base64:sVxmnJFIjiK8yQmu+ZnPbXZiI7+VWl67178FoVMdy9k=
REDIS_PORT: '6379'
DB_USERNAME: admin
PUSHER_HOST: ''
MAIL_FROM_NAME: ${APP_NAME}
DB_CONNECTION: mysql
LOG_DEPRECATIONS_CHANNEL: null
VITE_PUSHER_APP_KEY: ${PUSHER_APP_KEY}
LOG_LEVEL: debug
APP_URL: http://localhost
FILESYSTEM_DISK: local
PUSHER_APP_SECRET: ''
PUSHER_APP_ID: ''
PUSHER_SCHEME: https
LOG_CHANNEL: stack
MAIL_PASSWORD: null
PUSHER_PORT: '443'
PUSHER_APP_CLUSTER: mt1
MAIL_HOST: mailhog
AWS_DEFAULT_REGION: us-east-1
SESSION_LIFETIME: '120'
AWS_BUCKET: ''
AWS_USE_PATH_STYLE_ENDPOINT: false
VITE_PUSHER_PORT: ${PUSHER_PORT}
SESSION_DRIVER: file
QUEUE_CONNECTION: sync
AWS_ACCESS_KEY_ID: ''
REDIS_PASSWORD: null
APP_DEBUG: false
REDIS_HOST: 127.0.0.1
VITE_PUSHER_APP_CLUSTER: ${PUSHER_APP_CLUSTER}
MAIL_USERNAME: null
DB_HOST: [host]
MAIL_PORT: '1025'
VITE_PUSHER_SCHEME: ${PUSHER_SCHEME}
MEMCACHED_HOST: 127.0.0.1
MAIL_FROM_ADDRESS: hello@example.com
MAIL_MAILER: smtp
BROADCAST_DRIVER: log
CACHE_DRIVER: file
DB_DATABASE: laravel
DB_PASSWORD: ********
aws:elasticbeanstalk:environment:
ServiceRole: arn:aws:iam::[aws-account-id]:role/aws-elasticbeanstalk-service-role
EnvironmentType: SingleInstance
aws:elasticbeanstalk:healthreporting:system:
ConfigDocument:
Version: 1
CloudWatchMetrics:
Instance:
RootFilesystemUtil: null
CPUIrq: null
LoadAverage5min: null
ApplicationRequests5xx: null
ApplicationRequests4xx: null
CPUUser: null
LoadAverage1min: null
ApplicationLatencyP50: null
CPUIdle: null
InstanceHealth: null
ApplicationLatencyP95: null
ApplicationLatencyP85: null
ApplicationLatencyP90: null
CPUSystem: null
ApplicationLatencyP75: null
CPUSoftirq: null
ApplicationLatencyP10: null
ApplicationLatencyP99: null
ApplicationRequestsTotal: null
ApplicationLatencyP99.9: null
ApplicationRequests3xx: null
ApplicationRequests2xx: null
CPUIowait: null
CPUNice: null
Environment:
InstancesSevere: null
InstancesDegraded: null
ApplicationRequests5xx: null
ApplicationRequests4xx: null
ApplicationLatencyP50: null
ApplicationLatencyP95: null
ApplicationLatencyP85: null
InstancesUnknown: null
ApplicationLatencyP90: null
InstancesInfo: null
InstancesPending: null
ApplicationLatencyP75: null
ApplicationLatencyP10: null
ApplicationLatencyP99: null
ApplicationRequestsTotal: null
InstancesNoData: null
ApplicationLatencyP99.9: null
ApplicationRequests3xx: null
ApplicationRequests2xx: null
InstancesOk: null
InstancesWarning: null
Rules:
Environment:
ELB:
ELBRequests4xx:
Enabled: true
Application:
ApplicationRequests4xx:
Enabled: true
aws:autoscaling:launchconfiguration:
SecurityGroups:
- [security-group]
RootVolumeSize: '8'
DisableIMDSv1: true
IamInstanceProfile: aws-elasticbeanstalk-ec2-role
AWSEBAutoScalingLaunchConfiguration.aws:autoscaling:launchconfiguration:
EC2KeyName: [key-pair]
RootVolumeType: gp2
EnvironmentTier:
Type: Standard
Name: WebServer
AWSConfigurationTemplateVersion: 1.1.0.0
สรุป
ผมได้ลองใช้งานฟังก์ชัน Saved configuration แล้วรู้สึกว่ามีความสะดวกในการสร้าง Environment มาก เพราะมันจะบันทึกการตั้งค่าไว้ให้ทุกอย่างตามที่เราได้ตั้งค่าไว้ก่อนหน้านี้
ยิ่งไปกว่านั้นเรายังสามารถปรับเปลี่ยนสภาพ Environment ที่กำลังใช้งานอยู่ได้อีกด้วย
ผมหวังว่าบทความนี้จะเป็นประโยชน์ให้กับผู้อ่านได้นะครับ
POP จากบริษัท Classmethod (Thailand) ครับ !