

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

# Perhitungan tanda tangan untuk header trailing (unggahan berpotongan) (AWS Versi Tanda Tangan 4)
<a name="sigv4-streaming-trailers"></a>

Saat mengotentikasi permintaan menggunakan `Authorization` header, Anda juga dapat mengunggah payload dalam potongan. Saat Anda mengirim data untuk objek dalam potongan, Anda juga memiliki opsi untuk menyertakan header trailing. (Untuk informasi selengkapnya, lihat [Perhitungan Tanda Tangan untuk Header Otorisasi: Mentransfer Payload dalam Beberapa Potongan (Unggahan Terpotong) (AWS Versi Tanda Tangan 4)](sigv4-streaming.md).) Bagian ini menjelaskan langkah-langkah yang perlu Anda ambil ketika Anda ingin menyertakan header trailing di akhir upload beberapa chunk Anda.

 

**penting**  
Ketika Anda menyertakan header trailing, Anda harus mengirim yang berikut di header awal Anda:   
Anda `x-amz-content-sha256` harus mengatur nilai yang sesuai yang menunjukkan trailer akan disertakan. Untuk melihat nilai yang dapat diterima`x-amz-content-sha256`, lihat[Permintaan Otentikasi: Menggunakan Header Otorisasi (AWS Versi Tanda Tangan 4)](sigv4-auth-using-authorization-header.md).
Anda harus mengatur `x-amz-trailer` untuk menunjukkan konten yang Anda sertakan di header trailing Anda.

 Header trailing hanya dikirim setelah potongan telah diunggah. Potongan sebelumnya dikirim seperti biasa dan ditandatangani seperti yang dijelaskan di bagian sebelumnya, termasuk mengirim potongan terakhir dengan muatan 0 byte. Header trailing disertakan sebagai potongan mereka sendiri dan dikirim setelah potongan terakhir dengan muatan 0 byte. Misalnya, jika data Anda diakhiri dengan potongan 100 KB, Anda akan mengirim yang berikut: 
+ Potongan data sebelumnya
+ 100 KB potongan akhir objek
+ Potongan 0 byte menandakan akhir objek
+ Potongan header yang tertinggal

## Contoh: Memeriksa perhitungan tanda tangan
<a name="example-signature-calculations-trailing-header"></a>

