S3で5GB以上のファイルをコピーするには、普通のコピーでは出来ずMultipart Copyを使う必要があります。
RailsサーバからS3内の5GB以上のファイルを同じS3内にコピーする記事が無かったのでやり方を書きます。
gemのインストール
gem 'aws-sdk'
コピー処理
Aws::S3::Resourceのcopy_toを使用します。
Aws::S3::Clientのcopy_objectだと恐らくMultipart Copyが出来ません。
s3 = Aws::S3::Resource.new(
region: 'reagion_name',
access_key_id: 'access_key',
secret_access_key: 'secret_key',
)
bucket = s3.bucket('bucket_name')
object = bucket.object("src/file") # コピー元のobject key
object.copy_to(bucket: 'bucket_name', key: "target/file", multipart_copy: true) # コピー先のobject key
参考