boto3を使ってS3にファイルのアップ&ダウンロード


botoは、PythonのAWS用ライブラリです。
今回は、Azure VMの環境でboto3を使ってS3のファイル操作をしてみました。

下準備

boto3のインストール

$sudo pip install boto3

VM環境にAWS CLI(Command Line Interface)をインストール

sudo pip install awscli

configureの設定

$ aws configure
AWS Access Key ID : IAMユーザのアクセスID
AWS Secret Access Key [None]: IAMユーザのシークレットアクセスキー
Default region name [None]: ap-northeast-1 #東京リージョン
Default output format [None]: json

ちなみに、確認方法はこちら

$ cat ~/.aws/credentials
[yuni]
aws_access_key_id = XXXXX
aws_secret_access_key = XXXXX
[default]
aws_access_key_id = XXXXX
aws_secret_access_key = XXXXX

ファイルのダウンロード

それではダウンロードです。

boto_test.py
# -*- coding: utf-8 -*-
import boto3

s3 = boto3.resource('s3') #S3オブジェクトを取得

bucket = s3.Bucket('バケット名')
bucket.download_file('S3のバケット以下のpath', '保存先のpath')

動かしてみます。
それっ

$ python3 boto_test.py
Traceback (most recent call last):
  File "boto_test.py", line 2, in <module>
    import boto3
ModuleNotFoundError: No module named 'boto3'

オロロ。。。
あれこれやって、これで解決。

$ pip install --upgrade --user boto3

再度実行して、無事ダウンロードすることができました。

ファイルのアップロード

アップロードも同様にできました。

boto_test.py
# -*- coding: utf-8 -*-
import boto3

s3 = boto3.resource('s3') #S3オブジェクトを取得

bucket = s3.Bucket('バケット名')
bucket.upload_file('UPするファイルのpath', '保存先S3のpath')

はい。
これだけだと、AWS CLIでいいっておはなし。