برای اینکه بتوانیم فایل‌های بزرگ را بر روی آرکایو آپلود کنیم دو راه وجود دارد. اولین راه این است که خود فایل‌ها را آپلود کنیم که این مورد بدون هیچ گونه مشکلی انجام خواهد شد و در صورتی که آپلود با مشکل مواجه شود فضایی از Archive گرفته نمی‌شود و فایلی آپلود نخواهد شد و هرچیزی که آپلود شده بدون مشکل پاک خواهد شد.

حالت دوم برای آپلود فایل، به این صورت است که کاربر آپلود فایل را به‌صورت MultiPart انجام خواهد داد. به‌عنوان مثال فایلی با حجم ده گیگ را به ده قسمت یک گیگی تبدیل می‌کند و هرکدام از قسمت‌ها را به‌صورت جدا جدا آپلود می‌کند. مسئله‌ای که در آپلود Multi Part در S3 وجود دارد این است که باید پس از اتمام آپلود قسمت‌ها، اطلاع داده شود که آپلود همه‌ی قسمت‌ها کامل شده است در این صورت S3 همه‌ی ده قسمت را به یک آبجکت تبدیل می‌کند. اگر کامل شدن فرآیند به S3 اطلاع داده نشود، شما ده آبجکت یک گیگی غیرقابل استفاده خواهید داشت. یعنی از حجم باکت شما استفاده می‌شود ولی در واقعیت شما آن فایل را نخواهید داشت.

برای کامل کردن فرآیند آپلود می‌توانید گام‌های زیر را طی کنید:

گام اول: لیست گرفتن از آپلودهای Multi Part

برای اینکه بتوانید لیست آپلودهای Multi Part خود را بگیرید می‌توانید از دستور زیر استفاده کنید. دستور زیر همه‌ی آپلودهای Multi Part فعال باکت My-bucket را برای شما لیست می‌کند.

aws s3api list-multipart-uploads --bucket my-bucket

گام دوم: abort کردن آپلودی که نیمه کاره مانده است

هنگامی که یک آپلود دچار مشکلی می‌شود و نیمه کاره می‌ماند باید آن را abort کنید. برای مثال دستور زیر یک آپلود Multi Part برای کلید multipart/01 در باکت my-bucket را abort می‌کند.

aws s3api abort-multipart-upload \
    --bucket my-bucket \
    --key multipart/01 \
    --upload-id dfRtDYU0WWCCcH43C3WFbkRONycyCpTJJvxu2i5GYkZljF.Yxwh6XG7WfS2vC4to6HiV6Yjlx.cph0gtNBtJ8P3URCSbB7rjxI5iEwVDmgaXZOGgkk5nVTW16HOQ5l0R

گام سوم: کامل کردن فرآیند آپلود Multi Part

اگر می‌خواهیم یک آپلود Multi Part را کامل کنیم می‌توانیم از دستور زیر استفاده کنید. برای مثال دستور زیر یک آپلود Multi Part برای کلید multipart/01 در باکت my-bucket را کامل می‌کند.

aws s3api complete-multipart-upload --multipart-upload file://mpustruct --bucket my-bucket --key 'multipart/01' --upload-id dfRtDYU0WWCCcH43C3WFbkRONycyCpTJJvxu2i5GYkZljF.Yxwh6XG7WfS2vC4to6HiV6Yjlx.cph0gtNBtJ8P3URCSbB7rjxI5iEwVDmgaXZOGgkk5nVTW16HOQ5l0R

برای جزئیات بیشتر در رابطه با هر یک از گام‌های بالا می‌توانید به مستندات aws که در هر قسمت لینک داده شده است مراجعه کنید.