boto3を利用してS3を操作する


この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので十分ご注意ください。

初めに

  boto3はPythonのAWS開発キットです。 今日は、ストレージバケットを作成して、それらをすべてs3にする方法のデモをご紹介します。 最後に、ファイルを素早くアップロードする方法を紹介します。

操作

  最初にバケットを作成し、バケット名を設定し、リージョンを指定します。
file
file
  次は全てのバケツを手に入れろ 汲み取りの際の注意点を一つ。 フェッチすると全ての情報を取り出してしまうので、この時点でフィルターをかけるように気をつけましょう。
file
  最後にファイルをアップロードし、ファイル名を指定し、ファイルはpythonファイルと同じフォルダに存在する必要があり、最後にアップロードするバケットを指定します。
file
file

コード

import boto3
import logging
from botocore.exceptions import ClientError

def create_bucket(bucket_name,regoin = None):
    try:
        if regoin is None:
            s3_client = boto3.client("s3")
            s3_client.create_bucket(Bucket=bucket_name)
        else:
            s3_client = boto3.client('s3',region_name = regoin)
            location = {'LocationConstraint' : regoin}
            s3_client.create_bucket(Bucket = bucket_name , CreateBucketConfiguration = location)
    except ClientError as e:
        logging.error(e)
        return False
    return True

def get_all_bucket():
    bucketList = []
    s3 = boto3.client("s3")
    response = s3.list_buckets()
    for bucket in response["Buckets"]:
        bucketList.append(bucket["Name"])
    return bucketList

def upload_file(file_name , bucket , object_name = None):
    if object_name is None :
        object_name = file_name
    s3_client = boto3.client("s3")
    try:
        response = s3_client.upload_file(file_name , bucket , object_name)
    except ClientError as e :
        logging.error(e)
        return False
    return True

まとめ

  コードは比較的シンプルなので公式ドキュメントを確認すればいいのですが、実際に使ってみると、地域を指定しないで作成するなど、ちょっとした問題が出てくることがありますが、実際に操作してみると、地域を指定しないとエラーが出ることがわかります。

Last modified: 2024-02-05

Author