พื้นฐาน CodeDeploy และ appspec.yml

การทำ Deployment อัตโนมัติบน AWS

Dunieski Otano

Amazon Web Services Solutions Architect

หน้าที่ของ CodeDeploy

โฟลว์

  • ปล่อยโค้ด ไปยัง EC2, Lambda หรือ ECS
  • ดึงบิลด์อาร์ติแฟกต์จาก S3, GitHub หรือ Bitbucket
  • รัน สคริปต์การดีพลอย ผ่านเหตุการณ์วงจรชีวิต
  • ย้อนกลับอัตโนมัติหากเกิดข้อผิดพลาด
การทำ Deployment อัตโนมัติบน AWS

ส่วนประกอบหลักของ CodeDeploy

โฟลว์

  • Application: ชื่อที่ใช้จัดกลุ่มการดีพลอย
  • Deployment group: กลุ่มเป้าหมายที่รับการรีลีส
  • Deployment configuration: วิธีการทยอยปล่อย (แบ่งชุดอินสแตนซ์หรือเปลี่ยนทราฟฟิก)
  • Revision: ชุดอาร์ติแฟกต์ที่กำลังดีพลอย
การทำ Deployment อัตโนมัติบน AWS

รู้จัก appspec.yml

appspec

  • ไฟล์ YAML ที่อยู่ที่ รูทของ revision
  • version: 0.0 และ os: linux ต้องอยู่ด้านบนสุด
  • บอก CodeDeploy ว่าไฟล์ไหนไปที่ไหน
  • บอก CodeDeploy ว่าต้องรันอะไร และเมื่อไร
การทำ Deployment อัตโนมัติบน AWS

เหตุการณ์วงจรชีวิตบน EC2

  • เขียนเอง: ApplicationStop, BeforeInstall, AfterInstall
  • เขียนเอง: ApplicationStart, ValidateService
  • ระบบรันเอง: DownloadBundle, Install
  • แต่ละ hook คือ สคริปต์ shell หรือ PowerShell บนอินสแตนซ์

แผนภาพ

การทำ Deployment อัตโนมัติบน AWS

เหตุการณ์วงจรชีวิตบน Lambda

  • Lambda มีเพียง สอง hooks: BeforeAllowTraffic, AfterAllowTraffic
  • Hooks เป็น ฟังก์ชัน Lambda ไม่ใช่สคริปต์ shell
  • CodeDeploy เปลี่ยน alias ไปยังเวอร์ชันใหม่
  • ไม่มีอินสแตนซ์ให้ล็อกอิน ไม่มีไฟล์ให้คัดลอก

การเปรียบเทียบ

การทำ Deployment อัตโนมัติบน AWS

ตัวอย่าง appspec.yml จริงสำหรับ EC2

  • version: 0.0 และ os: linux อยู่ด้านบนสุด
  • files: คัดลอกเนื้อหาของ app.zip ไปยัง /var/www/app
  • BeforeInstall, AfterInstall, ApplicationStart: สคริปต์วงจรชีวิต
  • ValidateService: smoke test ยืนยันความสำเร็จ

zip

การทำ Deployment อัตโนมัติบน AWS

มาฝึกกันเถอะ!

การทำ Deployment อัตโนมัติบน AWS

Preparing Video For Download...