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
には、インスタンスのサイズを指定します。MinCount
とMaxCount
には、起動するインスタンス数を指定します。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ユーザーのアクセスキーとシークレットアクセスキーを環境変数に設定するなど、適切な管理方法を取ることが重要です。