

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

# Tulis snapshot Amazon EBS dengan EBS langsung APIs
<a name="writesnapshots"></a>

Langkah-langkah berikut menjelaskan cara menggunakan langsung EBS APIs untuk menulis snapshot tambahan:

1. Gunakan StartSnapshot tindakan dan tentukan ID snapshot induk untuk memulai snapshot sebagai snapshot tambahan dari yang sudah ada, atau hilangkan ID snapshot induk untuk memulai snapshot baru. Tindakan ini mengembalikan ID snapshot baru, yang berada dalam status tertunda.

1. Gunakan PutSnapshotBlock tindakan dan tentukan ID snapshot yang tertunda untuk menambahkan data ke dalamnya dalam bentuk blok individual. Anda harus menentukan SHA256 checksum yang dikodekan Base64 untuk blok data yang dikirimkan. Layanan ini menghitung checksum data yang diterima dan memvalidasinya dengan checksum yang Anda tentukan. Tindakan gagal jika checksum tidak cocok.

1. Setelah selesai menambahkan data ke snapshot yang tertunda, gunakan tindakan CompleteSnapshot untuk memulai alur kerja asinkronous yang menyegel snapshot dan mengubah statusnya menjadi selesai.

Ulangi langkah-langkah ini untuk membuat snapshot inkremental baru menggunakan snapshot yang dibuat sebelumnya sebagai induk.

Misalnya, dalam diagram berikut, snapshot A adalah snapshot baru pertama yang dimulai. Snapshot A digunakan sebagai snapshot induk untuk memulai snapshot B. Snapshot B digunakan sebagai snapshot induk untuk memulai dan membuat snapshot C. Snapshot A, B, dan C adalah snapshot inkremental. Snapshot A digunakan untuk membuat volume EBS 1. Snapshot D dibuat dari volume EBS 1. Snapshot D adalah snapshot inkremental A; bukan snapshot inkremental dari B atau C.

