非常に大きなファイル (合計で数 TB) を処理する Python スクリプトを作成し、EC2 インスタンスで実行します。その後、処理したファイルを S3 バケットに保存します。現在、スクリプトはデータを最初にディスクに保存し、次に S3 にアップロードします。残念ながら、インスタンスが最初にディスクに書き込み、次にアップロードするまでの待機時間が増えるため、コストがかなり高くなります。
boto3 を使用してファイルを S3 バケットに直接書き込む方法はありますか?
編集: 質問を明確にするために、メモリ内にオブジェクトがあり、そのオブジェクトを最初にディスクに保存せずに S3 に直接書き込むかどうかを尋ねています。
ベストアンサー1
使用できますオブジェクトを置くこのためには、ファイル オブジェクトを body として渡すだけです。
例えば:
import boto3
client = boto3.client('s3')
response = client.put_object(
Bucket='your-s3-bucket-name',
Body='bytes or seekable file-like object',
Key='Object key for which the PUT operation was initiated'
)