この記事ではpython3とboto3を入れて簡単なサンプルコードを動かすところまで行います。
boto3とは
AWS SDK for Python (Boto3) を使用すると、AWS の使用を迅速に開始できます。Boto3 を使用することで、Python のアプリケーション、ライブラリ、スクリプトを AWS の各種サービス(Amazon S3、Amazon EC2、Amazon DynamoDB など)と容易に統合できます。
awsのサービスを簡単にPythonからイジれるようにできるってことです。
導入手順
導入手順。まずはboto3の前にPython3を入れます。
何が入るのかを確認。
# yum list available | grep "python" | grep "libs" audit-libs-python.x86_64 2.7.6-3.amzn2 amzn2-core libselinux-python.x86_64 2.5-12.amzn2.0.1 amzn2-core libsemanage-python.x86_64 2.5-8.amzn2 amzn2-core lvm2-python-libs.x86_64 7:2.02.177-4.amzn2 amzn2-core python-libs.i686 2.7.14-58.amzn2.0.3 amzn2-core python-libsss_nss_idmap.x86_64 1.15.2-50.amzn2.8 amzn2-core python3-libs.i686 3.7.0-0.20.rc1.amzn2.0.1 amzn2-core
そのまま入れると2.7が入るようなので、3系を入れるため、python3を入れましょう。
# yum install python3 ~~~~~~~~~~~~~~~~~~~~~ Total download size: 11 M Installed size: 51 M Is this ok [y/d/N]: y Downloading packages: (1/4): python3-libs-3.7.0-0.20.rc1.amzn2.0.1.x86_64.rpm | 8.0 MB 00:00:00 (2/4): python3-pip-9.0.3-1.amzn2.0.1.noarch.rpm | 1.9 MB 00:00:00 (3/4): python3-setuptools-38.4.0-3.amzn2.0.6.noarch.rpm | 617 kB 00:00:00 (4/4): python3-3.7.0-0.20.rc1.amzn2.0.1.x86_64.rpm | 64 kB 00:00:02 -
pipも入ったので、こちらからboto3を入れてあげます。
# pip3 install boto3
無事入ったら、試しにboto3が動くか確認してみます。
今回はboto3の公式ドキュメントからS3のバケット一覧取得を動かしてみます。
Creating and Using Amazon S3 Buckets
test.py
import boto3 # Create an S3 client s3 = boto3.client('s3') # Call S3 to list current buckets response = s3.list_buckets() # Get a list of all bucket names from the response buckets = [bucket['Name'] for bucket in response['Buckets']] # Print out the bucket list print("Bucket List: %s" % buckets)
公式まんまです。こちらを動かす場合には、アクセスキーとシークレットアクセスキー、リージョンの指定が必要です。もし、記入がない場合には、以下のようなエラーが出ます。
botocore.exceptions.NoCredentialsError: Unable to locate credentials
ソースコードの中に書くこともできますが、Quickstartの指示どおりにファイルに記憶させておきましょう。
# vim ~/.aws/config ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [default] aws_access_key_id = hogehogehogehoge aws_secret_access_key =hogehogehogehoge region=ap-northeast-1
各キーに関してはIAMでユーザーを作成して取得して下さい。
リージョンはメインで使うのが東京のためap-northeast-1を指定しました。
これで実行準備が整いました。実際にS3のバケットリストを取得してみましょう。
S3のGUIは画像のような表示で、2つのバケットを作成しました。
この環境で実行した結果がこちら。
# python3 test.py Bucket List: ['test-reko-test', 'test-s3-hacknote-20180910']
バケット名の取得が問題なくできていることがわかります。
もし、ユーザーに必要な権限(ロール)がない場合には以下のようなエラーになります
botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied
ListBucketsの権限が無く、アクセス拒否をされています。その場合には適切なユーザーのキーに変えるか、ユーザーに権限を正しく付与し直してください。
AWS CLIでできる操作は殆どができると思いますので、Pythonでいろいろと自動的に処理を走らせたい場合にはboto3を使うことになると思います。
awsを使う場合には非常に便利ですので、導入してみてください。