Pythonプログラムを使用してAWS EC2のインスタンスを起動・停止する方法

AWS EC2は、クラウド上で仮想サーバーを提供するサービスです。EC2は、複数のインスタンスを起動することができますが、手動で行うと手間がかかります。そこで、Pythonプログラムを使用してAWS EC2のインスタンスを起動・停止する方法を説明します。

ウェブ開発の人気オンラインコース

AWSアクセスキーの設定

PythonからAWSにアクセスするには、AWSアクセスキーとシークレットアクセスキーが必要です。これらは、AWSのIAMユーザーを作成することで取得できます。取得したアクセスキーとシークレットアクセスキーを、以下のように環境変数に設定します。

import os

os.environ['AWS_ACCESS_KEY_ID'] = 'アクセスキー'
os.environ['AWS_SECRET_ACCESS_KEY'] = 'シークレットアクセスキー'

boto3モジュールのインストール

PythonからAWSにアクセスするために、boto3というモジュールを使用します。boto3は、PythonからAWSの様々なサービスにアクセスするためのAPIを提供します。boto3をインストールするには、以下のコマンドを実行します。

$ pip install boto3

EC2インスタンスの起動

EC2インスタンスを起動するには、boto3のec2クライアントを使用します。以下のコードは、EC2インスタンスを起動する例です。

import boto3

ec2 = boto3.client('ec2', region_name='リージョン名')

response = ec2.run_instances(
    ImageId='イメージID',
    InstanceType='インスタンスタイプ',
    MinCount=1,
    MaxCount=1,
    KeyName='キーペア名'
)

instance_id = response['Instances'][0]['InstanceId']

ImageIdには、起動するインスタンスのイメージIDを指定します。InstanceTypeには、インスタンスのサイズを指定します。MinCountMaxCountには、起動するインスタンス数を指定します。KeyNameには、EC2インスタンスSSHでログインするために必要なキーペア名を指定します。

EC2インスタンスの停止

EC2インスタンスを停止するには、stop_instancesメソッドを使用します。以下のコードは、EC2インスタンスを停止する例です。

import boto3

ec2 = boto3.client('ec2', region_name='リージョン名')

response = ec2.stop_instances(
    InstanceIds=[
        'インスタンスID',
    ],
    Force=True
)

InstanceIdsには、停止するインスタンスのIDを指定します。ForceにTrueを指定すると、停止処理を強制的に実行します。このパラメータを指定しない場合、インスタンスが正常に停止できない場合があります。

まとめ

以上のコードを実行することで、PythonプログラムからEC2インスタンスの起動・停止を行うことができます。ただし、AWSアクセスキーとシークレットアクセスキーを含む情報をプログラム内に直接書くことは推奨されません。AWSのセキュリティを保つために、IAMユーザーに必要な権限だけを付与し、そのIAMユーザーのアクセスキーとシークレットアクセスキーを環境変数に設定するなど、適切な管理方法を取ることが重要です。

click.linksynergy.com

click.linksynergy.com