استنادًا إلى نتائج البحث، يبدو أن استخدام قارئ التوجيه فقط، مثل قارئ Go `tar`، قد يمثل تحديًا عند تحميل ملفات كبيرة إلى Amazon S3 باستخدام AWS SDK for Go.
النقاط الرئيسية هي:
1. مشكلات إدارة الذاكرة: يقوم برنامج التحميل AWS SDK for Go's S3 بتخصيص وتعبئة المخازن المؤقتة للملف بأكمله قبل تحميلها. يمكن أن يتسبب هذا في نفاد ذاكرة العملية عند تحميل ملفات كبيرة باستخدام قارئ لا يدعم وظائف `Seek` أو `ReadAt`، مثل قارئ Go `tar`.
2. التقطيع الذكي: مشكلة GitHub #1104 تشير إلى أنه يمكن تحسين SDK لاستخدام المزيد من التقطيع الذكي عندما التعامل مع أجهزة القراءة التي لا تدعم "Seek" و"ReadAt". وهذا من شأنه أن يساعد في إدارة استخدام الذاكرة بشكل أفضل أثناء تحميل الملفات الكبيرة.
3. البث والتحميلات متعددة الأجزاء: تدعم AWS SDK for Go البث والتحميلات متعددة الأجزاء، مما يمكن أن يساعد في إدارة استخدام الذاكرة أثناء تحميل الملفات الكبيرة. ومع ذلك، قد لا تعمل هذه الميزات بشكل جيد مع القارئ الأمامي فقط.
4. الحلول البديلة: تقترح نتائج البحث استخدام Minio SDK أو Google CDK، والتي قد تتمتع بدعم أفضل لتدفق الملفات الكبيرة إلى S3. بالإضافة إلى ذلك، يوفر مشروع aws-s3-reader-seeker تطبيقًا مخصصًا للقارئ يمكنه التعامل مع كائنات S3 الكبيرة بشكل أكبر بكفاءة.
باختصار، على الرغم من أنه من الممكن استخدام قارئ توجيه فقط مثل قارئ Go `tar` لتحميل ملفات كبيرة إلى S3 باستخدام AWS SDK for Go، إلا أنه قد لا يكون النهج الأكثر كفاءة أو صديقًا للذاكرة. قد يكون التفكير في حلول بديلة أو استخدام ميزات البث والتحميل متعدد الأجزاء الخاصة بـ SDK خيارًا أفضل في مثل هذه الحالات.
اقتباسات:[1] https://github.com/aws/aws-sdk-go/issues/1104
[2] https://github.com/nikolaydubina/aws-s3-reader/blob/master/aws_s3_reader_seeker.go
[3] https://www.reddit.com/r/golang/comments/131bq42/need_to_stream_large_files_to_s3_using_go/
[4] https://www.linkedin.com/pulse/golang-uploading-files-aws-s3-bucket-using-pre-signed-tiago-melo
[5] https://pkg.go.dev/github.com/SnellerInc/sneller/aws/s3