AWSが提供するS3(Simple Storage Service)は、インターネット上で簡単にデータを保存できるサービスです。企業や個人がデータを安全に保管し、必要なときにいつでも取り出せます。特に動画や画像などの大きなファイルを扱うのにぴったりです。
マルチパートアップロードは、1つの大きなファイルをいくつかの小さな部分に分けて同時にアップロードする方法です。この方法を使うと、アップロードが速くなったり、途中で失敗しても再送信が簡単になります。大きなファイルを扱う場合にとても便利です。
マルチパートアップロードにはいくつかの大きなメリットがあります。
マルチパートアップロードは、以下のステップで行います。
まず、AWS S3にマルチパートアップロードを開始するためのリクエストを送ります。これにより、アップロードの準備が整います。
次に、ファイルを複数の部品に分けます。それぞれの部分をS3に送信します。このとき、各部分には番号が付けられ、順番が管理されます。
すべての部分のアップロードが終わったら、全体を統合するためのリクエストを送ります。これで、1つの大きなファイルとして保存されます。
では、実際にPythonを使ってマルチパートアップロードを行う簡単な例を見てみましょう。以下はそのコードです。
import boto3 s3 = boto3.client('s3') bucket_name = 'your-bucket-name' file_path = 'path/to/your/large-file.ext' file_size = os.path.getsize(file_path) # マルチパートアップロードの開始 multipart_upload = s3.create_multipart_upload(Bucket=bucket_name, Key='large-file.ext') # ファイルを分割してアップロード parts = [] part_number = 1 with open(file_path, 'rb') as file: while True: data = file.read(5 * 1024 * 1024) # 5MBずつ読み込む if not data: break part = s3.upload_part(Bucket=bucket_name, Key='large-file.ext', PartNumber=part_number, UploadId=multipart_upload['UploadId'], Body=data) parts.append({'ETag': part['ETag'], 'PartNumber': part_number}) part_number += 1 # アップロードを完了する s3.complete_multipart_upload(Bucket=bucket_name, Key='large-file.ext', UploadId=multipart_upload['UploadId'], MultipartUpload={'Parts': parts})
S3のマルチパートアップロード機能を使うことで、大容量ファイルの管理がとても簡単になります。