PythonでS3を操作するために

最終更新日:2026年8月12日

この記事でわかること

・はじめに

項目 AWS Microsoft Azure Google Cloud
世界シェア 約33%(首位) 約22% 約11%
強み サービス数・実績 Microsoft製品連携 データ分析・AI
無料枠 12ヶ月+常時無料 12ヶ月無料 常時無料枠あり
主な資格 CLF / SAA / SAP AZ-900 / AZ-104 ACE / PCA

AWSにはPythonで操作するためのライブラリが用意されています。それが「Boto3」です。
「Boto3」で操作可能なサービスは多岐にわたります。リファレンスを見た感じ、ほとんどのサ-ビスに対応していました。
今回は「Boto3」の導入を進めるにあたり、確認したことやユーザーガイドを読んでわかったことをメモしていきました。

【要注意】本記事は執筆当時(Python 2系・AWS CLI v1世代)の環境をもとにした内容です。
現在はPython 2は既にサポートが終了しており、Python 3系の利用が前提となります。AWS CLIもv2が主流です。また、EC2インスタンス上でBoto3を利用する場合は、本記事のようにアクセスキーを直接設定するのではなく、EC2インスタンスにIAMロールをアタッチする方法がAWSの推奨するベストプラクティスです(アクセスキーの管理・漏えいリスクを避けられるため)。これから環境構築する場合は、Python 3・最新のAWS CLI・可能であればIAMロールでの利用を検討してください。

・諸々の確認とインストール

最初にPythonやライブラリーなどのバージョン確認をしました。
3系を入れるか迷いましたが、取り急ぎ必要ではなさそうなので、今回は確認しませんでした。。
まず、以下を確認しました。

・Python

Pythonのバージョンを確認します。
▼コマンド
$ python –version
▼実行結果
Python 2.7.16

・pip

pipのバージョンを確認します。(そもそも入ってるかも含めて)
▼コマンド
$ pip –version
▼実行結果
-bash: pip: command not found
なかったので、curlでインストールスクリプトをダウンロードします。
▼コマンド
$ curl -O https://bootstrap.pypa.io/get-pip.py
オプション -O (英語大文字のO)で、リモートホストと同じ名前でファイルがダウンロードされ、カレントディレクトリに保存されます。
▼コマンド
$ python get-pip.py –user
Pythonスクリプトを叩いて、pipの最新バージョンとその他の依存関係もインストールします。
–userを追記すると、pipはパス ~/.local/bin にインストールされます。

・AWS CLI

以下のコマンドでAWS CLIのバージョンを確認します。
▼コマンド
$ aws –version
▼実行結果
aws-cli/1.16.300 Python/2.7.16 Linux/4.14.173-137.229.amzn2.x86_64 botocore/1.13.36
パスは通ってる模様ですが、2系での最新か不明だったので、以下を実行しました。
▼コマンド
$ pip install awscli –upgrade –user
▼実行結果
~(略)~
Successfully installed awscli-1.18.39 botocore-1.15.39 s3transfer-0.3.3
pip listで確認したところ、インストールされておりました。

・Boto3

次に、「Boto3」をインストールしました。
今回は「pip install boto3」としましたが、condaコマンドでもできます。
外に出れる環境だと、これで最新バージョンが依存関係も含めてインストールできるのでとても便利です。

・セキュリティ認証情報の登録

アクセスキーやリージョンなどの設定も必要です。

▼コマンド
$ aws configure
▼実行結果
AWS Access Key ID [None]:
上記のように入力待ちになるので、自身のEC2インスタンスのアクセスキー、シークレットアクセスキー、リージョン、出力ファイル形式を入力しましょう。
設定した内容は、パス ~/.aws/ に「credentials」、「config」が作成されるので確認できます。作成後に編集も可能ですので間違えても大丈夫です。

・実行してみる

Boto3のユーザーガイドにリファレンスやお手軽サンプルコードを用意してくれているので、試してみました。
▼Using_boto3.py
———————————————————————————-

import boto3

# S3リソースを作成します。これでS3サービスへのリクエストと応答が可能なります。
s3 = boto3.resource(‘s3’)

# S3リソースのバケットを取得し、名前を出力します。
for bucket in s3.buckets.all():
print(bucket.name)

———————————————————————————-
実行したら、S3で作成したバケットの名前がきちんと出力され、問題ないようです。

押さえておきたいポイント

  • Boto3はAWSの各サービスをPythonから操作するための公式SDKで、S3以外にもEC2・Lambda・DynamoDBなど幅広いサービスに対応している。
  • ローカル環境からBoto3を使う場合はaws configureでアクセスキーを設定する方法があるが、EC2上で使う場合はIAMロールをインスタンスにアタッチする方が安全で管理も楽になる。
  • Python 2はサポートが終了しているため、これから環境構築する場合はPython 3系・最新のAWS CLIを前提に進める。

よくある質問

Q. Boto3とAWS CLIの違いは何ですか?

AWS CLIはターミナルからコマンドでAWSサービスを操作するためのツールで、Boto3はPythonのプログラムコードからAWSサービスを操作するためのSDK(ライブラリ)です。スクリプトや自動化処理に組み込みたい場合はBoto3、手軽にコマンド操作したい場合はAWS CLIが向いています。

Q. アクセスキーを設定せずにBoto3を使う方法はありますか?

EC2インスタンス上で実行する場合は、インスタンスにIAMロールをアタッチすることでアクセスキーなしでBoto3から認証情報を自動取得できます。ローカル環境の場合も、長期的なアクセスキーを直接扱わない認証方式を利用できるケースがあります。

Q. Boto3で操作できるのはS3だけですか?

いいえ。EC2、Lambda、DynamoDB、RDSなど、AWSが提供するほとんどのサービスをBoto3から操作できます。サービスごとにリソース/クライアントのインターフェースが用意されているため、公式ドキュメントのリファレンスを確認しながら利用するとよいでしょう。

・おわりに

特にハマることもなく無事準備完了しました。
注意としては、「セキュリティ認証情報」あたりでしょうか。管理しっかりしないと、漏えいして大変なことになります。
これでPythonを利用してAWS S3を操作できそうです。リファレンスやガイドにサンプルがあり、色々できます。
ご自身にあったサービスを色々探し、試してみるのも面白いと思うので是非、試してみてください。

▼ アクロビジョンについて

👔

一緒に働きましょう

一人ひとりのキャリアに向き合い、
活躍できる現場をご紹介します。

採用サイトを見る →
💻

システム開発のご依頼・ご相談

コンサルティングから運用保守まで、
ワンストップで対応します。

まずはお気軽にご相談ください →

前の記事

Amazon QLDBとは

次の記事

AWS IoTボタンってどんなの?