จะอัปเกรดเป็น AMI ล่าสุดใน AWS Elastic Beanstalk ได้อย่างไร


18

ฉันใช้งานแอพพลิเคชั่นบน AWS Elastic Beanstalk และดูเหมือนว่าฉันจำเป็นต้องสร้างสภาพแวดล้อมใหม่ถ้าฉันต้องการใช้ AMI ล่าสุด

หากฉันรู้ว่ารหัส AMI ล่าสุดคืออะไรฉันสามารถอัปเดตได้ในการกำหนดค่าสภาพแวดล้อม

มีสถานที่ที่ฉันสามารถหา ID ของ Elastic Beanstalk AMIs ล่าสุดหรือดีกว่านั้นเป็นไปได้ไหมที่จะมีการแทนที่อินสแตนซ์ของเวอร์ชันใหม่โดยอัตโนมัติทุกครั้งที่มีเวอร์ชันใหม่ออกมา?


2
เปิดไฟสภาพแวดล้อมใหม่และดูว่า AMI ID อยู่บนเซิร์ฟเวอร์ที่เปิดตัวอย่างไร
ceejayoz

2
มันเจ็บปวดเล็กน้อยใช่ไหม?
Benjamin

ครั้งสุดท้ายที่ฉันตั้งค่าสภาพแวดล้อม EB ใช้เวลาประมาณห้านาที Amazon Linux AMIs ออกมาทุกๆสองเดือน IIRC 1.6 นาทีต่อเดือนไม่ได้ทำให้ฉันเจ็บปวดจนเกินไป
ceejayoz

ให้ฉันใช้ถ้อยคำใหม่: มันรู้สึกเหมือนว่าจะต้องมีวิธีที่ดีกว่า แต่คุณพูดถูกไม่ใช่เรื่องใหญ่
เบนจามิน

2
พวกเขาควรโพสต์สิ่งเหล่านี้ในบันทึกย่อประจำรุ่นหรือเหนียวแน่นในฟอรัมของพวกเขาแทนที่จะปล่อยให้เงียบ ๆ
Ken Liu

คำตอบ:


2

วิธีที่แนะนำและได้รับการสนับสนุนในการอัพเกรดสภาพแวดล้อม AWS Beanstalk ของคุณได้รับการบันทึกไว้ที่นี่และมีการกล่าวถึงการอัปเดตแพลตฟอร์มที่มีการจัดการที่นี่โดยสุจริตฉันจะยึดติดกับสิ่งนั้นถ้าคุณต้องการ รับการอัปเดตที่ไม่ทำลายเท่านั้นและ AWS จะจัดการกระบวนการดังนั้นจึงไม่มีการหยุดทำงาน

ดังนั้นฉันแค่ต้องการย้ำว่าการอัปเดตแพลตฟอร์มที่มีการจัดการน่าจะเป็นสิ่งที่คุณหรือใครก็ตามที่มาที่นี่จาก Google จะต้องการ แต่ถ้าคุณต้องการทราบ AWS ล่าสุดที่ให้ AMI สำหรับสภาพแวดล้อม Beanstalk ของคุณ เพื่อจัดระเบียบการตั้งชื่ออย่างมีเหตุผลจาก Amazon ใน AMIs ของพวกเขา)

เริ่มต้นด้วยอินสแตนซ์จากสภาพแวดล้อมของคุณให้อธิบายอินสแตนซ์เพื่อรับ AMI ปัจจุบัน (ข้ามหากคุณรู้จัก AMI ปัจจุบันแล้ว)

aws ec2 describe-instances --instance-ids i-0909613f35ec0ffee --query 'Reservations[*].Instances[*].ImageId' --output text

ami-35290a56

รับ AMI ID ที่ได้และอธิบาย

aws ec2 describe-images --image-ids ami-35290a56 --query 'Images[*][Architecture, Hypervisor, Name, RootDeviceType, VirtualizationType]' --output json

[
    [
        "x86_64",
        "xen",
        "aws-elasticbeanstalk-amzn-2016.03.0.x86_64-python34-hvm-201603290718",
        "ebs",
        "hvm"
    ]
]

เราสามารถใช้เอาต์พุตด้านบนเป็นอินพุตในการเรียงลำดับใหม่describe-imagesแต่คราวนี้เราแทนที่การประทับเวลาด้วย*สัญลักษณ์ตัวแทนเช่น:

aws ec2 describe-images --filters 'Name=architecture,Values=x86_64' 'Name=virtualization-type,Values=hvm' 'Name=owner-alias,Values=amazon' 'Name=name,Values=aws-elasticbeanstalk-amzn-*.x86_64-python34-hvm-*' --query 'sort_by(Images[*], &Name)[-1].ImageId' --output text

ami-1be5de78

เนื่องจากอำนาจของการเรียงลำดับคำศัพท์และ ISO 8601 เราจบลงด้วย AMI ami-1be5de78ใหม่ล่าสุดซึ่งในตัวอย่างของฉันคือ

aws ec2 describe-images --image-ids ami-1be5de78 --query 'Images[*].Name' --output text

aws-elasticbeanstalk-amzn-2016.09.0.x86_64-python34-hvm-201612200708

