Managing EC2 Instances Using Boto3

ကျွန်တော်ဒီနေ့မှာတော့ Boto3 ကိုသုံးပြီး EC2 instances တွေကို manage လုပ်တဲ့အကြောင်းရှင်းပြပါမယ်။ Boto3 ဆိုတာ AWS service တွေအတွက်အသုံးပြုမယ့် Python SDK ဖြစ်ပါတယ်။

👉 Install Boto3

Boto3 ကို install လုပ်ဖို့အတွက် အောက်ပါအတိုင်း ပြုလုပ်နိုင်ပါတယ်။

$ pip3 install boto3

👉 Configure AWS Credentials

ပြီးသွားရင်တော့ aws configure နဲ့ aws access key နဲ့ secret key တွေကို သတ်မှတ်ပေးရပါမယ်။

$ aws configure

အဲ့လိုမသတ်မှတ်ပေးဖူးဆိုရင် boto3 session မှာ access key နဲ့ secret key ကို parameter တွေအဖြစ်ကြေညာပေးရပါမယ်။

import boto3

session = boto3.Session(
    aws_access_key_id=ACCESS_KEY,
    aws_secret_access_key=SECRET_KEY,
    aws_session_token=SESSION_TOKEN
)

👉 Creating EC2 instance

ပထမဆုံးအနေနဲ့ EC2 instance တွေကို create လုပ်ဖို့အတွက် EC2 resource ထဲက create_instances() method ကိုသုံးပါမယ်။

#!/usr/bin/env python3

import boto3

EC2_RESOURCE = boto3.resource('ec2', region_name='us-east-1')

instances = EC2_RESOURCE.create_instances(
    MinCount = 1,
    MaxCount = 2,
    ImageId='ami-09d56f8956ab235b3',
    InstanceType='t2.micro',
    SecurityGroupIds=[
        'sg-0f1df0f49a700cd6a',
    ],
    SubnetId='subnet-06a1d2785fbf61317',
    TagSpecifications=[
        {
            'ResourceType': 'instance',
            'Tags': [
                {
                    'Key': 'Name',
                    'Value': 'ec2-boto3'
                },
            ]
        },
    ]
)

for instance in instances:
    print(f'EC2 instance "{instance.id}" has been launched')

    instance.wait_until_running()

create_instances() method ထဲမှာ သုံးထားတဲ့ parameters တွေကိုရှင်းပြပါမယ်။

  • MinCount - launch လုပ်မယ့် အနည်းဆုံး EC2 ပမာဏဖြစ်ပါတယ်။
  • MaxCount - launch လုပ်မယ့် အများဆုံး EC2 ပမာဏဖြစ်ပါတယ်။
  • ImageId - ကိုယ်သုံးမယ့် AMI ID ဖြစ်ပါတယ်။
  • SubentId - EC2 instance ထားမယ့် subnet ရဲ့ ID ဖြစ်ပါတယ်။
  • InstanceType - Instance ရဲ့ type အမျိုးအစားဖြစ်ပါတယ်။
  • SecurityGroupIds = Instance အတွက် လိုအပ်တဲ့ security group တွေချိတ်ပေးဖို့ပါ။

👉 EC2 Waiters

ဒီနေရာမှာ EC2 waiter တွေထဲကတစ်ခုဖြစ်တဲ့ wait_until_running() ကိုသုံးထားပါတယ်။ ဆိုလိုရင်းကတော့ instance တစ်ခု running မဖြစ်မခြင်း waiting လုပ်နေမှာပါ။ ပြီးသွားမှ နောက် instance တစ်ခုကို loop ကနေ create ဆက်လုပ်သွားမယ်လို့ပြောတာပါ။

အားလုံးပြီးသွားရင်တော့ code ကို run လိုက်ရင် အောက်ကအတိုင်း instance (၂)ခု ရလာပါလိမ့်မယ်။

% python3 6_ec2_create.py

EC2 instance "i-0f3465727b9b0f3e8" has been launched
EC2 instance "i-06f0dd0e1ade9fb79" has been launched

👉 Listing EC2 Instances

EC2 instances တွေကို create ပြီးရင်တော့ list လုပ်ဖို့အတွက် အောက်က code ကိုလေ့လာကြည့်ရအောင်။

#!/usr/bin/env python3

import boto3

AWS_REGION = "us-east-1"
EC2_RESOURCE = boto3.resource('ec2', region_name=AWS_REGION)

instances = EC2_RESOURCE.instances.all()

for instance in instances:
    print(f'EC2 Instance {instance.id}" Information')
    print('*'*60)
    print(f'Instance state: {instance.state["Name"]}')
    print(f'Instance type: "{instance.instance_type}')
    print('*'*60)

EC2 instance တွေကို list လုပ်ဖို့အတွက် EC2 resource ရဲ့ instance collection ထဲက all() method ကိုသုံးပါမယ်။ ပြီးသွားရင်တော့ instance တစ်ခုချင်းစီရဲ့ attributes တွေဖြစ်တဲ့ id, instance type စတာ တွေကို print ထုတ်လိုက်ပါတယ်။

EC2 Instance i-06f0dd0e1ade9fb79" Information
**********************************************
Instance state: running
Instance type: "t2.micro
**********************************************
EC2 Instance i-0f3465727b9b0f3e8" Information
**********************************************
Instance state: running
Instance type: "t2.micro
**********************************************

အဆုံးထိဖတ်ရှူပေးကြသူများအားလုံးကျေးဇူးတင်ပါတယ်။ နောက်လည်း ဒီလို sharing လေးတွေရေးသွားပါဦးမယ်။

👉 Reference

သင်ဆရာ မြင်ဆရာ ကြားဆရာများကိုလေးစားလျှက် 🙏🙏🙏

သောင်းထိုက်ဦး (UIT)



Recent Posts