EC2'de hangi Ubuntu AMI'nin başlatılacağını nasıl bilebilirim?


29

EC2'de bir Ubuntu örneği başlatmak istediğimde, doğru olanı nasıl bulurum? Orada binlerce kendi adlarına "Ubuntu" sahip kamu görüntülerin. Sadece Resmi Ubuntu resimlerini çalıştırmakla ilgileniyorum. Şimdi hangisi doğru AMI’dır?


Yanıtlar:


26

Ubuntu'nun bir platform olarak başarısı ve Ubuntu'nun AMI'leri yenilemeye olan bağlılığı, Amazon EC2'de adlarında "ubuntu" yazan tam anlamıyla binlerce görüntü bulunduğu anlamına geliyor. Bu, "Hızlı Başlangıç" menüsündeki Ubuntu eksikliği ile birlikte doğru AMI'yi seçmenin önemsiz bir görev olmasını sağlar.

Bazı Genel Ubuntu Bilgileri

Bu öğelerin farkında olabilirsiniz, ancak Ubuntu veya EC2'ye yeni başlayanlar için onları işaret etmek istiyorum.

  • Ubuntu her 6 ayda bir çıkarır. Her sürümün bir sürüm numarası ve bir kod adı vardır. Burada dikkat edilmesi gereken en önemli şey, her 2 yılda bir LTS (Uzun Süreli Destek) sürümü yapılmasıdır. 5 yıl stabilite ve destek istiyorsanız, bir LTS sürümü seçin. En yeni paketleri istiyorsanız, en yeni sürümü seçin. Daha fazla bilgi için wikipedia girişine bakın.
  • Bu yazının yazıldığı sırada Amazon EC2'de 5 "bölge" var. Her bölge bir coğrafi konumu temsil eder. Her bölgenin kendine ait AMI kimlikleri vardır. Her bölgenin içinde 2 mimari (x86_64, i386) ve 2 "kök deposu" tipi (EBS veya örnek) vardır. Bu, her bir Ubuntu bülteninin yayınlanması için 20 amid ürettiğimiz anlamına gelir.

En kolay: Web Tarayıcınızdan AMI Bulun

Görüntüleri seçmek için arayüzünüzü seçebilirsiniz. İkisine de git:

  • http://cloud.ubuntu.com/ami

    Bu sayfanın alt kısmında bölgeyi seçebilir, bırakabilir, kemer veya kök deposunu seçebilirsiniz. Burada yalnızca en son sürümleri gösterdiniz. Seçiminizi yaptığınızda, ami numarasını kopyalayıp yapıştırabilir veya AMI'nin EC2 konsolu açılış sayfasına gitmek için üzerine tıklayabilirsiniz.

veya

  • https://cloud-images.ubuntu.com/server/releases/
    • Sürümünüzü numara veya kod adına göre seçin
    • 'Release /' seçimini yapın: Tarihsel yapıları hata ayıklama için etrafta tutarız, ancak 'release /' dizini her zaman en son sürüm olacaktır.
    • AMI'nızı tablodan seçin ve konsolda başlatmak veya bir komut satırını kopyalayıp yapıştırmak için tıklayın.

Amazon EC2 Konsolunda arama yapın

EC2 Konsolu, AMI'leri sıralamak ve başlatmak için birini seçmek için grafiksel bir yoldur. Resmi Ubuntu Resmini burada başlatmak için aşağıdaki adımları izleyin.

  • İstediğiniz bölgeyi sol üst kısımda, 'Navigasyon' Örneği: "Us Doğu (Virginia)" altında seçin
  • "Amis" Do tıklayın değil "Başlat Örneği" tıklayın [aşağıdaki nota bakınız]
  • 'Görüntüleme' için "Tüm Görseller" i seçin
  • Sonuçları ubuntu-images / yazarak Ubuntu Stable Release görüntüleri ile sınırlandırın

    'AMI Adı' alanını mümkün olduğunca genişlemelisiniz (belki diğerlerini daraltın).

  • Sonuçları '. *' Ekleyerek belirli bir sürümle sınırlayın.

    Örneğin: ubuntu-images /.* 10,06

  • Sonuçları '. * İ386' veya '. * Amd64' ekleyerek verilen bir kemerle sınırlayın

    Not : Bir m1.small veya c1.medium çalıştırmak istiyorsanız, 'i386' gerekir. Bir t1.micro çalıştırmak istiyorsanız, bir 'ebs' resmi seçmeniz gerekir.

  • Sonuçları AMI adına göre sıralayın ve seçiminizi yapın

    AMI adına göre sıralayarak, belirli bir set için en yeni AMI'yi daha kolay görebilirsiniz. Her AMI, YYYYMMDD (yıl, ay, gün) biçimindeki bir numara ile sona erer. En yenisini istiyorsun.

  • Sahibinin 099720109477 olduğunu doğrulayın!

    Herhangi bir kullanıcı herhangi bir ad altında bir AMI kaydedebilir. Hiçbir şey, kötü niyetli bir kullanıcının yukarıdaki arama ile eşleşen bir AMI’ye kaydolmasını engelleyemez. Bu nedenle, güvende olmak için, ami'nin sahibinin ' 099720109477 ' olduğunu doğrulamanız gerekir .

  • "Sahip" sizin için bir sütun değilse, sağ üstteki "Göster / Gizle" yi tıklayın ve gösterilecek "Sahip" i seçin.
  • AMI adına tıklayın, ardından 'Başlat' düğmesine tıklayın.

