Code Deployment Automation ด้วย AWS CodeCommit & CodeDeploy
เผยแพร่แล้ว: 2022-03-25ในฐานะนักพัฒนาเว็บ งานของคุณอาจมีงานที่ซับซ้อนหลายอย่าง เช่น การปรับใช้โค้ดอัตโนมัติไปยังเซิร์ฟเวอร์ที่ใช้งานจริง หรือหากคุณทำงานเป็นกลุ่มและประสบปัญหาขณะอัปโหลดโค้ดของคุณไปยังเว็บไซต์ที่ใช้งานจริง โพสต์บล็อกนี้เป็นวิธีแก้ปัญหาทั้งหมด ปัญหา.
เมื่อใช้ FTP คุณต้องเขียนทับโค้ดของผู้ร่วมพัฒนาร่วมของคุณ ซึ่งเป็นปัญหาที่พบได้บ่อยและเกิดขึ้นกับพวกเราส่วนใหญ่ คู่มือนี้จะแสดงให้คุณเห็นถึงการปรับใช้โค้ดอัตโนมัติด้วยบริการ AWS CodeCommit, CodeDeploy และไปป์ไลน์
ภาพรวมเทคโนโลยี:
- AWS CodeCommit : เราจะใช้ CodeCommit เพื่อรักษาที่เก็บของเรา (เนื้อหาเว็บ/ไฟล์โค้ด) ที่จะเก็บไฟล์โครงการทั้งหมดและบันทึกการคอมมิต
- เซิร์ฟเวอร์ EC2 : เราจะใช้ EC2 เป็นเซิร์ฟเวอร์ที่ใช้งานจริง โดยจะมีไซต์และโค้ดที่ใช้งานจริงสำหรับผู้เยี่ยมชมเว็บไซต์ของคุณ
- AWS CodeDeploy : จะเก็บแอปพลิเคชันไว้เพื่อเผยแพร่รหัสของคุณไปยังเซิร์ฟเวอร์ EC2 นอกจากนี้ เราจะสร้าง Deployment Group ซึ่งจะเก็บชื่อ/แท็กของอินสแตนซ์ EC2 เป้าหมายที่เราต้องการเผยแพร่โค้ดของเรา
- ไปป์ไลน์ : เราจะเลือก CodeCommit เป็นซอร์สและ CodeDeploy เป็นขั้นตอนการปรับใช้ของเรา ดังนั้น เมื่อใดก็ตามที่ตรวจพบการเปลี่ยนแปลงโค้ดใน CodeCommit ไปป์ไลน์จะทำงานและพุชการเปลี่ยนแปลงโค้ดเหล่านั้นไปที่ CodeDeploy (EC2 Instance)
Code Deployment Automation: อธิบายโดยละเอียด :
การสร้างผู้ใช้ IAM และ Git สำหรับ Code Deployment Automation
ก่อนอื่นเราต้องสร้างผู้ใช้ IAM และผู้ใช้ Git ที่จะทำการเปลี่ยนแปลงโค้ดและเผยแพร่บนเซิร์ฟเวอร์การปรับใช้
- สร้างผู้ใช้ IAM
- อนุญาตให้เข้าถึง : AWSCodeCommitFullAccess, AWSCodeDeployFullAccess, AWSCodeCommitPowerUser คุณจะพบตัวเลือกนี้ในแท็บ "แนบนโยบายที่มีอยู่โดยตรง"
- ตอนนี้ เข้าสู่ระบบด้วยผู้ใช้ IAM นี้
- คลิกที่ Security Credentials จากมุมบนขวา
- คลิกที่ แท็บ ข้อมูลประจำตัว AWS CodeCommit
- ใต้ส่วน "ข้อมูลรับรอง HTTPS Git สำหรับ AWS CodeCommit" ให้คลิกปุ่ม สร้าง ข้อมูลรับรอง
- ตอนนี้ คัดลอกชื่อผู้ใช้และรหัสผ่านนั้นในที่ปลอดภัย นี่จะเป็นชื่อผู้ใช้และรหัสผ่านหลักของ Git ของคุณเพื่อผลัก/ดึงการเปลี่ยนแปลงรหัส
การสร้างที่เก็บใน CodeCommit
ตอนนี้ มาสร้างพื้นที่เก็บข้อมูลที่จะเก็บรหัสที่แน่นอนของคุณ
- ไปที่ CodeCommit Dashboard จากผู้ใช้ IAM
- ที่มุมบนขวา ให้เลือกภูมิภาคที่คุณต้องการสร้างที่เก็บของคุณ
- คลิกที่สร้างที่เก็บ ตั้งชื่อ คำอธิบาย และคลิกที่สร้าง
- ใต้ส่วน " โคลนที่เก็บ " คุณจะเห็น URL ของที่เก็บของคุณ เก็บไว้ในที่ปลอดภัย จะมีลักษณะดังนี้: https://git-codecommit.ap-south-1.amazonaws.com/v1/repos/HarryTest
กำลังอัปโหลดไฟล์โครงการของคุณเป็นครั้งแรก
- เปิด พรอมต์คำสั่ง ของระบบในพื้นที่ของคุณที่มีรหัสเดิมอยู่
- ในพรอมต์คำสั่ง นำทางไปยังเส้นทางที่โค้ดของคุณอยู่
- ตอนนี้ ให้รันคำสั่งต่อไปนี้เพื่อพุชโค้ดของคุณไปยังที่เก็บ AWS เป็นครั้งแรก:
git init
git config –local init.defaultBranch หลัก
git config –global init.defaultBranch หลัก
git เพิ่ม ## สิ่งนี้จะคอมมิตไฟล์ทั้งหมดของโครงการ
git commit –m “การคอมมิตเริ่มต้น”
git push https://git-codecommit.ap-south-1.amazonaws.com/v1/repos/HarryTest –all
- สร้างอินสแตนซ์ EC2 และติดตั้ง CodeDeploy Agent
- สร้างบทบาทอินสแตนซ์
- เปิดคอนโซล AWS IAM ของคุณ
- ไปที่แท็บบทบาท >> สร้างบทบาท
- ภายใต้ Select type of trusted entity ให้เลือก AWS service ภายใต้ 'เลือกกรณีการใช้งาน' เลือก EC2 ภายใต้ 'เลือกกรณีการใช้งานของคุณ' เลือก EC2 เลือกถัดไป: การ อนุญาต
- ค้นหาและเลือกนโยบายที่ชื่อ AmazonEC2RoleforAWSCodeDeploy จากนั้นเลือก ถัดไป: แท็ ก
- เลือกถัดไป: ตรวจทาน ป้อนชื่อสำหรับบทบาท (เช่น EC2InstanceRole ) แล้ว คลิก Create
- สร้างอินสแตนซ์ EC2
- ไปที่คอนโซล EC2 คลิกที่เปิดตัวอินสแตนซ์
- เลือก Amazon Machine Image (AMI) ค้นหา Amazon Linux 2 AMI (HVM) SSD Volume Type แล้วเลือก Select (AMI นี้มีป้ายกำกับว่า "มีสิทธิ์ใน Free Tier" และอยู่ที่ด้านบนสุดของรายการ)
- เลือก หน้าประเภทอินสแตนซ์ เลือกประเภท t2.micro ที่เข้าเกณฑ์ฟรีเป็นการกำหนดค่าฮาร์ดแวร์สำหรับอินสแตนซ์ของคุณ จากนั้นเลือก ถัดไป: กำหนดค่ารายละเอียดอิน สแตน ซ์
- กำหนดค่าหน้ารายละเอียดอินสแตนซ์ ทำดังต่อไปนี้:
- ในจำนวนอินสแตนซ์ ให้ ป้อน 1
- ในการกำหนด IP สาธารณะอัตโนมัติ ให้ เลือก เปิดใช้ งาน
- ในบทบาท IAM ให้เลือกบทบาท IAM ที่คุณสร้างในขั้นตอนก่อนหน้า (เช่น EC2InstanceRole )
- ขยาย รายละเอียดขั้นสูง และในฟิลด์ข้อมูลผู้ใช้ ให้ป้อนข้อมูลต่อไปนี้:
#!/bin/bash
yum -y อัปเดต
yum ติดตั้ง -y ruby
yum ติดตั้ง -y aws-cli
cd /home/ec2-user
wget https://aws-codedeploy-us-east-2.s3.us-east-2.amazonaws.com/latest/install
chmod +x ./install
./ติดตั้งอัตโนมัติ
- ปล่อยให้รายการที่เหลือในขั้นตอนที่ 3: กำหนดค่าหน้ารายละเอียดอินสแตนซ์ไม่เปลี่ยนแปลง เลือกถัดไป: เพิ่มพื้นที่เก็บ ข้อมูล
- ปล่อยให้ขั้นตอนที่ 4: เพิ่มหน้าการจัดเก็บไม่เปลี่ยนแปลง แล้วเลือก ถัดไป: เพิ่มแท็ก
- เลือก เพิ่มแท็ ก ใน Key ให้ป้อน Name และใน Value ให้ ป้อน MyCodePipelineDemo เลือกถัดไป: กำหนดค่ากลุ่มความปลอดภัย ต่อมา คุณสร้างแอปพลิเคชัน CodeDeploy ที่ปรับใช้แอปพลิเคชันตัวอย่างกับอินสแตนซ์นี้ CodeDeploy เลือกอินสแตนซ์ที่จะปรับใช้ตามแท็กที่แนบกับอินสแตนซ์
- กำหนดค่าหน้ากลุ่มความปลอดภัย ทำดังต่อไปนี้:
- ถัดจาก กำหนดกลุ่มความปลอดภัย ให้เลือก สร้างกลุ่มความปลอดภัย ใหม่
- ในแถวสำหรับ SSH ภายใต้ Source ให้ เลือก My IP
- เลือก Add Rule เลือก HTTP จากนั้นภายใต้ Source เลือก My IP
- เลือกตรวจทานและเปิดใช้
- ใน หน้าเปิดใช้อินสแตนซ์รีวิว ให้เลือกเปิดใช้ เมื่อได้รับพร้อมท์สำหรับคู่คีย์ ให้เลือก ' ดำเนินการต่อโดยไม่มีคู่คีย์ '
- เลือก ดูอินสแตนซ์ เพื่อปิดหน้าการยืนยันและกลับไปที่คอนโซล
- คุณสามารถดูสถานะการเปิดตัวได้ใน หน้า อิน สแตนซ์ เมื่อคุณเปิดอินสแตนซ์ สถานะเริ่มต้นคือ 'รอดำเนินการ' หลังจากที่อินสแตนซ์เริ่มทำงาน สถานะของอินสแตนซ์จะเปลี่ยนเป็น 'กำลังทำงาน' และได้รับชื่อ DNS สาธารณะ (ถ้า คอลัมน์ DNS สาธารณะ ไม่ปรากฏขึ้น ให้เลือก ไอคอน แสดง/ซ่อน แล้วเลือก DNS สาธารณะ )
- อาจใช้เวลาสักครู่ก่อนที่อินสแตนซ์จะพร้อมให้คุณเชื่อมต่อ ดูข้อมูลใน คอลัมน์การ ตรวจสอบสถานะ เพื่อดูว่าอินสแตนซ์ของคุณผ่านการตรวจสอบสถานะหรือไม่
สร้างแอปพลิเคชันใน CodeDeploy
- สร้างบทบาทบริการ CodeDeploy
- เปิดคอนโซล IAM ที่ https://console.aws.amazon.com/iam/
- จากแดชบอร์ดคอนโซล ให้เลือก Roles
- เลือก สร้างบทบาท
- ภายใต้ Select type of trusted entity ให้เลือก AWS service ภายใต้ เลือกกรณีการใช้งาน เลือก CodeDeploy ภายใต้ เลือกกรณีการใช้งานของคุณ เลือก CodeDeploy เลือกถัดไป: สิทธิ์ นโยบายที่มีการจัดการ AWSCodeDeployRole แนบมากับบทบาทแล้ว
- เลือก ถัดไป: แท็ก และ ถัดไป: ตรวจทาน
- ป้อนชื่อสำหรับบทบาท (เช่น CodeDeployRole) แล้วเลือกสร้างบทบาท
- สร้างแอปพลิเคชันใน CodeDeploy
- เปิดคอนโซล CodeDeploy ที่ https://console.aws.amazon.com/codedeploy
- หากหน้า แอปพลิเคชัน ไม่ปรากฏขึ้น บนเมนู ให้เลือก แอปพลิเคชัน
- เลือก สร้างแอปพลิเคชัน
- ในชื่อแอปพลิเคชัน ให้ป้อน MyDemoApplication
- ใน Compute Platform ให้เลือก EC2/On-premises
- เลือกสร้างแอปพลิเคชัน
- สร้างกลุ่มการปรับใช้ใน CodeDeploy
- บนเพจที่แสดงแอปพลิเคชันของคุณ ให้เลือก สร้างกลุ่มการปรับใช้
- ในชื่อกลุ่มการปรับใช้ ให้ป้อน MyDemoDeploymentGroup
- In-Service Role เลือกบทบาทของบริการที่คุณสร้างไว้ก่อนหน้านี้ (เช่น CodeDeployRole )
- ภายใต้ ประเภทการทำให้ใช้งานได้ เลือก แทนที่
- ภายใต้ การกำหนดค่าสภาพแวดล้อม ให้เลือกอินสแตนซ์ Amazon EC2 ในฟิลด์ คีย์ ให้ป้อน ชื่อ ในฟิลด์ Value ให้ป้อนชื่อที่คุณใช้แท็กอินสแตนซ์ (เช่น MyCodePipelineDemo )
- ภายใต้การกำหนดค่าการทำให้ใช้งานได้ เลือก CodeDeployDefault.OneAtaTime
- ภายใต้ Load Balancer ตรวจสอบให้แน่ใจว่าไม่ได้ เลือก Enable load balancing คุณไม่จำเป็นต้องตั้งค่าตัวโหลดบาลานซ์หรือเลือกกลุ่มเป้าหมายสำหรับตัวอย่างนี้
- ขยายส่วนขั้นสูง ภายใต้ Alarms หากมีการแจ้งเตือนใดๆ อยู่ในรายการ ให้เลือก Ignore alarm configuration
- เลือกสร้างกลุ่มการปรับใช้
สร้างไปป์ไลน์
- สร้างไปป์ไลน์
- ลงชื่อเข้าใช้ AWS Management Console และเปิดคอนโซล CodePipeline ที่ http://console.aws.amazon.com/codesuite/codepipeline/home
- เปิดคอนโซล CodePipeline ที่ https://console.aws.amazon.com/codepipeline/
- เลือก สร้างไปป์ ไลน์
- ใน ขั้นตอนที่ 1 : เลือกการตั้งค่าไปป์ไลน์ ในชื่อไปป์ไลน์ ให้ ป้อน MyFirstPipeline
- ในบทบาทบริการ เลือกบทบาทบริการใหม่เพื่อ อนุญาตให้ CodePipeline สร้างบทบาทบริการ ใน IAM
- ปล่อยให้การตั้งค่าอยู่ภายใต้การตั้งค่าขั้นสูงเป็นค่าเริ่มต้น แล้วเลือกถัดไป
- ในขั้นตอนที่ 2 : เพิ่มสเตจซอร์ส ใน Source Provider ให้ เลือก CodeCommit
ใน ชื่อที่เก็บ เลือกชื่อของที่เก็บ CodeCommit ที่คุณสร้างขึ้นในขั้นตอนที่ 1: สร้างที่เก็บ CodeCommit ในชื่อสาขา เลือกหลัก แล้วเลือกขั้นตอนถัดไป - หลังจากที่คุณเลือกชื่อที่เก็บและสาขา ข้อความจะแสดงกฎ Amazon CloudWatch Events ที่จะสร้างสำหรับไปป์ไลน์นี้
- ในส่วนตัวเลือก "เปลี่ยนการตรวจหา" ให้ปล่อยค่าเริ่มต้นไว้ ซึ่งช่วยให้ CodePipeline ใช้ Amazon CloudWatch Events เพื่อตรวจหาการเปลี่ยนแปลงในที่เก็บต้นทางของคุณ
- เลือก ถัด ไป
- ในขั้นตอนที่ 3 : เพิ่มขั้นตอนการสร้าง ให้เลือก ข้ามขั้นตอนการสร้าง แล้วยอมรับข้อความเตือนโดยเลือก ข้ามอีก ครั้ง เลือก ถัด ไป
หมายเหตุ : ในบทช่วยสอนนี้ คุณกำลังปรับใช้โค้ดที่ต้องมีบริการแบบไม่มีบิลด์ ดังนั้นคุณสามารถข้ามขั้นตอนนี้ได้ อย่างไรก็ตาม หากจำเป็นต้องสร้างซอร์สโค้ดของคุณก่อนที่จะปรับใช้กับอินสแตนซ์ คุณสามารถกำหนดค่า CodeBuild ในขั้นตอนนี้
- ในขั้นตอนที่ 4 : เพิ่มขั้นตอนการปรับใช้ ในผู้ให้บริการ Deploy ให้ เลือก CodeDeploy
ในชื่อแอปพลิเค ชัน ให้เลือก MyDemoApplication ในกลุ่ม Deployment เลือก MyDemoDeploymentGroup แล้วเลือก Next step - ในขั้นตอนที่ 5 : ตรวจทานข้อมูลแล้วเลือก สร้างไปป์ ไลน์
- ไปป์ไลน์เริ่มทำงานหลังจากสร้างแล้ว ดาวน์โหลดโค้ดจากที่เก็บ CodeCommit ของคุณ และสร้างการปรับใช้ CodeDeploy ไปยังอินสแตนซ์ EC2 ของคุณ คุณสามารถดูความคืบหน้า ข้อความ 'ความสำเร็จ' และ 'ความล้มเหลว' ได้ในขณะที่ตัวอย่าง CodePipeline ปรับใช้หน้าเว็บกับอินสแตนซ์ Amazon EC2 ในการปรับใช้ CodeDeploy
คุณพร้อมแล้ว! ไปที่การทำให้ใช้งาน ได้ ⇒ การ ปรับใช้ คุณจะเห็นบันทึกของการปรับใช้ทั้งหมดที่ประสบความสำเร็จและรายการที่ล้มเหลว
ในการตรวจสอบการเปลี่ยนแปลงบนไซต์ ให้เปิดอินสแตนซ์ EC2 ของคุณ ค้นหา DNS สาธารณะของคุณ ซึ่งจะปรากฏเป็น : http://ec2-3-108-40-48.ap-south-1.compute.amazonaws.com
เมื่อคุณเรียกดู คุณจะเห็นหน้าสดของคุณ
คุณทำ Code Deployment Automation สำเร็จแล้ว ตอนนี้คุณสามารถพุชการเปลี่ยนแปลงโค้ดใหม่ไปยังที่เก็บของคุณและเผยแพร่บนไซต์ของคุณโดยอัตโนมัติ หากคุณยังประสบปัญหาใด ๆ โปรดแสดงความคิดเห็นที่นี่