

 **Halaman ini hanya untuk pelanggan lama layanan Amazon Glacier menggunakan Vaults dan REST API asli dari 2012.**

Jika Anda mencari solusi penyimpanan arsip, sebaiknya gunakan kelas penyimpanan Amazon Glacier di Amazon S3, S3 Glacier Instant Retrieval, S3 Glacier Flexible Retrieval, dan S3 Glacier Deep Archive. Untuk mempelajari lebih lanjut tentang opsi penyimpanan ini, lihat kelas penyimpanan [Amazon Glacier](https://aws.amazon.com/s3/storage-classes/glacier/).

Amazon Glacier (layanan berbasis brankas mandiri asli) tidak lagi menerima pelanggan baru. Amazon Glacier adalah layanan mandiri dengan miliknya APIs sendiri yang menyimpan data di brankas dan berbeda dari Amazon S3 dan kelas penyimpanan Amazon S3 Glacier. Data Anda yang ada akan tetap aman dan dapat diakses di Amazon Glacier tanpa batas waktu. Tidak diperlukan migrasi. Untuk penyimpanan arsip jangka panjang berbiaya rendah, AWS rekomendasikan kelas [penyimpanan Amazon S3 Glacier](https://aws.amazon.com/s3/storage-classes/glacier/), yang memberikan pengalaman pelanggan yang unggul dengan APIs berbasis ember S3, ketersediaan penuh, biaya lebih rendah, Wilayah AWS dan integrasi layanan. AWS Jika Anda ingin meningkatkan kemampuan, pertimbangkan untuk bermigrasi ke kelas penyimpanan Amazon S3 Glacier dengan menggunakan [Panduan Solusi AWS kami untuk mentransfer data dari kubah Amazon Glacier ke kelas penyimpanan Amazon S3 Glacier](https://aws.amazon.com/solutions/guidance/data-transfer-from-amazon-s3-glacier-vaults-to-amazon-s3/).

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Mengunggah Arsip Besar dalam Beberapa Bagian (Unggahan Multipart)
<a name="uploading-archive-mpu"></a>

**Topics**
+ [Proses Unggahan Multipart](#MPUprocess)
+ [Fakta Cepat](#qfacts)
+ [Mengunggah Arsip Besar dengan Menggunakan AWS CLI](uploading-an-archive-mpu-using-cli.md)
+ [Mengunggah Arsip Besar dalam Beberapa Bagian Menggunakan Amazon SDK for Java](uploading-an-archive-mpu-using-java.md)
+ [Mengunggah Arsip Besar Menggunakan AWS SDK untuk .NET](uploading-an-archive-mpu-using-dotnet.md)
+ [Mengunggah Arsip Besar dalam Beberapa Bagian Menggunakan REST API](uploading-an-archive-mpu-using-rest.md)

## Proses Unggahan Multipart
<a name="MPUprocess"></a>

Seperti dijelaskan dalam[Mengunggah Arsip di Amazon Glacier](uploading-an-archive.md), kami mendorong pelanggan Amazon Glacier (Amazon Glacier) untuk menggunakan Multipart Upload untuk mengunggah arsip lebih dari 100 mebibytes (MiB). 

1. **Mulai Unggahan Multibagian** 

   Saat Anda mengirim permintaan untuk memulai unggahan multipart, Amazon Glacier mengembalikan ID unggahan multipart, yang merupakan pengenal unik untuk unggahan multipart Anda. Operasi unggahan multipart berikutnya memerlukan ID ini. ID ini tidak kedaluwarsa setidaknya 24 jam setelah Amazon Glacier menyelesaikan pekerjaan. 

   Dalam permintaan Anda untuk memulai unggahan multipart, tentukan ukuran bagian dalam jumlah byte. Setiap bagian yang Anda unggah, kecuali bagian terakhir, harus seukuran ini.
**catatan**  
Anda tidak perlu mengetahui ukuran arsip secara keseluruhan saat menggunakan unggahan multipart. Ini berarti Anda dapat menggunakan unggahan multipart jika Anda tidak mengetahui ukuran arsip ketika Anda mulai mengunggah arsip. Anda hanya perlu memutuskan ukuran bagian pada saat Anda memulai unggahan multipart.

   Dalam permintaan mulai unggahan multipart, Anda juga dapat memberikan deskripsi arsip opsional. 

1. **Unggah Bagian**

   Untuk setiap permintaan unggah bagian, Anda harus menyertakan ID unggahan multipart yang Anda peroleh pada langkah 1. Dalam permintaan tersebut, Anda juga harus menentukan rentang konten, dalam byte, yang mengidentifikasi posisi bagian dalam arsip final. Amazon Glacier kemudian menggunakan informasi rentang konten untuk mengumpulkan arsip dalam urutan yang tepat. Karena Anda menyediakan berbagai konten untuk setiap bagian yang Anda unggah, hal ini akan menentukan posisi bagian dalam penggabungan akhir final, dan karena itu, Anda dapat mengunggah bagian dalam urutan apa pun. Anda juga dapat mengunggah bagian secara paralel. Jika Anda mengunggah bagian baru menggunakan rentang konten yang sama dengan bagian yang diunggah sebelumnya, bagian yang diunggah sebelumnya akan ditimpa. 

1. **Selesaikan (atau hentikan) Unggahan Multipart**

   Setelah mengunggah semua bagian arsip, Anda menggunakan operasi selesaikan. Sekali lagi, Anda harus menentukan ID unggahan dalam permintaan Anda. Amazon Glacier membuat arsip dengan menggabungkan bagian-bagian dalam urutan menaik berdasarkan rentang konten yang Anda berikan. Respons Amazon Glacier terhadap permintaan Unggahan Multibagian Lengkap menyertakan ID arsip untuk arsip yang baru dibuat. Jika Anda memberikan deskripsi arsip opsional dalam permintaan Inisiate Multipart Upload, Amazon Glacier mengaitkannya dengan arsip rakitan. Setelah Anda berhasil menyelesaikan unggahan multipart, Anda tidak dapat merujuk ke ID unggahan multipart. Itu berarti Anda tidak dapat mengakses bagian yang terkait dengan ID unggahan multipart.

   Setelah menghentikan unggahan multipart, Anda tidak dapat mengunggah bagian apa pun menggunakan ID unggahan multipart tersebut. Semua penyimpanan yang digunakan oleh setiap bagian yang terkait dengan unggahan multipart yang dihentikan akan dikosongkan. Jika ada unggahan bagian yang sedang berlangsung, unggahan masih dapat berhasil atau gagal meskipun sudah Anda hentikan.

### Operasi Unggahan Multipart Tambahan
<a name="additional-mpu-operations"></a>

Amazon Glacier (Amazon Glacier) menyediakan panggilan API unggahan multibagian tambahan berikut.

 
+ **Cantumkan Bagian**—Dengan menggunakan operasi ini, Anda dapat mencantumkan bagian-bagian dari unggahan multipart tertentu. Operasi ini mengembalikan informasi bagian yang sudah Anda unggah untuk unggahan multipart. Untuk setiap permintaan bagian daftar, Amazon Glacier mengembalikan informasi hingga 1.000 bagian. Jika ada lebih banyak bagian yang dicantumkan untuk unggahan multipart, hasilnya adalah pemberian nomor halaman dan penanda dikembalikan dalam respons di tempat daftar dilanjutkan. Anda perlu mengirim permintaan tambahan untuk mengambil bagian berikutnya. Perhatikan bahwa daftar bagian yang telah ditampilkan tidak akan mencakup bagian yang belum selesai diunggah.
+ **Cantumkan Unggahan Multipart**—Dengan menggunakan operasi ini, Anda bisa mendapatkan daftar unggahan multipart yang sedang diproses. Unggahan multipart yang sedang berlangsung adalah unggahan yang telah Anda mulai, tetapi belum selesai atau dihentikan. Untuk setiap permintaan unggahan multipart daftar, Amazon Glacier mengembalikan hingga 1.000 unggahan multipart. Jika ada lebih banyak unggahan multipart yang dicantumkan, hasilnya adalah pemberian nomor halaman dan penanda dikembalikan dalam respons di tempat daftar dilanjutkan. Anda harus mengirim permintaan tambahan untuk mengambil unggahan multipart yang tersisa.

## Fakta Cepat
<a name="qfacts"></a>

Tabel berikut menyediakan spesifikasi inti unggahan multipart.


| Item | Spesifikasi | 
| --- | --- | 
| Ukuran arsip maksimum | 10.000 x 4 gibibyte (GiB)  | 
| Jumlah maksimum bagian per unggahan | 10.000 | 
| Ukuran bagian | 1 MiB sampai 4 GiB, bagian terakhir bisa < 1 MiB. Anda menentukan nilai ukuran dalam byte. Ukuran bagian harus mebibyte (1024 kibibytes [KiB]) dikalikan dengan kekuatan 2. Misalnya, `1048576` (1 MiB), `2097152` (2 MiB), (`4194304`4 MiB), (8 MiB). `8388608`   | 
| Jumlah maksimum bagian yang ditampilkan untuk permintaan daftar bagian | 1.000  | 
| Jumlah maksimum unggahan multipart yang ditampilkan dalam sebuah permintaan daftar unggahan multipart | 1.000  | 

# Mengunggah Arsip Besar dengan Menggunakan AWS CLI
<a name="uploading-an-archive-mpu-using-cli"></a>

Anda dapat mengunggah arsip di Amazon Glacier (Amazon Glacier) dengan menggunakan (). AWS Command Line Interface AWS CLI Untuk meningkatkan pengalaman mengunggah arsip yang lebih besar, Amazon Glacier menyediakan beberapa operasi API untuk mendukung unggahan multipart. Dengan menggunakan operasi API ini, Anda dapat mengunggah arsip di beberapa bagian. Bagian-bagian ini dapat diunggah secara independen, dalam urutan apa pun, dan secara paralel. Jika unggahan bagian gagal, Anda hanya perlu mengunggah bagian itu lagi, bukan seluruh arsip. Anda dapat menggunakan unggahan multipart untuk arsip dari 1 byte hingga sekitar 40.000 gibibytes (GiB) dalam ukuran. 

Untuk informasi selengkapnya tentang unggahan multipart Amazon Glacier, lihat. [Mengunggah Arsip Besar dalam Beberapa Bagian (Unggahan Multipart)](uploading-archive-mpu.md)

**Topics**
+ [(Prasyarat) Menyiapkan AWS CLI](#Creating-Vaults-CLI-Setup)
+ [(Prasyarat) Instal Python](#Uploading-Archives-mpu-CLI-Install-Python)
+ [(Prasyarat) Buat Amazon Glacier Vault](#Uploading-Archives-mpu-CLI-Create-Vault)
+ [Contoh: Mengunggah Arsip Besar di Bagian dengan Menggunakan AWS CLI](#Uploading-Archives-mpu-CLI-Implementation)

## (Prasyarat) Menyiapkan AWS CLI
<a name="Creating-Vaults-CLI-Setup"></a>

1. Unduh dan konfigurasikan AWS CLI. Untuk melakukannya, lihat topik berikut di *Panduan Pengguna AWS Command Line Interface *: 

    [Instalasi AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/installing.html) 

   [Mengkonfigurasi AWS Command Line Interface](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)

1. Verifikasi AWS CLI pengaturan Anda dengan memasukkan perintah berikut pada prompt perintah. Perintah ini tidak memberikan kredensial secara eksplisit, sehingga kredensial profil default digunakan.
   + Coba gunakan perintah bantuan.

     ```
     aws help
     ```
   + Untuk mendapatkan daftar brankas Amazon Glacier pada akun yang dikonfigurasi, gunakan perintah. `list-vaults` Ganti *123456789012* dengan Akun AWS ID Anda.

     ```
     aws glacier list-vaults --account-id 123456789012
     ```
   + Untuk melihat data konfigurasi saat ini untuk AWS CLI, gunakan `aws configure list` perintah.

     ```
     aws configure list
     ```

## (Prasyarat) Instal Python
<a name="Uploading-Archives-mpu-CLI-Install-Python"></a>

Untuk menyelesaikan unggahan multipart, Anda harus menghitung hash SHA256 pohon dari arsip yang Anda unggah. Melakukannya berbeda dengan menghitung hash SHA256 pohon dari file yang ingin Anda unggah. Untuk menghitung hash SHA256 pohon dari arsip yang Anda unggah, Anda dapat menggunakanJava, C\$1 (dengan.NET), atau. Python Dalam contoh ini, Anda akan menggunakanPython. Untuk petunjuk tentang penggunaan Java atau C \$1, lihat[Checksum Komputasi](checksum-calculations.md). 

Untuk informasi selengkapnya tentang menginstalPython, lihat [Menginstal atau memperbarui Python](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html#installation) di Panduan *Pengembang Boto3*.

## (Prasyarat) Buat Amazon Glacier Vault
<a name="Uploading-Archives-mpu-CLI-Create-Vault"></a>

Untuk menggunakan contoh berikut, Anda harus memiliki setidaknya satu lemari besi Amazon Glacier yang dibuat. Untuk informasi selengkapnya tentang membuat brankas, lihat. [Membuat Vault di Amazon Glacier](creating-vaults.md)

## Contoh: Mengunggah Arsip Besar di Bagian dengan Menggunakan AWS CLI
<a name="Uploading-Archives-mpu-CLI-Implementation"></a>

Dalam contoh ini, Anda akan membuat file dan menggunakan operasi API unggahan multibagian untuk mengunggah file ini, sebagian, ke Amazon Glacier.
**penting**  
Sebelum memulai prosedur ini, pastikan Anda telah melakukan semua langkah prasyarat. Untuk mengunggah arsip, Anda harus memiliki vault yang dibuat, AWS CLI dikonfigurasi, dan siap untuk menggunakanJava, C \$1, atau Python untuk menghitung hash SHA256 pohon.

Prosedur berikut menggunakan`initiate-multipart-upload`,`upload-multipart-part`, dan `complete-multipart-upload` AWS CLI perintah. 

Untuk informasi lebih rinci tentang masing-masing perintah ini, lihat, [https://docs.aws.amazon.com/cli/latest/reference/glacier/initiate-multipart-upload.html](https://docs.aws.amazon.com/cli/latest/reference/glacier/initiate-multipart-upload.html), dan [https://docs.aws.amazon.com/cli/latest/reference/glacier/complete-multipart-upload.html](https://docs.aws.amazon.com/cli/latest/reference/glacier/complete-multipart-upload.html)di *AWS CLI Command Reference*.

1. Gunakan [https://docs.aws.amazon.com/cli/latest/reference/glacier/initiate-multipart-upload.html](https://docs.aws.amazon.com/cli/latest/reference/glacier/initiate-multipart-upload.html)perintah untuk membuat sumber daya unggahan multibagian. Dalam permintaan Anda, tentukan ukuran bagian dalam jumlah byte. Setiap bagian yang Anda unggah, kecuali bagian terakhir, akan berukuran ini. Anda tidak perlu mengetahui ukuran arsip keseluruhan saat memulai unggahan. Namun, Anda akan memerlukan ukuran total, dalam byte, dari setiap bagian saat menyelesaikan unggahan pada langkah terakhir.

   Dalam perintah berikut, ganti nilai untuk `--account-ID` parameter `--vault-name` dan dengan informasi Anda sendiri. Perintah ini menentukan bahwa Anda akan mengunggah arsip dengan ukuran bagian 1 mebibyte (MiB) (1024 x 1024 byte) per file. Ganti nilai `--part-size` parameter ini jika diperlukan. 

   ```
   aws glacier initiate-multipart-upload --vault-name awsexamplevault --part-size 1048576 --account-id 123456789012
   ```

   Keluaran yang diharapkan

   ```
   {
   "location": "/123456789012/vaults/awsexamplevault/multipart-uploads/uploadId",
   "uploadId": "uploadId"
   }
   ```

   Setelah selesai, perintah akan menampilkan ID unggahan dan lokasi sumber daya unggahan multibagian di Amazon Glacier. Anda akan menggunakan ID unggahan ini pada langkah selanjutnya.

1. Untuk contoh ini, Anda dapat menggunakan perintah berikut untuk membuat file 4.4 MiB, membaginya menjadi potongan 1 MiB, dan mengunggah setiap potongan. Untuk mengunggah file Anda sendiri, Anda dapat mengikuti prosedur serupa untuk membagi data Anda menjadi beberapa bagian dan mengunggah setiap bagian. 

   

**Linux atau macOS**  
Perintah berikut membuat file 4.4 MiB, bernama`file_to_upload`, di Linux atau macOS.

   ```
   mkfile -n 9000b file_to_upload
   ```

**Windows**  
Perintah berikut membuat file 4.4 MiB, bernama`file_to_upload`, pada Windows.

   ```
   fsutil file createnew file_to_upload 4608000
   ```

1. Selanjutnya, Anda akan membagi file ini menjadi potongan 1 MiB. 

   ```
   split -b 1048576 file_to_upload chunk
   ```

   Anda sekarang memiliki lima potongan berikut. Empat yang pertama adalah 1 MiB, dan yang terakhir adalah sekitar 400 kibibytes (KiB). 

   ```
   chunkaa
   chunkab
   chunkac
   chunkad
   chunkae
   ```

1. Gunakan [https://docs.aws.amazon.com/cli/latest/reference/glacier/upload-multipart-part.html](https://docs.aws.amazon.com/cli/latest/reference/glacier/upload-multipart-part.html)perintah untuk mengunggah bagian dari arsip. Anda dapat mengunggah bagian arsip dalam urutan apa pun. Anda juga dapat mengunggahnya secara paralel. Anda dapat mengunggah hingga 10.000 bagian untuk unggahan multipart.

   Dalam perintah berikut, ganti nilai untuk`--vault-name`,`--account-ID`, dan `--upload-id` parameter. ID upload harus cocok dengan ID yang diberikan sebagai output dari `initiate-multipart-upload` perintah. `--range`Parameter menentukan bahwa Anda akan mengunggah bagian dengan ukuran 1 MiB (1024 x 1024 byte). Ukuran ini harus sesuai dengan apa yang Anda tentukan dalam `initiate-multipart-upload` perintah. Sesuaikan nilai ukuran ini jika diperlukan. `--body`Parameter menentukan nama bagian yang Anda upload.

   ```
   aws glacier upload-multipart-part --body chunkaa --range='bytes 0-1048575/*' --vault-name awsexamplevault --account-id 123456789012 --upload-id upload_ID
   ```

   Jika berhasil, perintah akan menghasilkan output yang berisi checksum untuk bagian yang diunggah.

1. Jalankan `upload-multipart-part` perintah lagi untuk mengunggah bagian yang tersisa dari unggahan multipart Anda. Perbarui nilai `--range` dan `–-body` parameter untuk setiap perintah agar sesuai dengan bagian yang Anda unggah. 

   ```
   aws glacier upload-multipart-part --body chunkab --range='bytes 1048576-2097151/*' --vault-name awsexamplevault --account-id 123456789012 --upload-id upload_ID
   ```

   ```
   aws glacier upload-multipart-part --body chunkac --range='bytes 2097152-3145727/*' --vault-name awsexamplevault --account-id 123456789012 --upload-id upload_ID
   ```

   ```
   aws glacier upload-multipart-part --body chunkad --range='bytes 3145728-4194303/*' --vault-name awsexamplevault --account-id 123456789012 --upload-id upload_ID
   ```

   ```
   aws glacier upload-multipart-part --body chunkae --range='bytes 4194304-4607999/*' --vault-name awsexamplevault --account-id 123456789012 --upload-id upload_ID
   ```
**catatan**  
Nilai `--range` parameter perintah akhir lebih kecil karena bagian akhir dari unggahan kami kurang dari 1 MiB. Jika berhasil, setiap perintah akan menghasilkan output yang berisi checksum untuk setiap bagian yang diunggah.

1. Selanjutnya, Anda akan merakit arsip dan menyelesaikan unggahan. Anda harus menyertakan ukuran total dan hash SHA256 pohon arsip.

   Untuk menghitung hash SHA256 pohon arsip, Anda dapat menggunakanJava, C \$1, atau. Python Dalam contoh ini, Anda akan menggunakanPython. Untuk petunjuk tentang penggunaan Java atau C \$1, lihat[Checksum Komputasi](checksum-calculations.md).

   Buat Python file `checksum.py` dan masukkan kode berikut. Jika perlu, ganti nama file asli.

   ```
   from botocore.utils import calculate_tree_hash
   					
   checksum = calculate_tree_hash(open('file_to_upload', 'rb'))
   print(checksum)
   ```

1. Jalankan `checksum.py` untuk menghitung hash SHA256 pohon. Hash berikut mungkin tidak cocok dengan output Anda.

   ```
   $ python3 checksum.py
   $ 3d760edb291bfc9d90d35809243de092aea4c47b308290ad12d084f69988ae0c
   ```

1. Gunakan [https://docs.aws.amazon.com/cli/latest/reference/glacier/complete-multipart-upload.html](https://docs.aws.amazon.com/cli/latest/reference/glacier/complete-multipart-upload.html)perintah untuk menyelesaikan unggahan arsip. Ganti nilai untuk`--vault-name`,`--account-ID`,`--upload-ID`, dan `--checksum` parameter. Nilai `--archive` parameter menentukan ukuran total, dalam byte, dari arsip. Nilai ini harus merupakan jumlah dari semua ukuran masing-masing bagian yang Anda unggah. Ganti nilai ini jika diperlukan. 

   ```
   aws glacier complete-multipart-upload --archive-size 4608000 --vault-name awsexamplevault --account-id 123456789012 --upload-id upload_ID --checksum checksum
   ```

   Setelah selesai, perintah akan menampilkan ID arsip, checksum, dan lokasi di Amazon Glacier. 

# Mengunggah Arsip Besar dalam Beberapa Bagian Menggunakan Amazon SDK for Java
<a name="uploading-an-archive-mpu-using-java"></a>

Baik [tingkat tinggi maupun tingkat rendah](using-aws-sdk.md) yang APIs disediakan oleh Amazon SDK for Java menyediakan metode untuk mengunggah arsip besar (lihat). [Mengunggah Arsip di Amazon Glacier](uploading-an-archive.md) 

 
+ API tingkat tinggi menyediakan metode yang dapat Anda gunakan untuk mengunggah arsip dalam ukuran apa pun. Bergantung pada file yang Anda unggah, metode ini mengunggah arsip dalam satu operasi atau menggunakan dukungan unggahan multibagian di Amazon Glacier (Amazon Glacier) untuk mengunggah arsip menjadi beberapa bagian.
+ API tingkat rendah hampir memetakan ke implementasi REST yang mendasarinya. Dengan demikian, ini menyediakan metode untuk mengunggah arsip yang lebih kecil dalam satu operasi dan grup metode yang mendukung unggahan multipart untuk arsip yang lebih besar. Bagian ini menjelaskan mengunggah arsip besar dalam beberapa bagian menggunakan API tingkat rendah.

Untuk informasi lebih lanjut tentang tingkat tinggi dan tingkat rendah APIs, lihat. [Menggunakan AWS SDK untuk Java dengan Amazon Glacier](using-aws-sdk-for-java.md)

**Topics**
+ [Mengunggah Arsip Besar di Bagian Menggunakan API Tingkat Tinggi AWS SDK untuk Java](#uploading-an-archive-in-parts-highlevel-using-java)
+ [Unggah Arsip Besar di Bagian Menggunakan API Tingkat Rendah AWS SDK untuk Java](#uploading-an-archive-mpu-using-java-lowlevel)

## Mengunggah Arsip Besar di Bagian Menggunakan API Tingkat Tinggi AWS SDK untuk Java
<a name="uploading-an-archive-in-parts-highlevel-using-java"></a>

Anda menggunakan metode API tingkat tinggi yang sama untuk mengunggah arsip kecil atau besar. Berdasarkan ukuran arsip, metode API tingkat tinggi memutuskan apakah akan mengunggah arsip dalam satu operasi atau menggunakan API unggahan multibagian yang disediakan oleh Amazon Glacier. Untuk informasi selengkapnya, lihat [Mengunggah Arsip Menggunakan API Tingkat Tinggi AWS SDK untuk Java](uploading-an-archive-single-op-using-java.md#uploading-an-archive-single-op-high-level-using-java).

## Unggah Arsip Besar di Bagian Menggunakan API Tingkat Rendah AWS SDK untuk Java
<a name="uploading-an-archive-mpu-using-java-lowlevel"></a>

Untuk kontrol unggahan granular, Anda dapat menggunakan API tingkat rendah tempat Anda dapat mengonfigurasi permintaan dan memproses respons. Berikut adalah langkah-langkah untuk mengunggah arsip besar dalam beberapa bagian menggunakan AWS SDK untuk Java.

 

1. Buat instans dari kelas `AmazonGlacierClient` (klien). 

   Anda perlu menentukan AWS Wilayah tempat Anda ingin menyimpan arsip. Semua operasi yang Anda lakukan menggunakan klien ini berlaku untuk AWS Wilayah tersebut. 

1. Mulai unggahan multipart dengan memanggil metode `initiateMultipartUpload`.

   Anda perlu memberi nama vault tempat Anda ingin mengunggah arsip, ukuran bagian yang ingin Anda gunakan untuk mengunggah bagian arsip, dan deskripsi opsional. Anda memberikan informasi ini dengan membuat instans kelas `InitiateMultipartUploadRequest`. Sebagai tanggapan, Amazon Glacier mengembalikan ID unggahan.

1. Unggah bagian dengan memanggil metode `uploadMultipartPart`. 

   Untuk setiap bagian yang Anda unggah, Anda perlu memberi nama vault, rentang byte dalam gabungan arsip final yang akan diunggah di bagian ini, checksum dari data bagian, dan ID unggahan. 

1. Selesaikan unggahan multipart dengan memanggil metode `completeMultipartUpload`.

   Anda perlu memberikan ID unggahan, checksum dari seluruh arsip, ukuran arsip (ukuran gabungan dari semua bagian yang Anda unggah), dan nama vault. Amazon Glacier membuat arsip dari bagian yang diunggah dan mengembalikan ID arsip.

### Contoh: Mengunggah Arsip Besar di Bagian Menggunakan AWS SDK untuk Java
<a name="upload-archive-mpu-java-example"></a>

Contoh kode Java berikut menggunakan AWS SDK untuk Java untuk meng-upload arsip ke vault (`examplevault`). Untuk step-by-step petunjuk tentang cara menjalankan contoh ini, lihat[Menjalankan Contoh Java untuk Amazon Glacier Menggunakan Eclipse](using-aws-sdk-for-java.md#setting-up-and-testing-sdk-java). Anda perlu memperbarui kode seperti yang ditunjukkan dengan nama file yang ingin Anda unggah.

 

**catatan**  
Contoh ini berlaku untuk ukuran bagian mulai dari 1 MB hingga 1 GB. Namun, Amazon Glacier mendukung ukuran bagian hingga 4 GB. 

**Example**  

```
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.security.NoSuchAlgorithmException;
import java.util.Arrays;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;

import com.amazonaws.AmazonClientException;
import com.amazonaws.AmazonServiceException;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.glacier.AmazonGlacierClient;
import com.amazonaws.services.glacier.TreeHashGenerator;
import com.amazonaws.services.glacier.model.CompleteMultipartUploadRequest;
import com.amazonaws.services.glacier.model.CompleteMultipartUploadResult;
import com.amazonaws.services.glacier.model.InitiateMultipartUploadRequest;
import com.amazonaws.services.glacier.model.InitiateMultipartUploadResult;
import com.amazonaws.services.glacier.model.UploadMultipartPartRequest;
import com.amazonaws.services.glacier.model.UploadMultipartPartResult;
import com.amazonaws.util.BinaryUtils;

public class ArchiveMPU {

    public static String vaultName = "examplevault";
    // This example works for part sizes up to 1 GB.
    public static String partSize = "1048576"; // 1 MB.
    public static String archiveFilePath = "*** provide archive file path ***";
    public static AmazonGlacierClient client;
    
    public static void main(String[] args) throws IOException {

    	ProfileCredentialsProvider credentials = new ProfileCredentialsProvider();

        client = new AmazonGlacierClient(credentials);
        client.setEndpoint("https://glacier.us-west-2.amazonaws.com/");

        try {
            System.out.println("Uploading an archive.");
            String uploadId = initiateMultipartUpload();
            String checksum = uploadParts(uploadId);
            String archiveId = CompleteMultiPartUpload(uploadId, checksum);
            System.out.println("Completed an archive. ArchiveId: " + archiveId);
            
        } catch (Exception e) {
            System.err.println(e);
        }

    }
    
    private static String initiateMultipartUpload() {
        // Initiate
        InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest()
            .withVaultName(vaultName)
            .withArchiveDescription("my archive " + (new Date()))
            .withPartSize(partSize);            
        
        InitiateMultipartUploadResult result = client.initiateMultipartUpload(request);
        
        System.out.println("ArchiveID: " + result.getUploadId());
        return result.getUploadId();
    }

    private static String uploadParts(String uploadId) throws AmazonServiceException, NoSuchAlgorithmException, AmazonClientException, IOException {

        int filePosition = 0;
        long currentPosition = 0;
        byte[] buffer = new byte[Integer.valueOf(partSize)];
        List<byte[]> binaryChecksums = new LinkedList<byte[]>();
        
        File file = new File(archiveFilePath);
        FileInputStream fileToUpload = new FileInputStream(file);
        String contentRange;
        int read = 0;
        while (currentPosition < file.length())
        {
            read = fileToUpload.read(buffer, filePosition, buffer.length);
            if (read == -1) { break; }
            byte[] bytesRead = Arrays.copyOf(buffer, read);

            contentRange = String.format("bytes %s-%s/*", currentPosition, currentPosition + read - 1);
            String checksum = TreeHashGenerator.calculateTreeHash(new ByteArrayInputStream(bytesRead));
            byte[] binaryChecksum = BinaryUtils.fromHex(checksum);
            binaryChecksums.add(binaryChecksum);
            System.out.println(contentRange);
                        
            //Upload part.
            UploadMultipartPartRequest partRequest = new UploadMultipartPartRequest()
            .withVaultName(vaultName)
            .withBody(new ByteArrayInputStream(bytesRead))
            .withChecksum(checksum)
            .withRange(contentRange)
            .withUploadId(uploadId);               
        
            UploadMultipartPartResult partResult = client.uploadMultipartPart(partRequest);
            System.out.println("Part uploaded, checksum: " + partResult.getChecksum());
            
            currentPosition = currentPosition + read;
        }
        fileToUpload.close();
        String checksum = TreeHashGenerator.calculateTreeHash(binaryChecksums);
        return checksum;
    }

    private static String CompleteMultiPartUpload(String uploadId, String checksum) throws NoSuchAlgorithmException, IOException {
        
        File file = new File(archiveFilePath);

        CompleteMultipartUploadRequest compRequest = new CompleteMultipartUploadRequest()
            .withVaultName(vaultName)
            .withUploadId(uploadId)
            .withChecksum(checksum)
            .withArchiveSize(String.valueOf(file.length()));
        
        CompleteMultipartUploadResult compResult = client.completeMultipartUpload(compRequest);
        return compResult.getLocation();
    }
}
```

# Mengunggah Arsip Besar Menggunakan AWS SDK untuk .NET
<a name="uploading-an-archive-mpu-using-dotnet"></a>

Baik [tingkat tinggi maupun tingkat rendah](using-aws-sdk.md) yang APIs disediakan oleh Amazon SDK for .NET menyediakan metode untuk mengunggah arsip besar di beberapa bagian (lihat). [Mengunggah Arsip di Amazon Glacier](uploading-an-archive.md) 

 
+ API tingkat tinggi menyediakan metode yang dapat Anda gunakan untuk mengunggah arsip dalam ukuran apa pun. Bergantung pada file yang Anda unggah, metode ini mengunggah arsip dalam satu operasi atau menggunakan dukungan unggahan multibagian di Amazon Glacier (Amazon Glacier) untuk mengunggah arsip menjadi beberapa bagian.
+ API tingkat rendah hampir memetakan ke implementasi REST yang mendasarinya. Dengan demikian, ini menyediakan metode untuk mengunggah arsip yang lebih kecil dalam satu operasi dan grup metode yang mendukung unggahan multipart untuk arsip yang lebih besar. Bagian ini menjelaskan mengunggah arsip besar dalam beberapa bagian menggunakan API tingkat rendah.

Untuk informasi lebih lanjut tentang tingkat tinggi dan tingkat rendah APIs, lihat. [Menggunakan AWS SDK untuk .NET dengan Amazon Glacier](using-aws-sdk-for-dot-net.md)

**Topics**
+ [Mengunggah Arsip Besar di Bagian Menggunakan API Tingkat Tinggi AWS SDK untuk .NET](#uploading-an-archive-in-parts-highlevel-using-dotnet)
+ [Mengunggah Arsip Besar di Bagian Menggunakan API Tingkat Rendah AWS SDK untuk .NET](#uploading-an-archive-in-parts-lowlevel-using-dotnet)

## Mengunggah Arsip Besar di Bagian Menggunakan API Tingkat Tinggi AWS SDK untuk .NET
<a name="uploading-an-archive-in-parts-highlevel-using-dotnet"></a>

Anda menggunakan metode API tingkat tinggi yang sama untuk mengunggah arsip kecil atau besar. Berdasarkan ukuran arsip, metode API tingkat tinggi memutuskan apakah akan mengunggah arsip dalam satu operasi atau menggunakan API unggahan multibagian yang disediakan oleh Amazon Glacier. Untuk informasi selengkapnya, lihat [Mengunggah Arsip Menggunakan API Tingkat Tinggi AWS SDK untuk .NET](uploading-an-archive-single-op-using-dotnet.md#uploading-an-archive-single-op-highlevel-using-dotnet).

## Mengunggah Arsip Besar di Bagian Menggunakan API Tingkat Rendah AWS SDK untuk .NET
<a name="uploading-an-archive-in-parts-lowlevel-using-dotnet"></a>

Untuk kontrol unggahan granular, Anda dapat menggunakan API tingkat rendah, tempat Anda dapat mengonfigurasi permintaan dan memproses respons. Berikut adalah langkah-langkah untuk mengunggah arsip besar dalam beberapa bagian menggunakan AWS SDK untuk .NET.

 

1. Buat instans dari kelas `AmazonGlacierClient` (klien). 

   Anda perlu menentukan AWS Wilayah tempat Anda ingin menyimpan arsip. Semua operasi yang Anda lakukan menggunakan klien ini berlaku untuk AWS Wilayah tersebut. 

1. Mulai unggahan multipart dengan memanggil metode `InitiateMultipartUpload`.

   Anda perlu memberi nama vault tempat Anda ingin mengunggah arsip, ukuran bagian yang ingin Anda gunakan untuk mengunggah bagian arsip, dan deskripsi opsional. Anda memberikan informasi ini dengan membuat instans kelas `InitiateMultipartUploadRequest`. Sebagai tanggapan, Amazon Glacier mengembalikan ID unggahan.

1. Unggah bagian dengan memanggil metode `UploadMultipartPart`. 

   Untuk setiap bagian yang Anda unggah, Anda perlu memberi nama vault, rentang byte dalam gabungan arsip final yang akan diunggah di bagian ini, checksum dari data bagian, dan ID unggahan. 

1. Selesaikan unggahan multipart dengan memanggil metode `CompleteMultipartUpload`.

   Anda perlu memberikan ID unggahan, checksum dari seluruh arsip, ukuran arsip (ukuran gabungan dari semua bagian yang Anda unggah), dan nama vault. Amazon Glacier membuat arsip dari bagian yang diunggah dan mengembalikan ID arsip.

### Contoh: Mengunggah Arsip Besar dalam Beberapa Bagian Menggunakan Amazon SDK for .NET
<a name="upload-archive-mpu-dotnet-example"></a>

Contoh kode C \$1 berikut menggunakan AWS SDK untuk .NET untuk mengunggah arsip ke vault ()`examplevault`. Untuk step-by-step petunjuk tentang cara menjalankan contoh ini, lihat[Menjalankan Contoh Kode](using-aws-sdk-for-dot-net.md#setting-up-and-testing-sdk-dotnet). Anda perlu memperbarui kode seperti yang ditunjukkan dengan nama file yang ingin Anda unggah.

**Example**  

```
using System;
using System.Collections.Generic;
using System.IO;
using Amazon.Glacier;
using Amazon.Glacier.Model;
using Amazon.Runtime;

namespace glacier.amazon.com.rproxy.govskope.us.docsamples
{
  class ArchiveUploadMPU
  {
    static string vaultName       = "examplevault";
    static string archiveToUpload = "*** Provide file name (with full path) to upload ***";
    static long partSize          = 4194304; // 4 MB.

    public static void Main(string[] args)
    {
      AmazonGlacierClient client;
      List<string> partChecksumList = new List<string>();
      try
      {
         using (client = new AmazonGlacierClient(Amazon.RegionEndpoint.USWest2)) 
        {
          Console.WriteLine("Uploading an archive.");
          string uploadId  = InitiateMultipartUpload(client);
          partChecksumList = UploadParts(uploadId, client);
          string archiveId = CompleteMPU(uploadId, client, partChecksumList);
          Console.WriteLine("Archive ID: {0}", archiveId);
        }
        Console.WriteLine("Operations successful. To continue, press Enter");
        Console.ReadKey();
      }
      catch (AmazonGlacierException e) { Console.WriteLine(e.Message); }
      catch (AmazonServiceException e) { Console.WriteLine(e.Message); }
      catch (Exception e) { Console.WriteLine(e.Message); }
      Console.WriteLine("To continue, press Enter");
      Console.ReadKey();
    }

    static string InitiateMultipartUpload(AmazonGlacierClient client)
    {
      InitiateMultipartUploadRequest initiateMPUrequest = new InitiateMultipartUploadRequest()
      {

        VaultName = vaultName,
        PartSize = partSize,
        ArchiveDescription = "Test doc uploaded using MPU."
      };

      InitiateMultipartUploadResponse initiateMPUresponse = client.InitiateMultipartUpload(initiateMPUrequest);

      return initiateMPUresponse.UploadId;
    }

    static List<string> UploadParts(string uploadID, AmazonGlacierClient client)
    {
      List<string> partChecksumList = new List<string>();
      long currentPosition = 0;
      var buffer = new byte[Convert.ToInt32(partSize)];

      long fileLength = new FileInfo(archiveToUpload).Length;
      using (FileStream fileToUpload = new FileStream(archiveToUpload, FileMode.Open, FileAccess.Read))
      {
        while (fileToUpload.Position < fileLength)
        {
          Stream uploadPartStream = GlacierUtils.CreatePartStream(fileToUpload, partSize);
          string checksum = TreeHashGenerator.CalculateTreeHash(uploadPartStream);
          partChecksumList.Add(checksum);
          // Upload part.
          UploadMultipartPartRequest uploadMPUrequest = new UploadMultipartPartRequest()
          {

            VaultName = vaultName,
            Body = uploadPartStream,
            Checksum = checksum,
            UploadId = uploadID
          };
          uploadMPUrequest.SetRange(currentPosition, currentPosition + uploadPartStream.Length - 1);
          client.UploadMultipartPart(uploadMPUrequest);

          currentPosition = currentPosition + uploadPartStream.Length;
        }
      }
      return partChecksumList;
    }

    static string CompleteMPU(string uploadID, AmazonGlacierClient client, List<string> partChecksumList)
    {
      long fileLength = new FileInfo(archiveToUpload).Length;
      CompleteMultipartUploadRequest completeMPUrequest = new CompleteMultipartUploadRequest()
      {
        UploadId = uploadID,
        ArchiveSize = fileLength.ToString(),
        Checksum = TreeHashGenerator.CalculateTreeHash(partChecksumList),
        VaultName = vaultName
      };

      CompleteMultipartUploadResponse completeMPUresponse = client.CompleteMultipartUpload(completeMPUrequest);
      return completeMPUresponse.ArchiveId;
    }
  }
}
```

# Mengunggah Arsip Besar dalam Beberapa Bagian Menggunakan REST API
<a name="uploading-an-archive-mpu-using-rest"></a>

Seperti yang dijelaskan dalam [Mengunggah Arsip Besar dalam Beberapa Bagian (Unggahan Multipart)](uploading-archive-mpu.md), unggahan multipart mengacu pada serangkaian operasi yang memungkinkan Anda mengunggah arsip dalam beberapa bagian dan melakukan operasi terkait. Untuk informasi selengkapnya tentang operasi ini, lihat topik referensi API berikut:

 
+ [Memulai Unggahan Multipart (POST multipart-uploads)](api-multipart-initiate-upload.md)
+ [Mengunggah Bagian (PUT UploadID)](api-upload-part.md)
+ [Menyelesaikan Unggahan Multipart (POST uploadID)](api-multipart-complete-upload.md)
+ [Membatalkan Unggahan Multipart (DELETE uploadID)](api-multipart-abort-upload.md)
+ [Mencantumkan Bagian (GET uploadID)](api-multipart-list-parts.md)
+ [Mencantumkan Unggahan Multipart (GET multipart-uploads)](api-multipart-list-uploads.md)