2012-11-27 8 views
23

मैं एक ईसीएस वॉल्यूम से बूट होने वाला एक नया ईसी 2 इंस्टेंस लॉन्च करने के लिए बोटो/पायथन का उपयोग कर रहा हूं। जब मैं इंस्टेंस लॉन्च करता हूं, तो मैं बूटिंग ईबीएस वॉल्यूम के डिफ़ॉल्ट आकार को ओवरराइड करना चाहता हूं।ईबीएस के आकार को निर्दिष्ट करते हुए, बोटो के साथ ईसी 2 इंस्टेंस कैसे लॉन्च करें?

मुझे कोई Boto तरीकों या पैरामीटर है कि मेरे लांच कोड में फिट हो सकता है पाया:

ec2 = boto.connect_ec2(ACCESS_KEY, SECRET_KEY, region=region) 

reservation = ec2.run_instances(image_id=AMI_ID, 
           key_name=EC2_KEY_HANDLE, 
           instance_type=INSTANCE_TYPE, 
           security_groups = [ SECGROUP_HANDLE, ]) 

This web page दिखाता है कि कैसे कमांड लाइन उपकरण का उपयोग कर एक चल EC2-उदाहरण के EBS मात्रा का आकार बढ़ाने के लिए है, लेकिन मैं

उत्तर

36

आपको सबसे पहले एक ब्लॉक युक्ति मानचित्रण बनाने के लिए: d समय EC2 उदाहरण निर्दिष्ट किया जाता है पर Boto का उपयोग करना चाहते

dev_sda1 = boto.ec2.blockdevicemapping.EBSBlockDeviceType() 
dev_sda1.size = 50 # size in Gigabytes 
bdm = boto.ec2.blockdevicemapping.BlockDeviceMapping() 
bdm['/dev/sda1'] = dev_sda1 

वीं के बाद आप अपने run_instances कॉल में ब्लॉक युक्ति नक्शा दे सकते है:

reservation = ec2.run_instances(image_id=AMI_ID, 
           key_name=EC2_KEY_HANDLE, 
           instance_type=INSTANCE_TYPE, 
           security_groups = [ SECGROUP_HANDLE, ], 
           block_device_mappings = [bdm]) 

दुर्भाग्य से इस not really well documented है, लेकिन उदाहरण can be found in the source code

+2

यह काम करता है! धन्यवाद! मेरे जैसे अन्य नोबों के लिए एक चेतावनी: मैंने सोचा कि मैं चालाक हूं और '/ dev/sda1' को'/dev/xvda1' में बदल सकता हूं क्योंकि, उबंटू के उदाहरणों पर जो मैं चलाता हूं, वह बूट वॉल्यूम का नाम है 'df -h' कमांड। किसी भी कारण से, यह त्रुटि संदेश के साथ विफल रहा: "अमान्य डिवाइस नाम/dev/xvda1" तो मैंने इसे वापस '/ dev/sda1' में बदल दिया और सभी ठीक हो गए। –

+0

डिफ़ॉल्ट अमेज़ॅन लिनक्स 8 जीबी एमआईआई में अभी भी 8 जीबी आकार की विभाजन तालिका नहीं होगी जिसे पहली बार बूट करने के बाद विस्तारित किया जाना चाहिए? –

+0

आप मूल रूप से सही हैं। मुझे नहीं पता कि अमेज़ॅन एएमआई इस मामले में क्या करते हैं, उबंटू एएमआई स्वचालित रूप से पहले बूट पर विभाजन का विस्तार करते हैं। – j0nes

0

आप CloudFormation का भी उपयोग कर सकते हैं, जिसका उपयोग आपके पर्यावरण को दस्तावेज और स्वचालित करने के लिए किया जाता है। आपको कम से ESB परिभाषा के लिए टेम्पलेट की जाँच कर सकते हैं: https://s3.amazonaws.com/cloudformation-templates-us-east-1/EC2WithEBSSample.template

"Resources" : { 
    "Ec2Instance" : { 
     "Type" : "AWS::EC2::Instance", 
     "Properties" : { 
     "AvailabilityZone" : { "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "TestAz" ]}, 
     "SecurityGroups" : [ { "Ref" : "InstanceSecurityGroup" } ], 
     "KeyName" : { "Ref" : "KeyName" }, 
     "ImageId" : { "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "AMI" ]}, 
     "Volumes" : [ 
      { "VolumeId" : { "Ref" : "NewVolume" }, 
      "Device" : "/dev/sdk" 
      } 
     ] 
     } 
    }, 

    ... 

    "NewVolume" : { 
     "Type" : "AWS::EC2::Volume", 
     "Properties" : { 
     "Size" : "100", 
     "AvailabilityZone" : { "Fn::FindInMap" : [ "RegionMap", { "Ref" : "AWS::Region" }, "TestAz" ]} 
     } 
    } 

फिर आप Boto CloudFormation API उपयोग कर सकते हैं अपने वातावरण को तैनात करने की।

+0

धन्यवाद लड़का। बादल बहुत दिलचस्प लग रहा है, अंत में इस पर एक नज़र डालेंगे –

संबंधित मुद्दे