【Python】S3からファイルを取得(ダウンロード)する【AWS】

Pythonで
 ・S3からファイルを取得(ダウンロード)
できます!

この記事では
 ・プロファイルを指定した方法
紹介します!
※ローカルから実行します。Lambda関数からではなく。

前提

①外部ライブラリ「boto3」がインストールされていること。
pipコマンドでインストールする場合、以下でインストールできます

pip install boto3


②AWS CLIのプロファイルが設定済みであること。

コード

ここでは例として
 ・バケット「tmp12345」配下のフォルダ「sub1」配下にある
 ・ファイル「file001.txt」を取得(ダウンロード)
します。

バケット「tmp12345」配下のフォルダ「sub1」配下に、ファイル「file.txt」が存在する
バケット「tmp12345」配下のフォルダ「sub1」配下に、ファイル「file.txt」が存在する
from boto3.session import Session
from botocore.exceptions import ClientError

# プロファイル名
profile = "develop"
# バケット名
bucket = "tmp12345"
# フォルダ名とファイル名
key = "sub1/file.txt"
# 保存先となるローカルのファイルパス
filename = r"C:\Users\lunch\Desktop\file.txt"

try:
    session = Session(profile_name=profile)
    s3_client = session.client(service_name="s3")
    # S3からファイルを取得(ダウンロード)
    s3_client.download_file(Bucket=bucket, Key=key, Filename=filename)
    print("S3からファイルを取得(ダウンロード)しました。")
except ClientError as e:
    print("エラーが発生しました。")
    print("エラーコード:" + e.response["Error"]["Code"])
    print("エラーメッセージ:" + e.response["Error"]["Message"])
except Exception as e:
    print("エラーが発生しました。")
    print(e)

以下を指定します(5~11行目)。
※状況に応じて任意の値を指定してください。

・プロファイル名
・バケット名
・フォルダ名とファイル名
・保存先となるローカルのファイルパス

既に保存先となるローカルに同名ファイルが存在する場合、上書きされます。
※エラーにはなりません。

実行結果

S3からファイルを取得(ダウンロード)できました。

実行結果①
実行結果①
実行結果②
実行結果②

参考

上記のコードは以下の公式サイトを参考にして作成しました。

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