EC2インスタンスをpython3で立ち上げる【AWS】【Boto 3】

この記事でやること

python3からBoto 3を使ってAWS上にEC2インスタンスを立ち上げ、その確認まで行います

事前準備

必要なものをインストールします。

# yum install python3

pip3が使えるようになるので、boto3を入れちゃいましょう。

# pip3 install boto3

Boto 3がAWSにログインするときに必要な情報を以下のファイルに書き込んでおきます。

# mkdir ~/.aws
# vi ~/.aws/credentials

[default]
aws_access_key_id = hogehogehogehoge
aws_secret_access_key =hogehogehogehoge
region=ap-northeast-1

.awsというディレクトリは「awscli」をpip3から導入しているとすでに作られているので、それを編集すればよいです。 入れてない人は自力でディレクトリを作る必要があります。

■セキュリティガードIDの発行と、キーペアのダウンロード

「初心者でも簡単に出来るEC2インスタンスの立ち上げ方法」 https:hacknote.jp/archives/39446/

などをみながら、事前に セキュリティガードID「sg-xxxxxxxxxxx」 キーペア「xxxxxxx」 を作っておくと楽です。

設定ファイルの記述

実行用の.pyファイルを作ります。

mkinstance.py

import boto3


ec2 = boto3.resource('ec2')

# インスタンス作成
instance = ec2.create_instances(

        ImageId="ami-xxxxxxxxxxxxxxx",
        MinCount=1,
        MaxCount=1,
        InstanceType="t2.micro",
        KeyName="xxxxxx",
        SecurityGroupIds=["sg-xxxxxxxxxxxxxxx"],
        TagSpecifications=[
        {
             'ResourceType': 'instance',
             'Tags': [
                      {
                    'Key': 'Name',
                    'Value': 'xxxxxxxxx'
                        },
                    ]
         },
    ],
)

ImageIdには、AMIというOSなどを含めた設定があります。Amazon Linux 2の場合は「ami-08847abae18baa040」となります。

‘Value’: ‘xxxxx’のところを編集すると、インスタンスの名前を変更できます。

インスタンスIdで管理するのは大変なので、名前をつけておいたほうがいいと思います。

KeyNameは作っておいた「キーペア」

SecurityGroupIdsは設定に合わせて発行される「セキュリティグループID」をいれます。

インスタンスの作成自体はこれでできますが、コマンドライン上だと変化がないので、 取得したインスタンスのIPアドレスを問い合わせて表示する、以下の部分を付け足しておくと、わかりやすいと思います。

# インスタンスの作成を確かめるため、IPを取得する。
# 作成したインスタンスのIDを取得
InstanceId = instance[0].instance_id

# PublicIPを取得するため、EC2インスタンスがrunnningになるまで待機
instance[0].wait_until_running()

#インスタンスの情報を取得
InstanceInfo = ec2.Instance(InstanceId)

#PublicIPのみを表示する。
print("インスタンスが作成できました。IPアドレスは")
print(InstanceInfo.public_ip_address)
print("です。")

AWSを開くと、インスタンスが作成されたことが確認できると思います。

参照

Boto3 Doc