Python: boto3を使用してAWSのEC2インスタンスを立ち上げる

まずは、最小限のオプションだけで起動してみます。
ec2.py

import boto3

ec2 = boto3.resource('ec2')
instance = ec2.create_instances(
    ImageId="ami-009d6802948d06e52",
    MinCount=1,
    MaxCount=1
)

print(instance)
python ec2.py 
[ec2.Instance(id=‘[インスタンスID]’)]

立ち上がったインスタンスタイプはm1.smallになります。デフォルトのインスタンスタイプがデフォルトでm1.smallになっているためです。
次は、t2.microを指定して起動します。

instance = ec2.create_instances(
    ImageId="ami-009d6802948d06e52",
    MinCount=1,
    MaxCount=1,
    InstanceType="t2.micro"
)

t2.microのインスタンスが立ち上がりました。
ただ、この状態だと、AWS マネジメントコンソールから「接続」を開くと以下のように表示されます。

インスタンスがキーペアに関連付けられていません。
このインスタンスがキーペアに関連付けられていません。キーペアがない場合、有効なユーザー名とパスワードの組み合わせを使用してこのインスタンスにログインする必要があります。

次は、キーペアを指定して起動します。

instance = ec2.create_instances(
    ImageId="ami-009d6802948d06e52",
    MinCount=1,
    MaxCount=1,
    InstanceType="t2.micro",
    KeyName="[キーペア]"
)

これで、ログインできるかと思いきや、以下のエラーが出力されます。

ssh -i "[pemファイル]" ec2-user@ドメイン名
ssh: connect to host [ドメイン名] port 22: Operation timed out

22番ポートが開放されていないようです。
次は、セキュリティグループIDを指定して起動します。

instance = ec2.create_instances(
    ImageId="ami-009d6802948d06e52",
    MinCount=1,
    MaxCount=1,
    InstanceType="t2.micro”,
    KeyName="[キーペア]",
    SecurityGroupIds=["[セキュリティグループID]"]
)

無事ログインできました。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です