AWSをPython から操作するための「Boto3」をインストールする(Windows10)

AWSをPython から操作するための「Boto3」をインストールしてみます。(Windows10)

Boto3は、AWS SDK for Pythonの別称であり、AWS (Amazon Web Services) をPythonから操作するためのライブラリとなります。

■Python

Pythonバージョン

今回のPythonのバージョンは、「3.8.2」を使用しています。

■インストール

コマンドプロンプトから、pipを経由して、インストールを行ってみます。

pip install boto3

上記のコマンドを入力しENTERキーを押します。

ENTERキーを押すと、インストールが開始されます。

Successfully installed boto3-1.14.1 botocore-1.17.1 docutils-0.15.2 jmespath-0.10.0 s3transfer-0.3.3

「Successfully installed」と表示されます。これでインストールは完了となります。

すでにAWSに登録し、作成されたIAMユーザーが存在する場合のアクセスキーの作成

「Boto3」をインストールして、Python3を動かすためには「IAMユーザー」の作成が必要なりますが、すでにAWSに登録し、作成されたIAMユーザーが存在する場合に、アクセスキーとシークレットキーが必要になります。その設定について解説します。

まず、AWSの「Identity and Access Management (IAM)」の画面を表示させます。

表示させた後、左側メニューの「ユーザー」をクリックし、「ユーザー」のページが表示されますので、すでに作成された「IAMユーザー」名をクリックします。

クリックすると、すでに作成された「IAMユーザー」の概要ページが表示されますので、「認証情報」の表示をクリックします。

クリックすると、「サインイン認証情報」が表示されますので、「アクセスキー」から「アクセスキーの作成」ボタンをクリックします。

クリックすると、「アクセスキーの作成」のウインドウが表示されます、「アクセスキーID」と「シークレットアクセスキー」が作成されましたので、この情報を保存します。「シークレットアクセスキー」は「表示」をクリックすると、キーの情報が表示されます。

■AWSCLIの認証情報の設定

情報を保存後、AWSCLIのインストールが完了した後に、コマンドプロンプトを表示させます。

aws configure

上記のコマンドを入力し、ENTERキーを押します。

AWS Access Key ID [None]: アクセスキーIDを入力
AWS Secret Access Key [None]: シークレットアクセスキーを入力
Default region name [None]: ap-northeast-1(日本国内であればこのように入力するが、貴方の最寄りのリージョンとなり、どのリージョンでも構わない。)
Default output format [None]:"text","JSON","table"のどれかを入力。なしでもOK。)

ENTERキーを押すと、上記の情報を入力します。

最後に入力後、ENTERキーを押すと、認証情報の設定が完了となります。

aws sts get-caller-identity

上記のコマンドを入力すると、

認証情報の確認ができます。「”Arn”: “arn:aws:iam::○○○○○○○○○○○○:user/○○”」となっている部分は、

AWSの「Identity and Access Management (IAM)」の「ユーザー」の「IAMユーザー」名の概要(詳細)に表示されている「ユーザーの ARN」が表示されていれば問題ありません。

■Boto3を使って、VPCを作成してみる

Boto3のインストール、AWSCLIの認証情報の設定が完了したので、Boto3を介して、AWSでVPCを作成してみます。

■コード

import boto3

client = boto3.client('ec2')
response = client.create_vpc(
CidrBlock='10.0.0.0/16',
)

print(response)

コードは、こちらのサイトを参考にしています。

■実行

上記のコードを、「vps-test.py」というファイル名で保存し、コマンドプロンプトから実行してみます。

{‘Vpc’: {‘CidrBlock’: ‘10.0.0.0/16’, ‘DhcpOptionsId’: ‘dopt-ebd9fe8c’, ‘State’: ‘pending’, ‘VpcId’: ‘vpc-○○○○○○○○○’, ‘OwnerId’: ‘○○○’, ‘InstanceTenancy’: ‘default’, ‘Ipv6CidrBlockAssociationSet’: [], ‘CidrBlockAssociationSet’: [{‘AssociationId’: ‘vpc-cidr-assoc-○○○○○○’, ‘CidrBlock’: ‘10.0.0.0/16’, ‘CidrBlockState’: {‘State’: ‘associated’}}], ‘IsDefault’: False}, ‘ResponseMetadata’: {‘RequestId’: ‘○○○-○○○-○○○-○○○-○○○’, ‘HTTPStatusCode’: 200, ‘HTTPHeaders’: {‘x-amzn-requestid’: ‘○○○-○○○-○○○-○○○-○○○’, ‘content-type’: ‘text/xml;charset=UTF-8’, ‘content-length’: ‘905’, ‘date’: ‘Fri, 12 Jun 2020 02:00:04 GMT’, ‘server’: ‘AmazonEC2’}, ‘RetryAttempts’: 0}}

実行してみると、上記の結果が出力されました。

AWSの「VPC Management Console」を確認してみると、IPv4 CIDRが「10.0.0.0/16」のVPCが作成されていることが確認できました。

■注意点

今回、「vps-test.py」というファイル名で保存し、コマンドプロンプトから実行してみましたが、「boto3.py」というファイル名で、コマンドプロンプトから実行すると、

Traceback (most recent call last):
File “C:\Users\user\boto3.py”, line 1, in <module>
import boto3
File “C:\Users\user\boto3.py”, line 3, in <module>
client = boto3.client(‘ec2’)
AttributeError: partially initialized module ‘boto3’ has no attribute ‘client’ (most likely due to a circular import)

上記のAttributeErrorが発生する。Boto3のライブラリが原因ではないかと、アンインストールなどを行ってみるが原因は解決できず、調べてみると、importしたいモジュール(ライブラリ)と同じ名前のファイル名で保存すると、エラーが発生します。(参考:https://qiita.com/7shi/items/9c15e2aca88bd40eed2a

そのため、プログラムを実行する場合は、importしたいモジュール(ライブラリ)名とは別のファイル名を付けて保存し、プログラムを実行するようにした方が良いです。

コメント

タイトルとURLをコピーしました