

 **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 di Amazon Glacier
<a name="uploading-an-archive"></a>

Amazon Glacier (Amazon Glacier) menyediakan konsol manajemen, yang dapat Anda gunakan untuk membuat dan menghapus brankas. Namun, Anda tidak dapat mengunggah arsip ke Amazon Glacier dengan menggunakan konsol manajemen. Untuk mengunggah data, seperti foto, video, dan dokumen lainnya, Anda harus menggunakan AWS CLI atau menulis kode untuk membuat permintaan, dengan menggunakan REST API secara langsung atau dengan menggunakan Amazon SDKs. 

Untuk informasi tentang menggunakan Amazon Glacier dengan AWS CLI, buka Referensi [AWS CLI untuk Amazon](https://docs.aws.amazon.com/cli/latest/reference/glacier/index.html) Glacier. Untuk menginstal AWS CLI, pergi ke [AWS Command Line Interface](https://aws.amazon.com/cli/). Topik **Pengunggahan** berikut menjelaskan cara mengunggah arsip ke Amazon Glacier dengan menggunakan Amazon SDK for Java, Amazon SDK for .NET, dan REST API.

**Topics**
+ [Opsi untuk Mengunggah Arsip ke Amazon Glacier](#uploading-an-archive-overview)
+ [Mengunggah Arsip dalam Satu Operasi](uploading-archive-single-operation.md)
+ [Mengunggah Arsip Besar dalam Beberapa Bagian (Unggahan Multipart)](uploading-archive-mpu.md)

## Opsi untuk Mengunggah Arsip ke Amazon Glacier
<a name="uploading-an-archive-overview"></a>

Bergantung pada ukuran data yang Anda unggah, Amazon Glacier menawarkan opsi berikut: 
+ **Unggah arsip dalam satu operasi** – Dalam satu operasi, Anda dapat mengunggah arsip berukuran mulai dari 1 byte hingga 4 GB. Namun, kami mendorong pelanggan Amazon Glacier untuk menggunakan unggahan multipart untuk mengunggah arsip lebih dari 100 MB. Untuk informasi selengkapnya, lihat [Mengunggah Arsip dalam Satu Operasi](uploading-archive-single-operation.md).
+ **Unggah arsip dalam beberapa bagian** – Dengan menggunakan API unggahan multipart, Anda dapat mengunggah arsip besar, hingga sekitar 40.000 GB (10.000 \$1 4 GB). 

  Panggilan API unggahan multipart dirancang untuk meningkatkan pengalaman unggah untuk arsip yang lebih besar. Anda dapat mengunggah arsip dalam beberapa bagian. Bagian-bagian ini dapat diunggah secara independen, dalam urutan apa pun, dan secara paralel. Jika satu bagian gagal diunggah, Anda hanya perlu mengunggah kembali bagian tersebut dan bukan seluruh arsip. Anda dapat menggunakan unggahan multipart untuk arsip berukuran mulai dari 1 byte hingga sekitar 40.000 GB. Untuk informasi selengkapnya, lihat [Mengunggah Arsip Besar dalam Beberapa Bagian (Unggahan Multipart)](uploading-archive-mpu.md).

**penting**  
Inventaris lemari besi Amazon Glacier hanya diperbarui sekali sehari. Saat mengunggah arsip, Anda tidak akan segera melihat arsip baru yang ditambahkan ke vault Anda (di konsol atau di daftar inventaris vault yang diunduh) hingga inventaris vault diperbarui.

### Menggunakan AWS Snowball Edge Layanan
<a name="using-import-export-service-for-glacier"></a>

AWS Snowball Edge mempercepat pemindahan sejumlah besar data masuk dan keluar AWS menggunakan perangkat milik Amazon, melewati internet. Untuk informasi selengkapnya, lihat halaman detail [AWS Snowball Edge](https://aws.amazon.com/snowball). 

Untuk mengunggah data yang ada ke Amazon Glacier (Amazon Glacier), Anda dapat mempertimbangkan untuk menggunakan salah satu jenis AWS Snowball Edge perangkat untuk mengimpor data ke Amazon S3, lalu memindahkannya ke kelas penyimpanan Amazon Glacier untuk arsip menggunakan aturan siklus hidup. Saat Anda mentransisikan objek Amazon S3 ke kelas penyimpanan Amazon Glacier, Amazon S3 secara internal menggunakan Amazon Glacier untuk penyimpanan tahan lama dengan biaya lebih rendah. Meskipun objek disimpan di Amazon Glacier, mereka tetap menjadi objek Amazon S3 yang Anda kelola di Amazon S3, dan Anda tidak dapat mengaksesnya langsung melalui Amazon Glacier.

[*Untuk informasi selengkapnya tentang konfigurasi siklus hidup Amazon S3 dan objek transisi ke kelas penyimpanan Amazon Glacier, lihat Objek [Manajemen dan Transisi Siklus Hidup](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html)* Objek di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-transition-general-considerations.html)

# Mengunggah Arsip dalam Satu Operasi
<a name="uploading-archive-single-operation"></a>

Seperti yang dijelaskan di [Mengunggah Arsip di Amazon Glacier](uploading-an-archive.md), Anda dapat mengunggah arsip yang lebih kecil dalam satu operasi. Namun, kami mendorong pelanggan Amazon Glacier (Amazon Glacier) untuk menggunakan Unggahan Multipart untuk mengunggah arsip lebih dari 100 MB. 

**Topics**
+ [Mengunggah Arsip dalam Satu Operasi Menggunakan AWS Command Line Interface](uploading-an-archive-single-op-using-cli.md)
+ [Mengunggah Arsip dalam Satu Operasi Menggunakan AWS SDK untuk Java](uploading-an-archive-single-op-using-java.md)
+ [Mengunggah Arsip dalam Satu Operasi Menggunakan Amazon Glacier AWS SDK untuk .NET di Amazon](uploading-an-archive-single-op-using-dotnet.md)
+ [Mengunggah Arsip dalam Satu Operasi Menggunakan REST API](uploading-an-archive-single-op-using-rest.md)

# Mengunggah Arsip dalam Satu Operasi Menggunakan AWS Command Line Interface
<a name="uploading-an-archive-single-op-using-cli"></a>

Anda dapat mengunggah arsip di Amazon Glacier (Amazon Glacier) menggunakan (). AWS Command Line Interface AWS CLI

**Topics**
+ [(Prasyarat) Menyiapkan AWS CLI](#Creating-Vaults-CLI-Setup)
+ [Contoh: Unggah Arsip Menggunakan AWS CLI](#Uploading-Archives-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
     ```

## Contoh: Unggah Arsip Menggunakan AWS CLI
<a name="Uploading-Archives-CLI-Implementation"></a>

Untuk mengunggah arsip, Anda harus membuat brankas. Untuk informasi selengkapnya tentang membuat brankas, lihat. [Membuat Vault di Amazon Glacier](creating-vaults.md)

1. Gunakan `upload-archive` perintah untuk menambahkan arsip ke brankas yang ada. Pada contoh di bawah ini ganti `vault name` dan`account ID`. Untuk `body` parameter tentukan jalur ke file yang ingin Anda unggah.

   ```
   aws glacier upload-archive --vault-name awsexamplevault --account-id 123456789012 --body archive.zip
   ```

1.  Keluaran yang diharapkan

   ```
   {
       "archiveId": "kKB7ymWJVpPSwhGP6ycSOAekp9ZYe_--zM_mw6k76ZFGEIWQX-ybtRDvc2VkPSDtfKmQrj0IRQLSGsNuDp-AJVlu2ccmDSyDUmZwKbwbpAdGATGDiB3hHO0bjbGehXTcApVud_wyDw",
       "checksum": "969fb39823836d81f0cc028195fcdbcbbe76cdde932d4646fa7de5f21e18aa67",
       "location": "/123456789012/vaults/awsexamplevault/archives/kKB7ymWJVpPSwhGP6ycSOAekp9ZYe_--zM_mw6k76ZFGEIWQX-ybtRDvc2VkPSDtfKmQrj0IRQLSGsNuDp-AJVlu2ccmDSyDUmZwKbwbpAdGATGDiB3hHO0bjbGehXTcApVud_wyDw"
   }
   ```

   Setelah selesai perintah akan menampilkan ID arsip, checksum, dan lokasi di Amazon Glacier. *Untuk informasi selengkapnya tentang perintah upload-archive, lihat [upload-archive](https://docs.aws.amazon.com/cli/latest/reference/glacier/upload-archive.html) di Command Reference.AWS CLI *

# Mengunggah Arsip dalam Satu Operasi Menggunakan AWS SDK untuk Java
<a name="uploading-an-archive-single-op-using-java"></a>

Baik [tingkat tinggi dan tingkat rendah](using-aws-sdk.md) yang APIs disediakan oleh Amazon SDK for Java menyediakan metode untuk mengunggah arsip.

**Topics**
+ [Mengunggah Arsip Menggunakan API Tingkat Tinggi AWS SDK untuk Java](#uploading-an-archive-single-op-high-level-using-java)
+ [Mengunggah Arsip dalam Satu Operasi Menggunakan API Tingkat Rendah AWS SDK untuk Java](#uploading-an-archive-single-op-low-level-using-java)

## Mengunggah Arsip Menggunakan API Tingkat Tinggi AWS SDK untuk Java
<a name="uploading-an-archive-single-op-high-level-using-java"></a>

Kelas `ArchiveTransferManager` dari API tingkat tinggi menyediakan metode `upload`, yang dapat Anda gunakan untuk mengunggah arsip ke vault.

 

**catatan**  
Anda dapat menggunakan metode `upload` untuk mengunggah arsip kecil atau besar. Bergantung pada ukuran arsip yang Anda unggah, metode ini menentukan apakah akan mengunggahnya dalam satu operasi atau menggunakan API unggahan multipart untuk mengunggah arsip dalam beberapa bagian.

### Contoh: Mengunggah Arsip Menggunakan API Tingkat Tinggi AWS SDK untuk Java
<a name="upload-archive-high-level-java-example"></a>

Contoh kode Java berikut mengunggah arsip ke vault (`examplevault`) di Wilayah US West (Oregon) (`us-west-2`). Untuk daftar AWS Wilayah dan titik akhir yang didukung, lihat[Mengakses Amazon Glacier](amazon-glacier-accessing.md). 

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 vault yang ingin Anda unggah dan nama file yang ingin Anda unggah.

**Example**  

```
import java.io.File;
import java.io.IOException;
import java.util.Date;

import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.glacier.AmazonGlacierClient;
import com.amazonaws.services.glacier.transfer.ArchiveTransferManager;
import com.amazonaws.services.glacier.transfer.UploadResult;


public class ArchiveUploadHighLevel {
    public static String vaultName = "*** provide vault name ***";
    public static String archiveToUpload = "*** provide name of file to upload ***";
    
    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 {
            ArchiveTransferManager atm = new ArchiveTransferManager(client, credentials);
            
            UploadResult result = atm.upload(vaultName, "my archive " + (new Date()), new File(archiveToUpload));
            System.out.println("Archive ID: " + result.getArchiveId());
            
        } catch (Exception e)
        {
            System.err.println(e);
        }
    }
}
```

## Mengunggah Arsip dalam Satu Operasi Menggunakan API Tingkat Rendah AWS SDK untuk Java
<a name="uploading-an-archive-single-op-low-level-using-java"></a>

API tingkat rendah menyediakan metode untuk semua operasi arsip. Berikut adalah langkah-langkah untuk mengunggah arsip menggunakan AWS SDK untuk Java.

 

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

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

1. Berikan informasi permintaan dengan membuat instans kelas `UploadArchiveRequest`.

   Selain data yang ingin Anda unggah, Anda perlu menyediakan checksum (hash pohon SHA-256) dari muatan, nama vault, panjang konten data, dan ID akun Anda. 

   Jika Anda tidak memberikan ID akun, ID akun yang terkait dengan kredensial yang Anda berikan untuk menandatangani permintaan diambil. Untuk informasi selengkapnya, lihat [Menggunakan AWS SDK untuk Java dengan Amazon Glacier](using-aws-sdk-for-java.md). 

1. Jalankan metode `uploadArchive` dengan menyediakan objek permintaan sebagai parameter. 

   Sebagai tanggapan, Amazon Glacier (Amazon Glacier) mengembalikan ID arsip dari arsip yang baru diunggah. 

Potongan kode Java berikut menggambarkan langkah-langkah sebelumnya. 

```
AmazonGlacierClient client;

UploadArchiveRequest request = new UploadArchiveRequest()
    .withVaultName("*** provide vault name ***")
    .withChecksum(checksum)
    .withBody(new ByteArrayInputStream(body))
    .withContentLength((long)body.length);

UploadArchiveResult uploadArchiveResult = client.uploadArchive(request);

System.out.println("Location (includes ArchiveID): " + uploadArchiveResult.getLocation());
```

### Contoh: Mengunggah Arsip dalam Operasi Tunggal Menggunakan API Tingkat Rendah AWS SDK untuk Java
<a name="uploding-single-archive-using-java-example"></a>

Contoh kode Java berikut menggunakan AWS SDK untuk Java untuk mengunggah 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 vault yang ingin Anda unggah dan nama file yang ingin Anda unggah.

```
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.glacier.AmazonGlacierClient;
import com.amazonaws.services.glacier.TreeHashGenerator;
import com.amazonaws.services.glacier.model.UploadArchiveRequest;
import com.amazonaws.services.glacier.model.UploadArchiveResult;
public class ArchiveUploadLowLevel {

    public static String vaultName = "*** provide vault name ****";
    public static String archiveFilePath = "*** provide to file upload ****";
    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-east-1.amazonaws.com/");

        try {
            // First open file and read.
            File file = new File(archiveFilePath);
            InputStream is = new FileInputStream(file); 
            byte[] body = new byte[(int) file.length()];
            is.read(body);
                                    
            // Send request.
            UploadArchiveRequest request = new UploadArchiveRequest()
                .withVaultName(vaultName)
                .withChecksum(TreeHashGenerator.calculateTreeHash(new File(archiveFilePath))) 
                .withBody(new ByteArrayInputStream(body))
                .withContentLength((long)body.length);
            
            UploadArchiveResult uploadArchiveResult = client.uploadArchive(request);
            
            System.out.println("ArchiveID: " + uploadArchiveResult.getArchiveId());
            
        } catch (Exception e)
        {
            System.err.println("Archive not uploaded.");
            System.err.println(e);
        }
    }
}
```

# Mengunggah Arsip dalam Satu Operasi Menggunakan Amazon Glacier AWS SDK untuk .NET di Amazon
<a name="uploading-an-archive-single-op-using-dotnet"></a>

Baik [tingkat tinggi dan tingkat rendah](using-aws-sdk.md) yang APIs disediakan oleh Amazon SDK untuk.NET menyediakan metode untuk mengunggah arsip dalam satu operasi.

**Topics**
+ [Mengunggah Arsip Menggunakan API Tingkat Tinggi AWS SDK untuk .NET](#uploading-an-archive-single-op-highlevel-using-dotnet)
+ [Mengunggah Arsip dalam Operasi Tunggal Menggunakan API Tingkat Rendah AWS SDK untuk .NET](#uploading-an-archive-single-op-lowlevel-using-dotnet)

## Mengunggah Arsip Menggunakan API Tingkat Tinggi AWS SDK untuk .NET
<a name="uploading-an-archive-single-op-highlevel-using-dotnet"></a>

Kelas `ArchiveTransferManager` dari API tingkat tinggi menyediakan metode `Upload` yang dapat Anda gunakan untuk mengunggah arsip ke vault. 

**catatan**  
Anda dapat menggunakan metode `Upload` untuk mengunggah file kecil atau besar. Bergantung pada ukuran file yang Anda unggah, metode ini menentukan apakah akan mengunggahnya dalam satu operasi atau menggunakan API unggahan multipart untuk mengunggah file dalam beberapa bagian.

### Contoh: Mengunggah Arsip Menggunakan API Tingkat Tinggi AWS SDK untuk .NET
<a name="upload-archive-highlevel-any-size-dotnet"></a>

Contoh kode C\$1 berikut mengunggah arsip ke vault (`examplevault`) di Wilayah US West (Oregon). 

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 Amazon.Glacier;
using Amazon.Glacier.Transfer;
using Amazon.Runtime;

namespace glacier.amazon.com.rproxy.govskope.us.docsamples
{
  class ArchiveUploadHighLevel
  {
    static string vaultName = "examplevault"; 
    static string archiveToUpload = "*** Provide file name (with full path) to upload ***";

    public static void Main(string[] args)
    {
       try
      {
         var manager = new ArchiveTransferManager(Amazon.RegionEndpoint.USWest2);
         // Upload an archive.
         string archiveId = manager.Upload(vaultName, "upload archive test", archiveToUpload).ArchiveId;
         Console.WriteLine("Archive ID: (Copy and save this ID for use in other examples.) : {0}", archiveId);
         Console.WriteLine("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();
    }
  }
}
```

## Mengunggah Arsip dalam Operasi Tunggal Menggunakan API Tingkat Rendah AWS SDK untuk .NET
<a name="uploading-an-archive-single-op-lowlevel-using-dotnet"></a>

API tingkat rendah menyediakan metode untuk semua operasi arsip. Berikut adalah langkah-langkah untuk mengunggah arsip menggunakan AWS SDK untuk .NET.

 

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

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

1. Berikan informasi permintaan dengan membuat instans kelas `UploadArchiveRequest`.

   Selain data yang ingin Anda unggah, Anda perlu menyediakan checksum (hash pohon SHA-256) dari muatan, nama vault, dan ID akun Anda. 

   Jika Anda tidak memberikan ID akun, ID akun yang terkait dengan kredensial yang Anda berikan untuk menandatangani permintaan akan diambil. Untuk informasi selengkapnya, lihat [Menggunakan AWS SDK untuk .NET dengan Amazon Glacier](using-aws-sdk-for-dot-net.md). 

1. Jalankan metode `UploadArchive` dengan menyediakan objek permintaan sebagai parameter. 

   Sebagai tanggapan, Amazon Glacier mengembalikan ID arsip dari arsip yang baru diunggah. 

### Contoh: Mengunggah Arsip dalam Operasi Tunggal Menggunakan API Tingkat Rendah AWS SDK untuk .NET
<a name="upload-archive-single-op-lowlevel-dotnet"></a>

Contoh kode \$1C berikut menjelaskan langkah sebelumnya. Contoh menggunakan file AWS SDK untuk .NET untuk mengunggah arsip ke vault (`examplevault`). 

**catatan**  
Untuk informasi tentang REST API yang mendasarinya guna mengunggah arsip dalam satu permintaan, lihat [Mengunggah Arsip (POST archive)](api-archive-post.md).

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.IO;
using Amazon.Glacier;
using Amazon.Glacier.Model;
using Amazon.Runtime;

namespace glacier.amazon.com.rproxy.govskope.us.docsamples
{
  class ArchiveUploadSingleOpLowLevel
  {
    static string vaultName       = "examplevault";
    static string archiveToUpload = "*** Provide file name (with full path) to upload ***";

    public static void Main(string[] args)
    {
      AmazonGlacierClient client;
      try
      {
         using (client = new AmazonGlacierClient(Amazon.RegionEndpoint.USWest2))
        {
          Console.WriteLine("Uploading an archive.");
          string archiveId = UploadAnArchive(client);
          Console.WriteLine("Archive ID: {0}", archiveId);
        }
      }
      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 UploadAnArchive(AmazonGlacierClient client)
    {
      using (FileStream fileStream = new FileStream(archiveToUpload, FileMode.Open, FileAccess.Read))
      {
        string treeHash = TreeHashGenerator.CalculateTreeHash(fileStream);
        UploadArchiveRequest request = new UploadArchiveRequest()
        {
          VaultName = vaultName,
          Body = fileStream,
          Checksum = treeHash
        };
        UploadArchiveResponse response = client.UploadArchive(request);
        string archiveID = response.ArchiveId;
        return archiveID;
      }
    }
  }
}
```

# Mengunggah Arsip dalam Satu Operasi Menggunakan REST API
<a name="uploading-an-archive-single-op-using-rest"></a>

Anda dapat menggunakan panggilan API Unggah Arsip untuk mengunggah arsip dalam satu operasi. Lihat informasi yang lebih lengkap di [Mengunggah Arsip (POST archive)](api-archive-post.md).

# 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)