سؤال كيف أعرف ما هو Ubuntu AMI الذي سيتم تشغيله على EC2؟


عندما أريد تشغيل مثيل من Ubuntu على EC2 ، كيف يمكنني العثور على واحد صحيح؟ هناك الآلاف من الصور العامة التي تحتوي على "أوبونتو" باسمها. أنا مهتم فقط بتشغيل صور Ubuntu الرسمية. كيف يمكنني الآن أي AMI هو الصحيح؟


26
2017-07-18 14:41


الأصل


انظر أيضا unix.stackexchange.com/questions/24402/... - cwd


الأجوبة:


إن نجاح Ubuntu كمنبر والتزام Ubuntu بتحديث AMIs يعني أن هناك آلاف من الصور على Amazon EC2 مع "ubuntu" باسمها. هذا ، جنبا إلى جنب مع وعدم وجود أوبونتو في قائمة "البدء السريع" يجعل اختيار AMI الصحيح مهمة غير تافهة.

بعض معلومات أوبونتو العامة

قد تكون بالفعل على دراية بهذه العناصر ، لكني أريد أن أشير إليها لأولئك الذين بدأوا للتو مع أوبونتو أو EC2.

  • إصدارات Ubuntu كل 6 أشهر. يحتوي كل إصدار على رقم إصدار و codename. أهم شيء هو أن نلاحظ هنا أنه يتم كل سنتين إصدار إصدار LTS (دعم المدى الطويل). إذا كنت تريد الاستقرار والدعم لمدة 5 سنوات ، حدد إصدار LTS. إذا كنت تريد أحدث الحزم ، حدد أحدث إصدار. راجع مدخل ويكيبيديا لمزيد من المعلومات.
  • في وقت كتابة هذه السطور ، هناك 5 "مناطق" في Amazon EC2. كل منطقة تمثل موقعًا جغرافيًا. لدى كل منطقة معرّفات AMI الخاصة بها. يوجد داخل كل منطقة معماريان (x86_64 و i386) و نوعان "مخزن جذر" (EBS أو مثيل). وهذا يعني أنه من أجل كل إصدار من إصدارات Ubuntu ، ننتج 20 معرّفًا لـ ami.

أسهل: العثور على AMIs من متصفح الويب الخاص بك

يمكنك اختيار واجهتك لاختيار الصور. انتقل إلى إما:

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

    في أسفل هذه الصفحة ، يمكنك تحديد المنطقة أو الإصدار أو القوس أو مخزن الجذر. يظهر لك فقط أحدث الإصدارات هنا. عندما تقوم باختيارك ، يمكنك نسخ رقم عامي ولصقه ، أو النقر عليه للانتقال مباشرة إلى صفحة بدء تشغيل وحدة التحكم في EC2 لذلك AMI.

أو

  • https://cloud-images.ubuntu.com/server/releases/
    • حدد الإصدار الخاص بك حسب الرقم أو اسم الرمز
    • اختر "release / ': نحافظ على الإصدارات التاريخية للتغلب على التصحيح ، ولكن سيكون دليل" الإصدار / "هو الأحدث دائمًا.
    • حدد AMI الخاص بك من الجدول وانقر لبدء التشغيل في وحدة التحكم أو انسخ سطر الأوامر والصقه.

البحث من خلال وحدة تحكم Amazon EC2

وحدة التحكم EC2 هي طريقة رسومية للتصنيف من خلال AMIs واختيار واحد لإطلاق. لإطلاق صورة رسمية على Ubuntu هنا ، اتبع الخطوات أدناه.

  • حدد المنطقة التي تريدها في الجزء العلوي الأيمن ، أسفل "التنقل" مثال: "Us Us (فيرجينيا)"
  • اضغط "AMIs" فعل ليس انقر فوق "بدء التشغيل" [انظر الملاحظة أدناه]
  • لـ "عرض" ، حدد "كل الصور"
  • قلل النتائج إلى Ubuntu Stable Release images بكتابة الصور ubuntu-images /

    يجب توسيع حقل "اسم AMI" على أوسع نطاق ممكن (ربما يتقلص الآخرين).

  • حدد النتائج بإصدار محدد من خلال إلحاق ". *".

    على سبيل المثال: ubuntu-images /.* 10.04

  • قصر النتائج على قوس معين من خلال إلحاق ". * * i386" أو ". * amd64"

    ملحوظة: إذا كنت تريد تشغيل m1.small أو c1.medium ، فأنت بحاجة إلى 'i386'. إذا كنت تريد تشغيل t1.micro ، فستحتاج إلى تحديد صورة "ebs".

  • فرز النتائج حسب اسم AMI وإجراء الاختيار

    بالفرز حسب اسم AMI ، يمكنك بسهولة رؤية أحدث AMI لمجموعة معينة. ينتهي كل AMI برقم بالتنسيق YYYYMMDD (السنة ، الشهر ، اليوم). تريد أحدث واحد.

  • تحقق من المالك هو 099720109477!

    يمكن لأي مستخدم تسجيل AMI تحت أي اسم. لا شيء يمنع مستخدم ضار من تسجيل AMI التي تطابق البحث أعلاه. لذا ، لكي تكون آمنًا ، يجب عليك التحقق من أن مالك ami هو '099720109477".

  • إذا لم يكن "المالك" عمودًا لك ، فانقر فوق "إظهار / إخفاء" في أعلى اليمين وحدد "المالك" ليتم عرضه.
  • انقر على اسم AMI ، ثم انقر فوق "تشغيل"