อีกครั้งฉันจะไม่แนะนำให้คุณลองเปลี่ยน AMI นี้ด้วยตัวเอง Beanstalk มีข้อกำหนดที่จะทำทุกอย่างให้คุณ!


0

ดูเหมือนว่าแม้ว่าคุณจะเปลี่ยน AMI เป็น AMI ElasticBeanstalk ที่เหมาะสมก็ตาม ดูเหมือนว่าจะทำงานไม่ถูกต้อง มันพลาดไฟล์ทั้งหมด มันใช้งานไม่ได้

ฉันคิดว่าคุณต้องเริ่มต้นสภาพแวดล้อม Elastic Beanstalk ใหม่ที่มี AMI ที่อัปเดตแล้ว ทำให้ทุกอย่างทำงานแล้วเปลี่ยน URL ของสภาพแวดล้อม


0

คุณสามารถใช้คุณสมบัติการอัพเดทที่มีการจัดการที่มาพร้อมกับ eb แต่จะต้องจ่ายเงินสำหรับการรายงานสุขภาพขั้นสูงในการทำเช่นนี้ หรือใช้คำสั่ง 'eb platform show'; ในแอปของผู้ปฏิบัติงานมี cron ที่รัน CURRENT = eb platform show your_env_name | sed -n '5p' | cut -d: -f2- | tr -d '[[:space:]]' LATEST = eb platform show your_env_name | sed -n '6p' | cut -d: -f2- | tr -d '[[:space:]]' - จากนั้นเปรียบเทียบพวกเขาและถ้าต่างกันคุณสามารถใช้ eb clone (ค่าเริ่มต้นเป็นเวอร์ชั่นใหม่) แล้วเปลี่ยน cname


0

การนำทางไปยังแผงควบคุมของแอปพลิเคชันของคุณค้นหา 'การกำหนดค่า' และคลิก 'เปลี่ยน'

คุณควรเห็นรายการที่คุณสามารถเลือกแพลตฟอร์มได้ รุ่นล่าสุดระบุไว้ในรายการนั้น การเลือกแพลตฟอร์ม

AWS EB ใช้การตั้งค่าเฉพาะสำหรับภาษาการเขียนโปรแกรมที่แตกต่างกัน คุณสามารถค้นหารายการการตั้งค่าได้ในเอกสารประกอบhttp://docs.aws.amazon.com/elasticbeanstalk/latest/dg/concepts.platforms.html

มีตารางแสดงให้คุณเห็นว่า AMI เวอร์ชันใดที่แต่ละแพลตฟอร์มใช้

ฉันไม่พบวิธีเรียกใช้การอัปเดตเหล่านี้โดยอัตโนมัติ ฉันชอบที่จะตรวจสอบการเปลี่ยนแปลงของแพลตฟอร์มและทดสอบก่อนใช้งานจริง


0

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


-2

ฉันสามารถอัปเดตแอปพลิเคชันปัจจุบันของฉันที่โฮสต์บน Beanstalk เป็น Amazon Linux AMI ล่าสุดโดยใช้ขั้นตอนด้านล่าง

1- ล็อกอินเข้าสู่ AWS Console และไปยังพอร์ทัล Beanstalk

2- ไปที่หน้าการกำหนดค่าของแอปพลิเคชันของคุณและคลิกที่ 'อินสแตนซ์'

3- ค้นหารหัส AMI ควรเป็นเช่นนั้น AMI-xxxxxx

4- ใช้รหัส AMI และกลับไปที่คอนโซล EC2 และคลิกที่ AMI

5- เปลี่ยนมุมมองเป็นภาพสาธารณะและมองหา AMI id ที่ดึงข้อมูลมาก่อนหน้านี้จากการกำหนดค่า Beanstalk

6- เปิด AMI นั้นเป็นอินสแตนซ์ใหม่

7- เมื่อเปิดตัวเข้าสู่ระบบอินสแตนซ์และปรับแต่งตามความต้องการใช้งานของคุณ

8- เมื่อคุณพอใจทุกอย่างในสถานที่ตามที่คุณต้องการให้มันสร้างอิมเมจ AMI ของอินสแตนซ์ใหม่นี้

9- ใช้อินสแตนซ์ใหม่ของ AMI id ที่สร้างขึ้นในขั้นตอนที่ 8 และนำไปใช้กับการกำหนดค่าแอปพลิเคชัน Beanstalk ของคุณ

10- มันจะไม่ลบอินสแตนซ์เก่าและสร้างอินสแตนซ์ใหม่ด้วย AMI ที่คุณกำหนดเองและยังปรับใช้แอปพลิเคชันล่าสุดของคุณไปยังอินสแตนซ์ใหม่


1
ฉันคิดว่าคุณเข้าใจผิดคำถาม ฉันไม่ได้ถามว่าจะสร้างและใช้ AMI ที่กำหนดเองได้อย่างไรฉันถามว่าจะรู้ได้อย่างไรว่ารหัส Bean ยืดหยุ่นล่าสุด AMS เริ่มต้นล่าสุดที่ใช้เมื่อคุณสร้างสภาพแวดล้อมใหม่และถ้าเป็นไปได้วิธีการใช้ AMI ใหม่โดยอัตโนมัติ เมื่อ AWS เปิดตัว
Benjamin
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.