0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【AWSをコードで操る】Python boto3でAWS EC2インスタンスを制御する

Last updated at Posted at 2019-08-26

tl;dr

MacでPythonをAWSを制御するためのプログラムの入門編です。
この記事ではEC2インスタンスをAWS EC2インスタンスを起動→停止します。

用意するもの・環境

  • macOS Mojave 10.14.6
  • Python 3.7(ANACONDA3)
  • PyCharm 2019.2
  • boto3

開発環境の構築は下記の記事を参考にしてください。

【これさえ読めばOK】MacでPythonを使って開発するための準備
https://qiita.com/ryoichiro001/items/35a232a430c41dd512fa

AWS

AWSとはAmazon Web Servicesの略です。

AWSは公式サイトが充実しているので、下記を一読することをおすすめします。

アマゾン ウェブ サービス(AWS)とは?
https://aws.amazon.com/jp/about-aws/

Boto3

AWSをPythonで制御するためのパッケージです。
AWSが公式に提供しています。

この記事ではEC2しか制御しませんが、他のAWSのサービスも制御することができます。

準備するもの

Boto3インストール

pipコマンドでインストールできます。


% pip install boto3

AWSのAPIキー

AWSを外部プログラムから制御するのにAPIキーを用意する必要があります。

APIキーの取得
https://aws.amazon.com/jp/developers/access-keys/

APIキーとは下記のものです。

  • アクセスキー ID (access_key_id)
  • シークレットアクセスキー (secret_access_key)

これは公開しないようにしてください。

APIキーがあるとだれでも操作ができてしまいます。

PythonでEC2インスタンスを起動→終了する

Boto3 で利用可能なサービスは下記の通りです。
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/index.html

今回はEC2インスタンスを制御するので「ec2」を指定します。

EC2インスタンスを起動する


ec2 = boto3.resource('ec2')

# インスタンス作成
AMI_ID = 'ami-0c3fd0f5d33134a76' # AMI-IDを指定
SUBNET_ID = 'subnet-xxx'  # サブネットIDを指定(事前に作成しておく)

instances = ec2.create_instances(ImageId=AMI_ID,
                                 MaxCount=1, MinCount=1,
                                 InstanceType='t2.micro',
                                 SubnetId=SUBNET_ID)

ec2.create_instancesで起動ができます。

ec2.create_instancesには記載のパラメータ以外に下記が必要です。

  • アクセスキー ID (access_key_id)
  • シークレットアクセスキー (secret_access_key)
  • 起動対象のリージョン

ですが、APIキーをプログラム中に記載するのは危険ですので、環境変数で管理した方が良いです。

サブネットは指定しない場合、デフォルトのものが使用されるらしいのですが、わたしの環境でうまくいきませんでした。
IDを指定すると問題なく起動しました。

環境変数

下記の環境変数に設定しておくと自動的にboto3が読み取ってくれます。

  • アクセスキー ID (access_key_id) → AWS_ACCESS_KEY_ID
  • シークレットアクセスキー (secret_access_key) → AWS_SECRET_ACCESS_KEY
  • 起動対象のリージョン → AWS_DEFAULT_REGION

PyCharmを使うと実行するときに環境変数を指定できるので便利です。

Run:Debug Configurations 2019-08-26 17-30-14.png

AMI-ID

AMIとはAmazon Machine Imageの略で、EC2インスタンスはAMIを元にして作成します。
AMIには固有のIDがついていて、AWSコンソールから取得できます。

AMI | EC2 Management Console 2019-08-26 17-49-19.png

インスタンスを終了する


# インスタンスを終了する
tm = instance.terminate()

instance.terminateで終了できます。

実際のプログラム

EC2を起動して終了するプログラムをGitHubに公開しています。
https://github.com/ryotak/boto3_sample

おすすめPython勉強法

Udemyの動画がおすすめです。

現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用 +アメリカのシリコンバレー流コードスタイル

参考サイト

Python boto3 でAWSを自在に操ろう ~入門編~
https://qiita.com/kimihiro_n/items/f3ce86472152b2676004

Pycharmからのスクリプト実行で環境変数PATHを指定する
http://y0m0r.hateblo.jp/entry/20131207/1386416022

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?