ملاحظات

  • الوصول إلى HTTPS: من الخيارات أعلاه ، في الوقت الحالي https://cloud-images.ubuntu.com/server/releases/ هو الوحيد الذي يوفر البيانات عبر https. قد يكون هذا مهمًا بالنسبة لك إذا كنت قلقًا بشأن هجمات "رجل في الشرق" المحتملة عند العثور على معرف AMI. لقد طلبت أحمد [kim0 في irc] لدعم الوصول إلى HTTPS https://cloud.ubuntu.com/ami .

  • مربع الحوار "بدء تشغيل" وحدة تحكم ويب: لم أر أي طريقة في مربع الحوار "بدء التشغيل" لرؤية معرف المالك. لأنه إذا كان هذا ، فأقترح عدم استخدام مربع الحوار هذا للعثور على "Community AMIs". ببساطة لا توجد طريقة يمكنك معرفة موثوقة من مالك الصورة من داخل وحدة التحكم. بالنسبة للمستخدمين المتقدمين ، سأقوم بالتدوين في وقت ما قريب على طريقة للعثور على AMIs برمجيًا [تلميح].

مصدر


21
2017-07-18 14:53



هل يمكن أن يرجى تحديد الفرق بين hvm-instance و hvm-ssd ؟ أخشى أن "المثيل" يعني "paravirtual" ، ولكن لست متأكدًا ، ولا يمكنني العثور على معلومات عنه. أيضا ، يمكن أن يكون من المفيد أن نلاحظ ذلك https://cloud-images.ubuntu.com/locator/ عرض الفلاتر ... في أسفل الصفحة - Balmipour


نسخة جديدة ومحسنة.

# 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

يمسك أساسا البيانات الخام المستخدمة لصفحة البحث عن أمي في أوبونتو ، ويستخدم jq لتحليل الصف الذي أريده ثم grep لسحب القيمة. أسرع بكثير من الإصدار القديم.


-- نسخة أصلية

هنا مثال آخر. لقد كتبت هذا للتوصل إلى أحدث معرف AMI مضمون. ويستخدم أداة أوس 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 أجزاء. الجزء الأول يحصل على جميع AMIs ل ubuntu مضمونة التي تفي بالمعايير المختلفة (ebs ، x86_64 ، ونمط الاسم). انها تسحب الاسم والنوع به. يتم تنسيق الأسماء بحيث يتم فرزها حسب التاريخ بحيث تكون الأخيرة هي الأحدث. يتم بعد ذلك تعيين هذا الاسم للمتغير "الاسم".

يستخدم الجزء الثاني هذا الاسم لطلب معرف AMI لـ AMI بهذا الاسم. يوزع المعرف فقط ويعينه إلى "ami_id".


11
2017-10-08 05:18



هل يمكن أن توضح ما يفعله هذا؟ - Kaz Wolfe
أضاف الشرح على الجواب. - John Eikenberry
يجب أن يحقق ذلك شيئًا مشابهًا ، ولكن باستخدام تعبير استعلام JMESPath: 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


باستخدام 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

4
2018-06-11 10:59





اعتقد انه سيكون من المفيد لشرح كيفية القيام بذلك باستخدام Ansible باستخدام ec2_ami_find وحدة.

في وقت الكتابة (2017-06-07) في المنطقة ap-southeast-2 ، سوف تقترح AWS هذه الصور UTBTU LTS إذا قمت بتشغيل نسخة EC2 يدويًا من وحدة التحكم:

  • Ubuntu Server 16.04 LTS (HVM)، SSD Volume Type - AMI-96666ff5
  • Ubuntu Server 14.04 LTS (HVM)، SSD Volume Type - AMI-807876e3

هذا يتماشى مع توصياتهم استخدام الظاهرية HVM و EBS وحدات التخزين SSD المدعومة.

للحصول على أفضل أداء ، نوصي باستخدام الجيل الحالي   أنواع المثيلات و HVM AMIs عند تشغيل مثيلاتك.

للحصول على نفس AMIs التي يوصي بها 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 التي أرجعها دليل التشغيل ، فيمكنك رؤية AWS لا تنصح باستخدام أحدث صورة متوفرة ، بل بالأحرى أحدثها أو الثانية. أنا لا أعرف ما هي المعايير / الكشف عن هويتها التي يستخدمونها هنا.


1
2018-06-07 03:37





يمكنك استخدام https://cloud-images.ubuntu.com/locator/ec2/ والتي تقدم مقارنة شاملة تعتمد على الإصدار وتاريخ الإصدار وما إلى ذلك.

ابحث عن الإصدار والمنطقة التي تريدها وفرزها استنادًا إلى تاريخ الإصدار للحصول على أحدث إصدار.


1
2017-10-22 08:46





هناك قائمة شاملة من AMIS الرسمية المتاحة على أوبونتو بوابة سحابة. يمكنك العثور على موارد إضافية فيما يتعلق بإصدارات EC2 AMI الرسمية من Canonical في تعليمات Ubuntu: دليل بدء EC2 ودليل الخام من جميع AMIs الصادرة عن Canonical في Ubuntu EC2 Images


0
2017-07-18 14:44