PythonでBoto3を用いてAmazon S3バケットにファイルをアップロードする

PythonでBoto3を用いてAmazon S3バケットにファイルをアップロードしてみます。前回、PythonでBoto3を用いて作成したAmazon S3バケットを一覧表示するという記事を公開しましたが、その続きとなります。

ちなみに、今回はBoto3を用います。このライブラリ・モジュールは、Pythonの標準ライブラリではありませんので、事前にインストールする必要があります。また、Boto3を用いる場合には、クレデンシャル(資格情報)などの設定が必要になりますので、こちらを参考にしていただければと思います。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■作成したAmazon S3バケットを確認する

PythonでBoto3を用いてAmazon S3バケットにファイルをアップロードしてみますが、その前に前回作成したAmazon S3バケットを確認してみます。

AWSにログインし、コンソール上の検索窓(サービス、特徴、ブログ、およびドキュメントなどを検索)から「S3」と検索。検索結果から「Amazon S3」を選択し、「Amazon S3」左側メニューから「バケット」をクリックしてみます。すると、前回作成したバケットである「kobayashi-test-cloud-a」を確認することができました。

■アップロードするファイルを用意する

格納後、Amazon S3バケットにアップロードするファイルを用意します。

今回は「C:\Users\user_\test(フォルダパス)」内に「test.txt」というテキストファイルを用意しました。

■Boto3を用いてAmazon S3バケットにファイルをアップロードする

ファイルを用意しましたので、Boto3を用いてAmazon S3バケットにファイルをアップロードするスクリプトを書いていきます。

■コード

import boto3

AWS_REGION ="us-east-2"

client = boto3.client('s3',region_name=AWS_REGION)

bucket_name = "kobayashi-test-cloud-a"

upload_file = r"C:\Users\user_\test\test.txt"

object_name = "test.txt"

client.upload_file(upload_file,bucket_name,object_name)

print("s3バケットへのアップロードが完了しました!")

importでboto3を呼び出します。その後、AWS_REGIONという変数を定義し、その中で、特定のAWSリージョンを指定し格納します。今回は「us-east-2」とします。Amazon S3サービスでの作業中に様々な例外を回避します。

格納後、clientという変数を定義し、その中でboto3.client()を用います。括弧内には第1の引数,パラメータとしてs3を渡します。その後、第2の引数,パラメータとして「region_name=AWS_REGION」を渡します。これでクライアントが作成されました。

クライアントを作成後、bucket_nameという変数を定義し、その中に前回作成したバケットの名前を格納します。

格納後、upload_fileという変数を定義し、その中に今回用意したファイルの名前とパスを格納します。さらにobject_nameという変数を定義し、その中にアップロード後の名前を格納します。今回は「test.txt」とします。

その後、client.upload_file()を用います。括弧内には第1の引数,パラメータとしてupload_file変数(ローカルファイルシステムのファイル名)を渡します。第2の引数,パラメータとしてbucket_name変数(S3バケットの名前)を渡します。第3の引数,パラメータとしてobject_name変数(アップロードされたファイルの名前)を渡します。これでAmazon S3バケットへファイルがアップロードされます。

最後にアップロードの完了という文字列をprint()で出力させます。

■実行・検証

このスクリプトを「s3_upload_test.py」という名前で、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトから実行してみます。

実行してみると「s3バケットへのアップロードが完了しました」と出力されました。これでファイルのアップロードは完了となります。

念の為に、アップロードが完了しているのか、AWSにログインし、コンソール上の検索窓(サービス、特徴、ブログ、およびドキュメントなどを検索)から「S3」と検索。検索結果から「Amazon S3」を選択し、「Amazon S3」左側メニューから「バケット」をクリック。さらに「バケット」内で表示されている作成したバケットの名前をクリックします。

クリックすると、「オブジェクト」が表示されます。この「オブジェクト」を確認すると、今回、アップロードするために用意した「test.txt」というテキストファイルが表示されています。これが表示されていれば、正常にアップロードは行われています。

コメント

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