非常に大きなファイルを処理するためのpythonスクリプトを記述しました(合計TB))、これをEC2インスタンスで実行します。その後、処理されたファイルをS3バケットに保存します。現在、スクリプトは最初にデータをディスクに保存してからS3にアップロードします。残念ながら、インスタンスが最初にディスクに書き込み、次にアップロードするのを待つ余分な時間がかかるため、これはかなりコストがかかります。 。
Boto3を使用してS3バケットに直接ファイルを書き込む方法はありますか?
編集:私の質問を明確にするために、私はメモリにオブジェクトがあるかどうかを尋ねています。最初にオブジェクトをディスクに保存せずに、そのオブジェクトを直接S3に書き込みます。
これには put_object を使用できます。ファイルオブジェクトをボディとして渡すだけです。
例えば:
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'
)
S3 put_object
方法:
key = 'filename'
response = s3.put_object(Bucket='Bucket_Name',
Body=json_data,
Key=key)