PythonでBoto3を用いてAmazon S3バケットからファイルをダウンロードする

PythonでBoto3を用いてAmazon S3バケットからファイルをダウンロードしてみます。前回、Boto3を用いてAmazon S3バケットにファイルをアップロードするという記事を公開しましたが、今回はその続きとなります。

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

■Python

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

■Amazon S3バケットにアップロードしたファイルを確認する

Amazon S3バケットからファイルをダウンロードしてみますが、その前に作成したS3バケットにアップロードしたファイルを確認します。以前、「kobayashi-test-cloud-a」というS3バケットを作成しています。

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

確認後、さらに「kobayashi-test-cloud-a」をクリックします。クリックすると、作成したバケットの「オブジェクト」が表示されます。「オブジェクト」内に、前回アップロードしたファイルである「test.txt」というテキストファイルを確認することができました。

■アップロードしたファイルをディレクトリを用意する

ファイルがアップロードされていることが確認できましたので、次にアップロードしたファイルをディレクトリを用意しておきます。

今回は「C:\test(フォルダパス)」を用意しました。

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

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

■コード

import boto3

AWS_REGION ="us-east-2"
bucket_name = "kobayashi-test-cloud-a"

s3_resource = boto3.resource('s3',region_name=AWS_REGION)

s3_object = s3_resource.Object(bucket_name,'test.txt')

s3_object.download_file(r'C:\test\test_download.txt')

print("s3バケットからのファイルアップロードが完了しました")

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

AWSリージョンを指定し格納後、bucket_nameという変数を定義し、その中に前回作成したバケットの名前を格納します。

格納後、s3_resourceという変数を定義し、その中でboto3.resource()を用います。括弧内には第1の引数,パラメータとしてs3を渡します。その後、第2の引数,パラメータとして「region_name=AWS_REGION」を渡します。これでs3のリソースを使用することができます。

その後、s3_objectという変数を定義し、その中でs3_resource変数に対してObject()を用います。括弧内には第1の引数,パラメータとしてbucket_name変数を渡します。第2の引数,パラメータとして、ojectのキー識別子を渡しますので、「test.txt」とします。これでS3バケットのオブジェクトが設定されました。

設定後、download_file()を用います。括弧内には引数,パラメータとして、S3バケットからダウンロードしたファイルを保存する場所を渡します。今回は用意しておいた「C:\test(フォルダパス)」を指定し、ダウンロード後のファイル名(test_download.txt)も設定します。

最後にprint()を用います。括弧内に引数,パラメータとして、S3バケットからのファイルのダウンロードが完了したという文字列を渡します。これで文字列が出力されます。

■実行・検証

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

実行してみると、「ファイルアップロードが完了しました」と出力されました。

出力後、ディレクトリを確認してみると、S3バケット内にアップロードしたテキストファイルがダウンロードされていることを確認できました。

コメント

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