![EBS langsung APIs digunakan untuk membuat snapshot tambahan.](http://docs.aws.amazon.com/id_id/ebs/latest/userguide/images/ebs-apis-write.png)


Contoh berikut menunjukkan cara menulis snapshot menggunakan langsung EBS. APIs

**Topics**
+ [Mulai snapshot](#start-snapshot)
+ [Menempatkan data ke dalam snapshot](#put-data)
+ [Menyelesaikan snapshot](#complete-snapshot)

## Mulai snapshot
<a name="start-snapshot"></a>

------
#### [ AWS CLI ]

Contoh perintah [start-snapshot](https://docs.aws.amazon.com/cli/latest/reference/ebs/start-snapshot.html) berikut memulai snapshot `8` GiB, menggunakan snapshot `snap-123EXAMPLE1234567` sebagai snapshot induk. Snapshot baru akan berupa snapshot inkremental dari snapshot induk. Snapshot berpindah ke status kesalahan jika tidak ada permintaan put atau complete yang dibuat untuk snapshot dalam periode waktu tunggu `60` menit yang ditentukan. Token klien `550e8400-e29b-41d4-a716-446655440000` memastikan idempotensi permintaan tersebut. Jika token klien dihilangkan, AWS SDK secara otomatis menghasilkan satu untuk Anda. Untuk informasi selengkapnya tentang idempotensi, lihat [Pastikan idempotensi dalam permintaan API StartSnapshot](ebs-direct-api-idempotency.md).

```
aws ebs start-snapshot --volume-size {{8}} --parent-snapshot {{snap-123EXAMPLE1234567}} --timeout {{60}} --client-token {{550e8400-e29b-41d4-a716-446655440000}}
```

Contoh respons berikut untuk perintah sebelumnya menunjukkan ID snapshot, ID akun AWS , status, ukuran volume dalam GiB, dan ukuran blok di snapshot. Snapshot dimulai dalam status `pending`. Tentukan ID snapshot di bagian perintah `put-snapshot-block` berikutnya untuk menuliskan data ke snapshot, lalu menggunakan perintah `complete-snapshot` untuk menyelesaikan snapshot dan mengubahnya status menjadi `completed`.

```
{
    "SnapshotId": "snap-0aaEXAMPLEe306d62",
    "OwnerId": "111122223333",
    "Status": "pending",
    "VolumeSize": 8,
    "BlockSize": 524288
}
```

------
#### [ AWS API ]

Permintaan [StartSnapshot](https://docs.aws.amazon.com/ebs/latest/APIReference/API_StartSnapshot.html)contoh berikut memulai snapshot `8` GiB, menggunakan snapshot `snap-123EXAMPLE1234567` sebagai snapshot induk. Snapshot baru akan berupa snapshot inkremental dari snapshot induk. Snapshot berpindah ke status kesalahan jika tidak ada permintaan put atau complete yang dibuat untuk snapshot dalam periode waktu tunggu `60` menit yang ditentukan. Token klien `550e8400-e29b-41d4-a716-446655440000` memastikan idempotensi permintaan tersebut. Jika token klien dihilangkan, AWS SDK secara otomatis menghasilkan satu untuk Anda. Untuk informasi selengkapnya tentang idempotensi, lihat [Pastikan idempotensi dalam permintaan API StartSnapshot](ebs-direct-api-idempotency.md).

```
POST /snapshots HTTP/1.1
Host: ebs.us-east-2.amazonaws.com
Accept-Encoding: identity
User-Agent: {{<User agent parameter>}}
X-Amz-Date: 20200618T040724Z
Authorization: {{<Authentication parameter>}}

{
    "VolumeSize": {{8}},
    "ParentSnapshot": {{snap-123EXAMPLE1234567}},
    "ClientToken": "{{550e8400-e29b-41d4-a716-446655440000}}",
    "Timeout": {{60}}
}
```

Contoh respons berikut untuk permintaan sebelumnya menunjukkan ID snapshot, ID akun AWS , status, ukuran volume dalam GiB, dan ukuran blok di snapshot. Snapshot dimulai dalam status tertunda. Tentukan ID snapshot di permintaan `PutSnapshotBlocks` berikutnya untuk menuliskan data ke snapshot.

```
HTTP/1.1 201 Created
x-amzn-RequestId: 929e6eb9-7183-405a-9502-5b7da37c1b18
Content-Type: application/json
Content-Length: 181
Date: Thu, 18 Jun 2020 04:07:29 GMT
Connection: keep-alive

{
    "BlockSize": 524288,
    "Description": null,
    "OwnerId": "138695307491",
    "Progress": null,
    "SnapshotId": "snap-052EXAMPLEc85d8dd",
    "StartTime": null,
    "Status": "pending",
    "Tags": null,
    "VolumeSize": 8
}
```

------

## Menempatkan data ke dalam snapshot
<a name="put-data"></a>

------
#### [ AWS CLI ]

[put-snapshot-block](https://docs.aws.amazon.com/cli/latest/reference/ebs/put-snapshot-block.html)Contoh perintah berikut menulis `524288` Bytes data untuk memblokir indeks `1000` pada snapshot`snap-0aaEXAMPLEe306d62`. Checksum `QOD3gmEQOXATfJx2Aa34W4FU2nZGyXfqtsUuktOw8DM=` berkode Base64 dibuat menggunakan algoritme `SHA256`. Data yang ditransmisikan terdapat di file `/tmp/data`.

```
aws ebs put-snapshot-block --snapshot-id {{snap-0aaEXAMPLEe306d62}} --block-index {{1000}} --data-length {{524288}} --block-data {{/tmp/data}} --checksum {{QOD3gmEQOXATfJx2Aa34W4FU2nZGyXfqtsUuktOw8DM=}} --checksum-algorithm {{SHA256}}
```

Contoh respons untuk perintah sebelumnya berikut ini mengonfirmasi panjang data, checksum, dan algoritma checksum untuk data yang diterima oleh layanan.

```
{
    "DataLength": "524288",
    "Checksum": "QOD3gmEQOXATfJx2Aa34W4FU2nZGyXfqtsUuktOw8DM=",
    "ChecksumAlgorithm": "SHA256"
}
```

------
#### [ AWS API ]

[PutSnapshot](https://docs.aws.amazon.com/ebs/latest/APIReference/API_PutSnapshotBlock.html)Contoh permintaan berikut menulis `524288` Bytes data untuk memblokir indeks `1000` pada snapshot`snap-052EXAMPLEc85d8dd`. Checksum `QOD3gmEQOXATfJx2Aa34W4FU2nZGyXfqtsUuktOw8DM=` dengan enkode Base64 dibuat menggunakan algoritma `SHA256`. Data ditransmisikan dalam badan permintaan dan direpresentasikan seperti {{BlockData}} pada contoh berikut.

```
PUT /snapshots/{{snap-052EXAMPLEc85d8dd}}/{{blocks}}/1000 HTTP/1.1
Host: ebs.us-east-2.amazonaws.com
Accept-Encoding: identity
x-amz-Data-Length: {{524288}}
x-amz-Checksum: {{QOD3gmEQOXATfJx2Aa34W4FU2nZGyXfqtsUuktOw8DM=}}
x-amz-Checksum-Algorithm: {{SHA256}}
User-Agent: {{<User agent parameter>}}
X-Amz-Date: 20200618T042215Z
X-Amz-Content-SHA256: UNSIGNED-PAYLOAD
Authorization: {{<Authentication parameter>}}
          
          {{BlockData}}
```

Contoh respons untuk permintaan sebelumnya berikut ini mengonfirmasi panjang data, checksum, dan algoritma checksum untuk data yang diterima oleh layanan. 

```
HTTP/1.1 201 Created
x-amzn-RequestId: 643ac797-7e0c-4ad0-8417-97b77b43c57b
x-amz-Checksum: QOD3gmEQOXATfJx2Aa34W4FU2nZGyXfqtsUuktOw8DM=
x-amz-Checksum-Algorithm: SHA256
Content-Type: application/json
Content-Length: 2
Date: Thu, 18 Jun 2020 04:22:12 GMT
Connection: keep-alive

{}
```

------

## Menyelesaikan snapshot
<a name="complete-snapshot"></a>

------
#### [ AWS CLI ]

Contoh perintah [complete-snapshot](https://docs.aws.amazon.com/cli/latest/reference/ebs/complete-snapshot.html) berikut menyelesaikan snapshot `snap-0aaEXAMPLEe306d62`. Perintah menentukan bahwa `5` blok ditulis untuk snapshot. Checksum `6D3nmwi5f2F0wlh7xX8QprrJBFzDX8aacdOcA3KCM3c=` mewakili checksum untuk set data lengkap yang ditulis ke snapshot. Untuk informasi selengkapnya tentang checksum, lihat [Gunakan APIs checksum langsung EBS untuk memvalidasi data snapshot](ebsapis-using-checksums.md) sebelumnya di dalam panduan ini.

```
aws ebs complete-snapshot --snapshot-id {{snap-0aaEXAMPLEe306d62}} --changed-blocks-count {{5}} --checksum {{6D3nmwi5f2F0wlh7xX8QprrJBFzDX8aacdOcA3KCM3c=}} --checksum-algorithm {{SHA256}} --checksum-aggregation-method {{LINEAR}}
```

Berikut ini adalah contoh tanggapan untuk perintah sebelumnya.

```
{
    "Status": "pending"
}
```

------
#### [ AWS API ]

[CompleteSnapshot](https://docs.aws.amazon.com/ebs/latest/APIReference/API_CompleteSnapshot.html)Contoh permintaan berikut melengkapi snapshot`snap-052EXAMPLEc85d8dd`. Perintah menentukan bahwa `5` blok ditulis untuk snapshot. Checksum `6D3nmwi5f2F0wlh7xX8QprrJBFzDX8aacdOcA3KCM3c=` merepresentasikan checksum untuk set data lengkap yang ditulis ke snapshot.

```
POST /snapshots/completion/{{snap-052EXAMPLEc85d8dd}} HTTP/1.1
Host: ebs.us-east-2.amazonaws.com
Accept-Encoding: identity
x-amz-ChangedBlocksCount: 5
x-amz-Checksum: {{6D3nmwi5f2F0wlh7xX8QprrJBFzDX8aacdOcA3KCM3c=}}
x-amz-Checksum-Algorithm: {{SHA256}}
x-amz-Checksum-Aggregation-Method: {{LINEAR}}
User-Agent: {{<User agent parameter>}}
X-Amz-Date: 20200618T043158Z
Authorization: {{<Authentication parameter>}}
```

Berikut ini adalah contoh tanggapan untuk permintaan sebelumnya.

```
HTTP/1.1 202 Accepted
x-amzn-RequestId: 06cba5b5-b731-49de-af40-80333ac3a117
Content-Type: application/json
Content-Length: 20
Date: Thu, 18 Jun 2020 04:31:50 GMT
Connection: keep-alive

{"Status":"pending"}
```

------