เมื่อฉันต้องการเปิดใช้งานอินสแตนซ์ของ Ubuntu บน EC2 ฉันจะค้นหาสิ่งที่เหมาะสมได้อย่างไร มีภาพสาธารณะหลายพันภาพที่มี "Ubuntu" อยู่ในชื่อ ฉันสนใจเพียงแค่เรียกใช้อิมเมจอย่างเป็นทางการของ Ubuntu ฉันจะเลือก AMI ที่เหมาะสมได้อย่างไร?
เมื่อฉันต้องการเปิดใช้งานอินสแตนซ์ของ Ubuntu บน EC2 ฉันจะค้นหาสิ่งที่เหมาะสมได้อย่างไร มีภาพสาธารณะหลายพันภาพที่มี "Ubuntu" อยู่ในชื่อ ฉันสนใจเพียงแค่เรียกใช้อิมเมจอย่างเป็นทางการของ Ubuntu ฉันจะเลือก AMI ที่เหมาะสมได้อย่างไร?
คำตอบ:
ความสำเร็จของอูบุนตูในฐานะแพลตฟอร์มและความมุ่งมั่นของอูบุนตูในการรีเฟรช AMIs หมายความว่ามีรูปภาพนับพันรูปบน Amazon EC2 ที่มี "ubuntu" ในชื่อของพวกเขา เมื่อรวมกับและการขาดอูบุนตูในเมนู "เริ่มต้นอย่างรวดเร็ว" ทำให้การเลือก AMI ที่เหมาะสมเป็นงานที่ไม่สำคัญ
ข้อมูล Ubuntu ทั่วไปบางส่วน
คุณอาจทราบถึงรายการเหล่านี้แล้ว แต่ฉันต้องการชี้ให้เห็นสำหรับผู้ที่เพิ่งเริ่มต้นใช้งาน Ubuntu หรือ EC2
ง่ายที่สุด: ค้นหา AMIs จากเว็บเบราว์เซอร์ของคุณ
คุณสามารถเลือกอินเทอร์เฟซของคุณสำหรับการเลือกรูปภาพ ไปที่:
ที่ด้านล่างของหน้านี้คุณสามารถเลือกภูมิภาคปล่อยโค้งหรือเก็บราก คุณแสดงเฉพาะรุ่นล่าสุดที่นี่เท่านั้น เมื่อคุณทำการเลือกคุณสามารถคัดลอกและวางหมายเลข ami หรือเพียงคลิกที่มันเพื่อไปที่หน้าการเปิดตัวคอนโซล EC2 สำหรับ AMI นั้น
หรือ
ค้นหาผ่าน Amazon EC2 Console
EC2 Console เป็นวิธีกราฟิกในการจัดเรียง AMI และเลือกหนึ่งตัวเพื่อเปิดใช้ หากต้องการเปิดภาพ Ubuntu อย่างเป็นทางการที่นี่ทำตามขั้นตอนด้านล่าง
จำกัด ผลลัพธ์ไว้ที่รูปภาพที่มีเสถียรภาพของ Ubuntu โดยพิมพ์ ubuntu-images /
คุณควรขยายฟิลด์ 'ชื่อ AMI' ให้กว้างที่สุด (อาจย่อขนาด)
จำกัด ผลลัพธ์ให้เป็นรุ่นเฉพาะโดยการต่อท้าย '. *'
ตัวอย่างเช่น: ubuntu-images /.* 10.04
จำกัด ผลลัพธ์ไว้ที่ส่วนโค้งที่กำหนดโดยการเพิ่ม '. * i386' หรือ '. * amd64'
หมายเหตุ : หากคุณต้องการเรียกใช้ m1.small หรือ c1.medium คุณต้องมี 'i386' หากคุณต้องการเรียกใช้ t1.micro คุณจะต้องเลือกภาพ 'ebs'
จัดเรียงผลลัพธ์ของคุณตามชื่อ AMI และทำการเลือก
ด้วยการจัดเรียงตามชื่อ AMI คุณสามารถดู AMI ใหม่ล่าสุดสำหรับชุดที่กำหนดได้ง่ายขึ้น AMI แต่ละอันลงท้ายด้วยตัวเลขในรูปแบบ YYYYMMMM (ปี, เดือน, วัน) คุณต้องการล่าสุด
ยืนยันเจ้าของคือ 099720109477!
ผู้ใช้สามารถลงทะเบียน AMI ภายใต้ชื่อใดก็ได้ ไม่มีสิ่งใดป้องกันผู้ใช้ที่เป็นอันตรายจากการลงทะเบียน AMI ที่จะตรงกับการค้นหาด้านบน ดังนั้นเพื่อความปลอดภัยคุณต้องยืนยันว่าเจ้าของ ami คือ ' 099720109477 '
หมายเหตุ
การเข้าถึง HTTPS : จากตัวเลือกด้านบนตอนนี้https://cloud-images.ubuntu.com/server/releases/เป็นตัวเลือกเดียวที่ให้ข้อมูลผ่าน https นี่อาจเป็นสิ่งสำคัญสำหรับคุณหากคุณกังวลเกี่ยวกับการโจมตี "Man in the Middle" ที่อาจเกิดขึ้นเมื่อค้นหารหัส AMI ผมเคยขออาเหม็ด [kim0 ใน IRC] เพื่อสนับสนุนการเข้าถึง HTTPS https://cloud.ubuntu.com/ami
กล่องโต้ตอบ 'เปิดใช้งานอินสแตนซ์' ของคอนโซลบนเว็บ : ฉันไม่เห็นวิธีใด ๆ ในกล่องโต้ตอบ 'เรียกใช้อินสแตนซ์' เพื่อดู ID เจ้าของ เพราะถ้าเป็นเช่นนี้ฉันไม่แนะนำให้ใช้กล่องโต้ตอบนั้นเพื่อค้นหา "Community AMIs" ไม่มีทางที่คุณจะสามารถรู้ได้อย่างมั่นใจว่าใครเป็นเจ้าของภาพจากภายในคอนโซล สำหรับผู้ใช้ขั้นสูงฉันจะบล็อกบางครั้งในเร็ว ๆ นี้เพื่อหา AMIs โดยทางโปรแกรม [คำแนะนำ]
hvm-instance
และhvm-ssd
? ฉันกลัว "อินสแตนซ์" หมายถึง "paravirtual" แต่ไม่แน่ใจและไม่สามารถหาข้อมูลเกี่ยวกับมันได้ นอกจากนี้ยังมีประโยชน์ที่จะทราบว่าhttps://cloud-images.ubuntu.com/locator/
ตัวกรองข้อเสนอ ... ที่ด้านล่างของหน้า
รุ่นใหม่และปรับปรุง
# needed as json list returned by ubuntu site is mal-formed
remove_last_comma() { sed '
$x;$G;/\(.*\),/!H;//!{$!d
}; $!x;$s//\1/;s/^\n//'
}
curl -s "https://cloud-images.ubuntu.com/locator/ec2/releasesTable" \
| remove_last_comma \
| jq -c '.aaData[] | select(contains(["16.04", "us-west-2", "hvm:ebs"]))' \
| grep -o 'ami-[a-z0-9]\+' | head -1
โดยทั่วไปจะใช้ข้อมูลดิบสำหรับหน้าค้นหา ami ของ Ubuntu และใช้ jq เพื่อแยกแถวที่ฉันต้องการจากนั้น grep จะดึงค่าออกมา เร็วกว่ารุ่นเก่ามาก
-- รุ่นเดิม
นี่เป็นอีกตัวอย่างหนึ่ง ฉันเพิ่งเขียนสิ่งนี้เพื่อรับรหัส AMI ที่ไว้วางใจล่าสุด มันใช้เครื่องมือ aws cli เพื่อค้นหา API โดยใช้ความจริงที่ว่าชื่อเรียงลำดับวันที่เพื่อรับล่าสุด
name=$(\
aws --region us-west-2 ec2 describe-images --owners 099720109477 \
--filters Name=root-device-type,Values=ebs \
Name=architecture,Values=x86_64 \
Name=name,Values='*hvm-ssd/ubuntu-trusty-14.04*' \
| awk -F ': ' '/"Name"/ { print $2 | "sort" }' \
| tr -d '",' | tail -1)
ami_id=$(\
aws --region us-west-2 ec2 describe-images --owners 099720109477 \
--filters Name=name,Values="$name" \
| awk -F ': ' '/"ImageId"/ { print $2 }' | tr -d '",')
มันทำงานได้ใน 2 ส่วน ส่วนแรกได้รับ AMI ทั้งหมดสำหรับ Ubuntu ที่เชื่อถือได้ซึ่งเป็นไปตามเกณฑ์ที่หลากหลาย (ebs, x86_64 และรูปแบบชื่อ) มันดึงชื่อและเรียงลำดับตามมัน ชื่อจะถูกจัดรูปแบบเพื่อให้เรียงลำดับตามวันที่ดังนั้นชื่อสุดท้ายจะเป็นชื่อใหม่ล่าสุด ชื่อนี้จะถูกกำหนดให้กับตัวแปร 'ชื่อ'
ส่วนที่สองใช้ชื่อนั้นเพื่อขอ AMI ID สำหรับ AMI ด้วยชื่อนั้น มันแยกวิเคราะห์เฉพาะ ID และกำหนดให้กับ 'ami_id'
aws --region us-west-2 ec2 describe-images --owners 099720109477 --filters Name=root-device-type,Values=ebs Name=architecture,Values=x86_64 Name=name,Values='*hvm-ssd/ubuntu-trusty-14.04*' --query 'sort_by(Images, &Name)[-1].ImageId'
ใช้ ruby aws-sdk, คุณสามารถค้นพบ Ubuntu AMI ล่าสุดได้โดยวิธีนี้
ec2 = AWS::EC2.new
root_device_type = "ebs"
ami_owner = '099720109477'
ami_name = "*ubuntu/images/#{root_device_type}/ubuntu-precise-12.04*" # hardcoded to ubuntu 12.04. You can apply your own criteria here.
AWS.memoize do
linux_ami = ec2.images.with_owner(ami_owner).
filter("root-device-type", root_device_type).
filter("architecture", "x86_64"). # use 'i386' for 32 bit and 'x86_64' for 64 bit
filter("name", ami_name)
# this only makes one request due to memoization
begin
return linux_ami.to_a.sort_by(&:name).last
rescue
abort red "Error discovering latest AMI. Terminating."
end
end
คุณสามารถใช้https://cloud-images.ubuntu.com/locator/ec2/ซึ่งให้การเปรียบเทียบที่ครอบคลุมตามเวอร์ชันวันที่วางจำหน่ายและอื่น ๆ
ค้นหารุ่นภูมิภาคที่คุณต้องการและเรียงลำดับตามวันที่วางจำหน่ายเพื่อรับเวอร์ชันล่าสุด
มีเป็นรายการที่ครอบคลุมของ AMIS อย่างเป็นทางการที่มีอยู่บนUbuntu เมฆพอร์ทัล คุณสามารถค้นหาแหล่งข้อมูลเพิ่มเติมเกี่ยวกับการเปิดตัว EC2 AMI อย่างเป็นทางการของ Canonical ในวิธีใช้ของUbuntu: คู่มือเริ่ม EC2และไดเรกทอรีดิบของ AMIs ทั้งหมดที่ออกโดย Canonical ในรูปภาพ EC2 ของ Ubuntu
ฉันคิดว่ามันจะมีประโยชน์ในการสาธิตวิธีการใช้Ansibleโดยใช้โมดูลec2_ami_find
ในขณะที่เขียน (2017-06-07) ในภูมิภาค ap-southeast-2 AWS จะแนะนำรูปภาพ Ubuntu LTS เหล่านี้หากคุณเริ่มต้นอินสแตนซ์ EC2 ด้วยตนเองจากคอนโซล:
สิ่งนี้สอดคล้องกับคำแนะนำในการใช้การจำลองเสมือนแบบ HVM และไดรฟ์ข้อมูล SSD ที่สนับสนุน EBS
เพื่อประสิทธิภาพที่ดีที่สุดเราขอแนะนำให้คุณใช้ประเภทอินสแตนซ์การสร้างปัจจุบันและ HVM AMIs เมื่อคุณเปิดใช้งานอินสแตนซ์ของคุณ
ในการรับ AMI เดียวกันกับที่ AWS แนะนำคุณสามารถใช้งานต่อไปนี้:
- name: Find the most recent xenial AMI
ec2_ami_find:
aws_access_key: "{{ vault_aws_access_key }}"
aws_secret_key: "{{ vault_aws_secret_key }}"
region: "{{ config_region }}"
name: "ubuntu/images/hvm-ssd/ubuntu-xenial-16.04-amd64-server-*"
owner: 099720109477 # canonical ownerid
virtualization_type: hvm
sort: name
sort_order: descending
sort_end: 2
register: ami_find_xenial
- name: Newest Xenial AMI
debug:
msg: "{{ ami_find_xenial.results[0].ami_id }}"
- name: AWS recommend Xenial AMI
debug:
msg: "{{ ami_find_xenial.results[1].ami_id }}"
- name: Find the most recent trusty AMI
ec2_ami_find:
aws_access_key: "{{ vault_aws_access_key }}"
aws_secret_key: "{{ vault_aws_secret_key }}"
region: "{{ config_region }}"
name: "ubuntu/images/hvm-ssd/ubuntu-trusty-14.04-amd64-server-*"
owner: 099720109477 # canonical ownerid
virtualization_type: hvm
architecture: x86_64
sort: name
sort_order: descending
sort_end: 3
register: ami_find_trusty
- name: Newest Trusty AMI
debug:
msg: "{{ ami_find_trusty.results[0].ami_id }}"
- name: AWS recommend Trusty AMI
debug:
msg: "{{ ami_find_trusty.results[2].ami_id }}"
ซึ่งให้ผลลัพธ์ต่อไปนี้:
TASK [Load secrets from Vault] *****************************************************************************************************************************************************************************
ok: [localhost]
TASK [Find the most recent xenial AMI] *********************************************************************************************************************************************************************
ok: [localhost]
TASK [Newest Xenial AMI] ***********************************************************************************************************************************************************************************
ok: [localhost] => {
"changed": false,
"msg": "ami-1e01147d"
}
TASK [AWS recommended Xenial AMI] **************************************************************************************************************************************************************************
ok: [localhost] => {
"changed": false,
"msg": "ami-96666ff5"
}
TASK [Find the most recent trusty AMI] *********************************************************************************************************************************************************************
ok: [localhost]
TASK [Newest Trusty AMI] ***********************************************************************************************************************************************************************************
ok: [localhost] => {
"changed": false,
"msg": "ami-993e2bfa"
}
TASK [AWS recommended Trusty AMI] **************************************************************************************************************************************************************************
ok: [localhost] => {
"changed": false,
"msg": "ami-807876e3"
}
หากคุณเปรียบเทียบ AMI รหัสที่ส่งคืนโดย playbook คุณสามารถดู AWS ไม่แนะนำรูปภาพล่าสุดที่มี แต่แทนที่จะเป็นรูปภาพที่สองหรือสามล่าสุด ฉันไม่รู้ว่าพวกเขากำลังใช้เกณฑ์ / การเรียนรู้แบบไหน