notlar

  • HTTPS Erişimi : Yukarıdaki seçeneklerden, şu anda https://cloud-images.ubuntu.com/server/releases/ https üzerinden veri sağlayan tek kişidir. Bir AMI kimliği ararken olası "Ortadaki Adam" saldırılarıyla ilgileniyorsanız, bu sizin için önemli olabilir. Ahmed'den [kim0 in kimc] https://cloud.ubuntu.com/ami adresine https erişimini desteklemesini istedim .

  • Web Konsolu 'Örneği Başlat' iletişim kutusu : Sahip Kimliğini görmek için 'Örneği Başlat' iletişim kutusunda hiçbir yol görmedim. Çünkü eğer öyleyse, "Topluluk AMI'lerini" bulmak için bu diyalogu kullanmamanızı öneririm. Konsolun içinden görüntünün sahibinin kim olduğunu güvenilir bir şekilde bilmenin hiçbir yolu yoktur. İleri düzey kullanıcılar için, AMI'leri programlı bir şekilde bulma konusunda bir süre sonra blog yazacağım [İpucu].

Kaynak


Arasındaki farkı kesin olarak söyleyebilir misiniz acaba hvm-instanceve hvm-ssd? Korkarım "örnek", "paravirtüel" anlamına gelir, ancak emin değilim ve bu konuda bilgi bulamıyorum. Ayrıca, https://cloud-images.ubuntu.com/locator/sayfanın altındaki ... filtreleri sunduğunuzu da belirtmek yararlı olabilir
Balmipour

11

Yeni ve geliştirilmiş sürüm.

# 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

Temelde ubuntu ami bulma sayfası için kullanılan ham verileri toplar ve satırın ayrıştırılması için jq kullanır, sonra değeri çıkarmak için bir grep istiyorum. Eski sürümden çok daha hızlı.


-- Orijinal versiyon

İşte başka bir örnek. Bunu en son güvenilir AMI kimliğini almak için yazdım. API'leri sorgulamak için aws cli aracını kullanır, adların tarih sırasına göre sıralanması en son elde etmek için kullanılır.

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 parça halinde çalışır. İlk bölüm, çeşitli kriterleri karşılayan ubuntu güvenilirliği için tüm AMI'leri alır (ebs, x86_64 ve isim deseni). Adı çıkarır ve sıralar. İsimler, tarihe göre sıralanacak ve sonuncusu en yenisi olacak şekilde sıralanır. Bu isim daha sonra 'isim' değişkenine atanır.

İkinci bölüm, bu adı, bu adı taşıyan AMI için AMI Kimliğini istemek için kullanır. Sadece kimliği ayrıştırır ve 'ami_id' a atar.


Lütfen bunun ne yaptığını açıklayabilir misiniz?
Kaz Wolfe

Cevabın açıklaması eklendi.
John Eikenberry

4
Bu, benzer bir şeyi başarmalıdır, ancak bir JMESPath sorgu ifadesi kullanarak: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'
dnlbrky

4

ruby aws-sdk kullanarak, en son Ubuntu AMI yazılımını bu şekilde programlayabilirsiniz.

    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



1

Bunun ecible_ami_find modülünü kullanarak Ansible ile nasıl yapılacağını göstermenin yararlı olacağını düşündüm .

EC2 örneğini konsoldan manuel olarak başlatırsanız, ap-güneydoğu-2 bölgesinde (2017-06-07) yazarken AWS bu Ubuntu LTS resimlerini önerecektir:

  • Ubuntu Sunucu 16.04 LTS (HVM), SSD Birim Tipi - ami-96666ff5
  • Ubuntu Sunucu 14.04 LTS (HVM), SSD Birim Tipi - ami-807876e3

Bu, HVM sanallaştırma ve EBS destekli SSD Birimlerini kullanma önerileriyle aynı doğrultuda .

En iyi performans için, örneklerinizi başlatırken mevcut nesil örnek türlerini ve HVM AMI'lerini kullanmanızı öneririz.

AWS'nin önerdiği AMI'leri almak için aşağıdaki görevleri kullanabilirsiniz:

- 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 }}"

Aşağıdaki çıktıyı verir:

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"
}

Oynatma kitabının döndürdüğü AMI kimliklerini karşılaştırırsanız, AWS'nin mevcut en yeni resmi önermediğini değil, ikinci veya üçüncü en son tavsiyede bulunduğunu görebilirsiniz. Burada hangi kriterleri / buluşsalları kullandıklarını bilmiyorum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.