Anda dapat menggunakan contoh di bagian ini sebagai referensi untuk memeriksa perhitungan tanda tangan dalam kode Anda. Sebelum Anda meninjau contoh, perhatikan hal berikut:

 
+  Perhitungan tanda tangan dalam contoh ini menggunakan contoh kredentif keamanan berikut.    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/id_id/AmazonS3/latest/developerguide/sigv4-streaming-trailers.html)
+ Semua contoh menggunakan stempel waktu permintaan 20130524T000000Z (). `Fri, 24 May 2013 00:00:00 GMT`
+ Semua contoh digunakan `examplebucket` sebagai nama bucket.
+ Bucket diasumsikan berada di Wilayah AS Timur (Virginia Utara), dan kredenSIAL serta `Scope` `Signing Key` perhitungan digunakan `us-east-1` sebagai penentu Wilayah.  Untuk informasi selengkapnya, lihat [Wilayah dan titik akhir](https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region) dalam *Referensi Umum Amazon Web Services*. 
+ Anda dapat menggunakan gaya jalur atau permintaan gaya yang dihosting virtual. Contoh berikut menggunakan permintaan gaya yang dihosting virtual, misalnya: 

  ```
  https://examplebucket.s3.amazonaws.com/photos/photo1.jpg
  ```

  Untuk informasi selengkapnya, lihat Hosting [ Virtual Bucket ](https://docs.aws.amazon.com/AmazonS3/latest/userguide/VirtualHosting.html) di Panduan Pengguna Layanan Penyimpanan Sederhana * Amazon*.

Contoh berikut mengirimkan `PUT` permintaan untuk mengunggah objek. Perhitungan tanda tangan mengasumsikan sebagai berikut:

 
+ Anda mengunggah file teks 65 KB, dan konten file adalah string satu karakter yang terdiri dari huruf 'a'. 
+ Ukuran potongan adalah 64 KB. Akibatnya, payload diunggah dalam tiga potongan, 64 KB, 1 KB, dan potongan terakhir dengan 0 byte data potongan. 
+ Objek yang dihasilkan memiliki nama kunci`chunkObject.txt`.
+ Anda meminta `REDUCED_REDUNDANCY` sebagai kelas penyimpanan dengan menambahkan header `x-amz-storage-class` permintaan.
+ Transfer termasuk nilai checksum CRC32C sebagai header trailing.

Untuk informasi tentang tindakan API, lihat [ PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html). Sintaks permintaan umum adalah sebagai berikut: 

```
PUT /examplebucket/chunkObject.txt HTTP/1.1
Host: s3.amazonaws.com
x-amz-date: 20130524T000000Z 
x-amz-storage-class: REDUCED_REDUNDANCY
Authorization: {{SignatureToBeCalculated}}
x-amz-content-sha256: STREAMING-AWS4-HMAC-SHA256-PAYLOAD-TRAILER
Content-Encoding: aws-chunked
x-amz-decoded-content-length: 66560
x-amz-trailer: x-amz-checksum-crc32c
Content-Length: 66946
{{<Payload>}}
```



Langkah-langkah berikut menunjukkan perhitungan tanda tangan.

1. 

**Tanda tangan benih - Buat String untuk Ditandatangani**

   1. 

**CanonicalRequest**

       

      ```
      PUT
      /examplebucket/chunkObject.txt
      
      content-encoding:aws-chunked
      host:s3.amazonaws.com
      x-amz-content-sha256:STREAMING-AWS4-HMAC-SHA256-PAYLOAD-TRAILER
      x-amz-date:20130524T000000Z
      x-amz-decoded-content-length:66560
      x-amz-storage-class:REDUCED_REDUNDANCY
      x-amz-trailer:x-amz-checksum-crc32c
      
      content-encoding;host;x-amz-content-sha256;x-amz-date;x-amz-decoded-content-length;x-amz-storage-class;x-amz-trailer
      STREAMING-AWS4-HMAC-SHA256-PAYLOAD-TRAILER
      ```

      Dalam permintaan kanonik, baris ketiga kosong karena tidak ada parameter kueri dalam permintaan. Baris terakhir adalah string konstan yang disediakan sebagai nilai Payload yang di-hash, yang harus sama dengan nilai. `x-amz-content-sha256 header`

   1. 

**StringToSign**

       

      ```
      AWS4-HMAC-SHA256
      20130524T000000Z
      20130524/us-east-1/s3/aws4_request
      44d48b8c2f70eae815a0198cc73d7a546a73a93359c070abbaa5e6c7de112559
      ```

       

       
**catatan**  
Untuk informasi tentang setiap baris dalam string yang akan ditandatangani, lihat diagram yang menjelaskan perhitungan tanda tangan benih.

1. 

**SigningKey**

    

   ```
   signing key = HMAC-SHA256(HMAC-SHA256(HMAC-SHA256(HMAC-SHA256("AWS4" + "{{<YourSecretAccessKey>}}","20130524"),"us-east-1"),"s3"),"aws4_request")						
   ```

    

1. 

**Tanda Tangan Benih**

    

   ```
   106e2a8a18243abcf37539882f36619c00e2dfc72633413f02d3b74544bfeb8e
   ```

    

1. 

**Header otorisasi**

   Header Otorisasi yang dihasilkan adalah sebagai berikut:

    

   ```
   AWS4-HMAC-SHA256 Credential=AKIAIOSFODNN7EXAMPLE/20130524/us-east-1/s3/aws4_request,SignedHeaders=content-encoding;content-length;host;x-amz-content-sha256;x-amz-date;x-amz-decoded-content-length;x-amz-storage-class,Signature=106e2a8a18243abcf37539882f36619c00e2dfc72633413f02d3b74544bfeb8e
   ```

    

1. 

**Potongan 1: (65536 byte, dengan nilai 97 untuk huruf 'a')**

   1. Potongan string untuk ditandatangani:

      ```
      AWS4-HMAC-SHA256-PAYLOAD
      20130524T000000Z
      20130524/us-east-1/s3/aws4_request
      106e2a8a18243abcf37539882f36619c00e2dfc72633413f02d3b74544bfeb8e
      e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
      bf718b6f653bebc184e1479f1935b8da974d701b893afcf49e701f3e2f9f9c5a
      ```

       
**catatan**  
Untuk informasi tentang setiap baris dalam string yang akan ditandatangani, lihat diagram di topik sebelumnya ([Menghitung Tanda Tangan Benih](sigv4-streaming.md#sigv4-chunked-upload-sig-calculation-chunk0)) yang menunjukkan berbagai komponen string untuk ditandatangani. Misalnya, tiga baris terakhir terdiri dari yang berikut:  
{{previous-signature}}
`hash("")`
`hash({{current-chunk-data}})`

   1. Tanda tangan potongan:

      ```
      b474d8862b1487a5145d686f57f013e54db672cee1c953b3010fb58501ef5aa2
      ```

   1. Data potongan dikirim:

      ```
      10000;chunk-signature=b474d8862b1487a5145d686f57f013e54db672cee1c953b3010fb58501ef5aa2
      <65536-bytes>
      ```

1. 

**Potongan 2: (1024 byte, dengan nilai 97 untuk huruf 'a')**

   1. Potongan string untuk ditandatangani:

      ```
      AWS4-HMAC-SHA256-PAYLOAD
      20130524T000000Z
      20130524/us-east-1/s3/aws4_request
      b474d8862b1487a5145d686f57f013e54db672cee1c953b3010fb58501ef5aa2
      e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
      2edc986847e209b4016e141a6dc8716d3207350f416969382d431539bf292e4a
      ```

   1. Tanda tangan potongan:

      ```
      1c1344b170168f8e65b41376b44b20fe354e373826ccbbe2c1d40a8cae51e5c7
      ```

   1. Data potongan dikirim:

      ```
      400;chunk-signature=1c1344b170168f8e65b41376b44b20fe354e373826ccbbe2c1d40a8cae51e5c7
      <1024-bytes>
      ```

1. 

**Potongan 3: (0 byte data)**

   1. Potongan string untuk ditandatangani:

      ```
      AWS4-HMAC-SHA256-PAYLOAD
      20130524T000000Z
      20130524/us-east-1/s3/aws4_request
      1c1344b170168f8e65b41376b44b20fe354e373826ccbbe2c1d40a8cae51e5c7
      e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
      e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
      ```

   1. Tanda tangan potongan:

      ```
      2ca2aba2005185cf7159c6277faf83795951dd77a3a99e6e65d5c9f85863f992
      ```

   1. Data potongan dikirim:

      ```
      0;chunk-signature=2ca2aba2005185cf7159c6277faf83795951dd77a3a99e6e65d5c9f85863f992
      ```

1. 

**Potongan 4: Header yang tertinggal**

   1. String potongan trailer untuk ditandatangani:

      ```
      AWS4-HMAC-SHA256-TRAILER
      20130524T000000Z
      20130524/us-east-1/s3/aws4_request
      2ca2aba2005185cf7159c6277faf83795951dd77a3a99e6e65d5c9f85863f992
      1e376db7e1a34a8ef1c4bcee131a2d60a1cb62503747488624e10995f448d774
      ```
**catatan**  
Dua baris terakhir adalah `previous-signature` (tanda tangan potongan data 0 byte), `hash` ({{trailing-checksum-header-name}}:{{base64-encoded-trailing-checksum-value}}\\ n).  
Hash dihitung sebagai berikut tanpa spasi:   
Nama header checksum di belakang
Sebuah usus besar (`:`)
Nilai checksum trailing yang dikodekan base64
Karakter baris baru (`\n`). 
Dalam contoh ini, di mana Anda menggunakan algoritma `crc32c` hash, dengan nilai checksum yang dikodekan base64`sOO8/Q==`, Anda dapat mewakili perhitungan sebagai berikut:. `hash('x-amz-checksum-crc32c:sOO8/Q==\n')`

   1. Tanda tangan potongan:

      ```
      d81f82fc3505edab99d459891051a732e8730629a2e4a59689829ca17fe2e435
      ```

   1. Data potongan dikirim:

      ```
      x-amz-checksum-crc32c:sOO8/Q==
      x-amz-trailer-signature:d81f82fc3505edab99d459891051a732e8730629a2e4a59689829ca17fe2e435
      ```