#はじめに
boto3とは aws のリソースを python で扱うためのライブラリである。
本記事は、boto3でaws cliを扱い、AWSのec2と接続するまでの一連の流れ(初期設定)を記す。
##boto3のインストール
boto3をpipでインストールする。
$ pip install boto3
##aws cliのインストール
boto3を使用するためにaws cliをインストールする。
###Macの場合
aws cliをhomebrewでインストール
$ brew install awscli
###Windowsの場合
AWSの公式サイトからインストーラーをダウンロードし、インストーラーを実行する。
###インストール確認
awsコマンドが使用できることを確認する。
$ aws --version
aws-cli/2.0.5 Python/3.7.5 Windows/10 botocore/2.0.0dev9
##IAMユーザーの作成
IAMユーザを作成し、EC2 full access の権限を与える。ただし、後に権限を絞る必要がある。
###作成方法
AWSアカウントでのIAMユーザの作成を参考に、IAMユーザーを作成する。
##アクセスキーの作成
アクセスキーを作成し、大切に保存する。
###作成方法
こちらにアクセスし、
1.”セキュリティ認証情報に進む”を選択
2."アクセスキー(アクセスキーIDとシークレットアクセスキー)"を選択
3."新しいアクセスキーの作成" を選択
ここでアクセスキーが作成される。この時[.csvのダウンロード]を押下し、アクセスキーの情報を保存しておく。
※ここを逃すとアクセスキーの情報を取得できなくなるため、注意!
誤ってアクセスキーの情報を保存し忘れた場合、一度アクセスキーを削除し、再度アクセスキーを作成する。
##PCにaws cliの初期設定を行う
$ aws configure
AWS Access Key ID [None]: AKI************
AWS Secret Access Key [None]: ***************
Default region name [None]: ap-northeast-1
Default output format [None]: json
aws configure
コマンドを入力し、上記のように先ほど取得したアクセスキー、リージョン、フォーマットを入力する。
ここまでできれば準備は完了!
##boto3が正しく動くか確認する
1.AWSコンソール上で任意のインスタンスを起動する。
2.ターミナルで以下のコマンドを実行し、起動中のインスタンスが取得できれば正常にboto3が動いている。
$ python
Python 3.8.2 (tags/v3.8.2:7b3ab59, Feb 25 2020, 23:03:10) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> import boto3
>>> ec2=boto3.resource('ec2')
>>>
>>> instances = ec2.instances.filter(
... Filters=[{'Name': 'instance-state-name', 'Values': ['running']}])
>>>
>>> for instance in instances:
... print(instance.id, instance.instance_type)
...
i-xxxxxxxxxxxxxxxxx t2.micro
無事インスタンスの情報が取得できたため、boto3は正常に稼働していることが確認できた。
##よくあるエラー
botocore.exceptions.ClientError: An error occurred (AuthFailure) when calling the DescribeInstances operation: AWS was not able to validate the provided access credentials
私は、このエラーに悩まされた。
原因はアクセスキーがうまく設定できていなかったから。
しかし、OS内の時間がずれている場合も接続できないらしい。。
念のためインスタンスにSSH接続し、サーバーのタイムゾーンを日本時間に変更した後、ローカルPCの時間も正しい日本時間となっていることを確認した。
タイムゾーンの変更はこちらの記事を参考にした。
#おわりに
最後までご覧いただきありがとうございます。
最近pythonを使用したAWS管理ツールを作成することになり、初めてboto3を触ることになりました。
私自身、boto3の導入で少しつまずいてしまったため、同じようなエラーに悩まされている方の一助になればと思い、本記事を執筆しました。
ご指摘・ご質問等ございましたらお気軽に@hiyoku0918へご連絡ください!
#参考
@kimihiro_nさん
・Python boto3 でAWSを自在に操ろう ~入門編~
@n0bisukeさん
・AWS CLIのインストールから初期設定メモ
@kzykmyzwさん
・AWSアカウントでのIAMユーザの作成
上記の記事を参考にさせていただきました。
ありがとうございました。