

 **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, AWS Region 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.

# Menandatangani Permintaan
<a name="amazon-glacier-signing-requests"></a>

Amazon Glacier mengharuskan Anda mengautentikasi setiap permintaan yang Anda kirim dengan menandatangani permintaan. Untuk menandatangani permintaan, Anda menghitung tanda tangan digital menggunakan fungsi hash kriptografi. Hash kriptografi adalah fungsi yang mengembalikan nilai hash unik berdasarkan input. Input ke fungsi hash termasuk teks permintaan Anda dan secret access key Anda. Fungsi hash mengembalikan nilai hash yang Anda sertakan dalam permintaan sebagai tanda tangan Anda. Tanda tangan adalah bagian header `Authorization` dari permintaan Anda. 

Setelah menerima permintaan Anda, Amazon Glacier menghitung ulang tanda tangan menggunakan fungsi hash yang sama dan masukan yang Anda gunakan untuk menandatangani permintaan. Jika tanda tangan yang dihasilkan cocok dengan tanda tangan dalam permintaan, Amazon Glacier memproses permintaan tersebut. Jika tidak, permintaan ditolak. 

[Amazon Glacier mendukung otentikasi AWS menggunakan Signature Version 4.](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html) Proses untuk menghitung tanda tangan dapat dibagi menjadi tiga tugas:

 
+   [Tugas 1: Membuat Permintaan Kanonik](https://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html)

  Atur ulang permintaan HTTP Anda ke dalam format kanonik. Menggunakan bentuk kanonik diperlukan karena Amazon Glacier menggunakan bentuk kanonik yang sama ketika menghitung ulang tanda tangan untuk dibandingkan dengan yang Anda kirim. 
+   [Tugas 2: Membuat String to Sign](https://docs.aws.amazon.com/general/latest/gr/sigv4-create-string-to-sign.html)

  Buat string yang akan Anda gunakan sebagai salah satu nilai input untuk fungsi hash kriptografi Anda. String, yang disebut *string to sign*, adalah rangkaian dari nama algoritme hash, tanggal permintaan, string *cakupan kredensial*, dan permintaan kanonikalisasi dari tugas sebelumnya. String *lingkup kredensi* itu sendiri adalah rangkaian tanggal, AWS Wilayah, dan informasi layanan.
+   [Tugas 3: Membuat tanda tangan](https://docs.aws.amazon.com/general/latest/gr/sigv4-calculate-signature.html)

  Buat tanda tangan untuk permintaan Anda menggunakan fungsi hash kriptografi yang menerima dua string input: *string to sign* dan *kunci turunan*. *Kunci turunan* dihitung dengan memulai dengan kunci akses rahasia Anda dan menggunakan string *cakupan kredensi* untuk membuat serangkaian kode otentikasi pesan berbasis hash (). HMACs Perhatikan bahwa fungsi hash yang digunakan dalam langkah penandatanganan ini bukanlah algoritma hash pohon yang digunakan di Amazon Glacier yang mengunggah data. APIs

**Topics**
+ [Contoh Perhitungan Tanda Tangan](#example-signature-calculation)
+ [Menghitung Tanda Tangan untuk Operasi Streaming](#signature-calculation-streaming)

## Contoh Perhitungan Tanda Tangan
<a name="example-signature-calculation"></a>

Contoh berikut memandu Anda melalui detail pembuatan tanda tangan untuk [Membuat Vault (PUT vault)](api-vault-put.md). Contoh dapat digunakan sebagai referensi untuk memeriksa metode perhitungan tanda tangan Anda. Untuk informasi selengkapnya, lihat [Menandatangani permintaan AWS API](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_aws-signing.html) di *Panduan Pengguna IAM*. 

Contoh tersebut mengasumsikan sebagai berikut:
+ Stempel waktu permintaan adalah `Fri, 25 May 2012 00:24:53 GMT`.
+ Titik akhir adalah Wilayah US East (N. Virginia) ` us-east-1`. 

Sintaks permintaan umum (termasuk isi JSON) adalah: 

```
PUT /-/vaults/examplevault HTTP/1.1
Host: glacier.us-east-1.amazonaws.com
Date: Fri, 25 May 2012 00:24:53 GMT
Authorization: {{SignatureToBeCalculated}}
x-amz-glacier-version: 2012-06-01
```

Bentuk kanonik permintaan yang dihitung untuk [Tugas 1: Membuat Permintaan Kanonik](#SignatureCalculationTask1) adalah:

 

```
PUT
/-/vaults/examplevault

host:glacier.us-east-1.amazonaws.com
x-amz-date:20120525T002453Z
x-amz-glacier-version:2012-06-01

host;x-amz-date;x-amz-glacier-version
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
```

Baris terakhir dari permintaan kanonik adalah hash dari isi permintaan. Selain itu, perhatikan baris ketiga kosong dalam permintaan kanonik. Hal ini karena tidak ada parameter query untuk API ini. 

*String to sign* untuk [Tugas 2: Membuat String to Sign](#SignatureCalculationTask2) adalah:

 

```
AWS4-HMAC-SHA256
20120525T002453Z
20120525/us-east-1/glacier/aws4_request
5f1da1a2d0feb614dd03d71e87928b8e449ac87614479332aced3a701f916743
```

 

Baris pertama *string to sign* adalah algoritme, baris kedua adalah stempel waktu, baris ketiga adalah *cakupan kredensial*, dan baris terakhir adalah hash permintaan kanonik dari [Tugas 1: Membuat Permintaan Kanonik](#SignatureCalculationTask1). Nama layanan untuk digunakan dalam cakupan kredensial adalah `glacier`.

Untuk [Tugas 3: Membuat tanda tangan](#SignatureCalculationTask3), *kunci turunan* dapat digambarkan sebagai:

 

```
derived key = HMAC(HMAC(HMAC(HMAC("AWS4" + YourSecretAccessKey,"20120525"),"us-east-1"),"glacier"),"aws4_request")
```

Jika secret access key, `wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY` , digunakan, tanda tangan yang dihitung adalah:

 

```
3ce5b2f2fffac9262b4da9256f8d086b4aaf42eba5f111c21681a65a127b7c2a
```

 

Langkah terakhir adalah membangun header `Authorization`. Untuk access key demonstrasi `AKIAIOSFODNN7EXAMPLE`, header (dengan jeda baris yang ditambahkan untuk keterbacaan) adalah:

 

```
Authorization: AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20120525/us-east-1/glacier/aws4_request, 
SignedHeaders=host;x-amz-date;x-amz-glacier-version, 
Signature=3ce5b2f2fffac9262b4da9256f8d086b4aaf42eba5f111c21681a65a127b7c2a
```

 

## Menghitung Tanda Tangan untuk Operasi Streaming
<a name="signature-calculation-streaming"></a>

[Mengunggah Arsip (POST archive)](api-archive-post.md) dan [Mengunggah Bagian (PUT UploadID)](api-upload-part.md) adalah operasi streaming yang mengharuskan Anda menyertakan header tambahan `x-amz-content-sha256` saat menandatangani dan mengirim permintaan Anda. Langkah-langkah penandatanganan untuk operasi streaming sama persis dengan operasi lain, dengan penambahan header streaming.

Perhitungan header streaming `x-amz-content-sha256` didasarkan pada SHA256 hash dari seluruh konten (payload) yang akan diunggah. Perhatikan bahwa perhitungan ini berbeda dari hash SHA256 pohon ([Checksum Komputasi](checksum-calculations.md)). Selain kasus sepele, nilai hash SHA 256 dari data payload akan berbeda dari hash SHA256 pohon dari data payload. 

Jika data payload ditentukan sebagai array byte, Anda dapat menggunakan cuplikan kode Java berikut untuk menghitung hash. SHA256 

 

```
public static byte[] computePayloadSHA256Hash2(byte[] payload) throws NoSuchAlgorithmException, IOException {
    BufferedInputStream bis = 
       new BufferedInputStream(new ByteArrayInputStream(payload));
    MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
    byte[] buffer = new byte[4096];
    int bytesRead = -1;
    while ( (bytesRead = bis.read(buffer, 0, buffer.length)) != -1 ) {
        messageDigest.update(buffer, 0, bytesRead);
    }
    return messageDigest.digest();
}
```

Demikian pula, dalam C \# Anda dapat menghitung SHA256 hash dari data payload seperti yang ditunjukkan pada cuplikan kode berikut. 

 

```
public static byte[] CalculateSHA256Hash(byte[] payload)
{
    SHA256 sha256 = System.Security.Cryptography.SHA256.Create();
    byte[] hash = sha256.ComputeHash(payload);

    return hash;
}
```

### Contoh Perhitungan Tanda Tangan untuk API Streaming
<a name="example-signature-calculation-streaming"></a>

Contoh berikut memandu Anda melalui detail pembuatan tanda tangan untuk[Mengunggah Arsip (POST archive)](api-archive-post.md), salah satu dari dua streaming APIs di Amazon Glacier. Contoh tersebut mengasumsikan sebagai berikut:
+ Stempel waktu permintaan adalah `Mon, 07 May 2012 00:00:00 GMT`.
+ Titik akhir adalah Wilayah US East (N. Virginia), us-east-1.
+ Muatan konten adalah string “Selamat datang di Amazon Glacier.” 

Sintaks permintaan umum (termasuk isi JSON) ditampilkan dalam contoh di bawah ini. Perhatikan bahwa header ` x-amz-content-sha256` disertakan. Dalam contoh sederhana ini, `x-amz-sha256-tree-hash` dan `x-amz-content-sha256` adalah nilai yang sama. Namun, tidak demikian untuk unggahan arsip yang lebih besar dari 1 MB.

```
POST /-/vaults/examplevault HTTP/1.1
Host: glacier.us-east-1.amazonaws.com
Date: Mon, 07 May 2012 00:00:00 GMT
x-amz-archive-description: my archive
x-amz-sha256-tree-hash: SHA256 tree hash
x-amz-content-sha256: SHA256 payload hash  
Authorization: {{SignatureToBeCalculated}}
x-amz-glacier-version: 2012-06-01
```

Bentuk kanonik permintaan yang dihitung untuk [Tugas 1: Membuat Permintaan Kanonik](#SignatureCalculationTask1) ditampilkan di bawah ini. Perhatikan bahwa header streaming `x-amz-content-sha256` disertakan dengan nilainya. Ini berarti Anda harus membaca payload dan menghitung SHA256 hash terlebih dahulu dan kemudian menghitung tanda tangan.

 

```
POST
/-/vaults/examplevault

host:glacier.us-east-1.amazonaws.com
x-amz-content-sha256:726e392cb4d09924dbad1cc0ba3b00c3643d03d14cb4b823e2f041cff612a628
x-amz-date:20120507T000000Z
x-amz-glacier-version:2012-06-01

host;x-amz-content-sha256;x-amz-date;x-amz-glacier-version
726e392cb4d09924dbad1cc0ba3b00c3643d03d14cb4b823e2f041cff612a628
```

Sisa perhitungan tanda tangan mengikuti langkah-langkah yang diuraikan dalam [Contoh Perhitungan Tanda Tangan](#example-signature-calculation). Header `Authorization` yang menggunakan secret access key `wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY` dan access key `AKIAIOSFODNN7EXAMPLE` ditunjukkan di bawah ini (dengan jeda baris yang ditambahkan untuk keterbacaan):

 

```
Authorization=AWS4-HMAC-SHA256 
Credential=AKIAIOSFODNN7EXAMPLE/20120507/us-east-1/glacier/aws4_request, 
SignedHeaders=host;x-amz-content-sha256;x-amz-date;x-amz-glacier-version, 
Signature=b092397439375d59119072764a1e9a144677c43d9906fd98a5742c57a2855de6
```

 