Help us understand the problem. What is going on with this article?

boto3でaws cliを扱うための初期設定から稼働確認まで

はじめに

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へご連絡ください!

私のtwitterアカウントはこちら

参考

@kimihiro_nさん
Python boto3 でAWSを自在に操ろう ~入門編~

@n0bisukeさん
AWS CLIのインストールから初期設定メモ

@kzykmyzwさん
AWSアカウントでのIAMユーザの作成

上記の記事を参考にさせていただきました。
ありがとうございました。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした