AWSをPython から操作するための「Boto3」をインストールしてみます。(Windows10)
Boto3は、AWS SDK for Pythonの別称であり、AWS (Amazon Web Services) を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したいモジュール(ライブラリ)名とは別のファイル名を付けて保存し、プログラムを実行するようにした方が良いです。
コメント