

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

# Mendaftarkan repositori snapshot manual
<a name="managedomains-snapshot-registerdirectory"></a>

Anda perlu mendaftarkan repositori snapshot dengan OpenSearch Service sebelum Anda dapat mengambil snapshot indeks manual. Operasi satu kali ini mengharuskan Anda menandatangani AWS permintaan dengan kredensil yang diizinkan untuk diakses`TheSnapshotRole`, seperti yang dijelaskan dalam. [Prasyarat](managedomains-snapshots.md#managedomains-snapshot-prerequisites)

## Langkah 1: Petakan peran snapshot di OpenSearch Dasbor (jika menggunakan kontrol akses berbutir halus)
<a name="managedomains-snapshot-fgac"></a>

Kontrol akses detail memperkenalkan langkah tambahan saat mendaftarkan repositori. Bahkan jika Anda menggunakan autentikasi basic HTTP untuk semua tujuan lain, Anda perlu memetakan peran `manage_snapshots` ke IAM role Anda yang memiliki izin `iam:PassRole` untuk meneruskan `TheSnapshotRole`.

1. Arahkan ke plugin OpenSearch Dasbor untuk domain OpenSearch Layanan Anda. Anda dapat menemukan titik akhir Dasbor di dasbor domain Anda di konsol OpenSearch Layanan. 

1. Dari menu utama, pilih **Keamanan**, **Peran**, lalu pilih peran **manage\$1snapshots**.

1. Pilih **Pengguna yang Dipetakan**, **Kelola pemetaan**. 

1. Tambahkan ARN dari peran yang memiliki izin untuk lulus. `TheSnapshotRole` Letakkan peran ARNs di bawah peran **Backend**.

   ```
   arn:aws:iam::123456789123:role/role-name
   ```

1. Pilih **Peta** dan konfirmasikan pengguna atau peran muncul di bawah **Pengguna yang dipetakan**.

## Langkah 2: Mendaftarkan repositori
<a name="managedomains-snapshot-register"></a>

Tab **Snapshots** berikut menunjukkan cara mendaftarkan direktori snapshot. Untuk opsi khusus untuk mengenkripsi snapshot manual dan mendaftarkan snapshot setelah bermigrasi ke domain baru, lihat tab yang relevan.

------
#### [ Snapshots ]

Untuk mendaftarkan repositori snapshot, kirim permintaan PUT ke titik akhir domain OpenSearch Layanan. Anda dapat menggunakan [curl](https://curl.se/docs/manpage.html#--aws-sigv4), [contoh klien Python](#managedomains-snapshot-client-python)[, Postman,](https://www.getpostman.com/) atau metode lain untuk mengirim permintaan yang ditandatangani untuk mendaftarkan repositori snapshot. Perhatikan bahwa Anda tidak dapat menggunakan permintaan PUT di konsol OpenSearch Dasbor untuk mendaftarkan repositori.

Permintaan mengambil format berikut:

```
PUT domain-endpoint/_snapshot/my-snapshot-repo-name
{
  "type": "s3",
  "settings": {
    "bucket": "amzn-s3-demo-bucket",
    "base_path": "my/snapshot/directory",
    "region": "region",
    "role_arn": "arn:aws:iam::123456789012:role/TheSnapshotRole"
  }
}
```

**catatan**  
Nama repositori tidak dapat dimulai dengan “cs-”. Selain itu, Anda tidak boleh menulis ke repositori yang sama dari beberapa domain. Hanya satu domain yang harus memiliki akses tulis ke repositori.

Jika domain Anda berada dalam virtual private cloud (VPC), komputer Anda harus terhubung ke VPC agar permintaan berhasil mendaftarkan repositori snapshot. Mengakses VPC bervariasi menurut konfigurasi jaringan, tetapi kemungkinan melibatkan koneksi ke VPN atau jaringan perusahaan. Untuk memeriksa apakah Anda dapat mencapai domain OpenSearch Layanan, `https://your-vpc-domain.region.es.amazonaws.com` navigasikan ke browser web dan verifikasi bahwa Anda menerima respons JSON default.

Jika bucket Amazon S3 Anda berada di tempat lain Wilayah AWS selain OpenSearch domain Anda, tambahkan parameter `"endpoint": "s3.amazonaws.com"` ke permintaan.

------
#### [ Encrypted snapshots ]

Saat ini Anda tidak dapat menggunakan kunci AWS Key Management Service (KMS) untuk mengenkripsi snapshot manual, tetapi Anda dapat melindunginya menggunakan enkripsi sisi server (SSE).

Untuk mengaktifkan SSE dengan kunci terkelola S3 untuk bucket yang Anda gunakan sebagai repositori snapshot, tambahkan `"server_side_encryption": true` ke blok permintaan PUT. `"settings"` *Untuk informasi selengkapnya, lihat [Menggunakan enkripsi sisi server dengan kunci terkelola Amazon S3 (SSE-S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html) di Panduan Pengguna Layanan Penyimpanan Sederhana Amazon.*

Atau, Anda dapat menggunakan AWS KMS kunci untuk enkripsi sisi server pada bucket S3 yang Anda gunakan sebagai repositori snapshot. Jika Anda menggunakan pendekatan ini, pastikan untuk memberikan `TheSnapshotRole` izin ke AWS KMS kunci yang digunakan untuk mengenkripsi bucket S3. Untuk informasi selengkapnya, lihat [Kebijakan utama di AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html).

------
#### [ Domain migration ]

Mendaftarkan repositori snapshot adalah operasi satu kali. Namun, untuk bermigrasi dari satu domain ke domain lain, Anda harus mendaftarkan repositori snapshot yang sama pada domain lama dan domain baru. Nama repositori adalah semaunya.

Pertimbangkan panduan berikut saat bermigrasi ke domain baru atau mendaftarkan repositori yang sama dengan beberapa domain:
+ Saat mendaftarkan repositori pada domain baru, tambahkan `"readonly": true` ke blok `"settings"` dari permintaan PUT. Pengaturan ini mencegah Anda dari secara tidak sengaja menimpa data dari domain lama. Hanya satu domain yang harus memiliki akses tulis ke repositori.
+ Jika Anda memigrasikan data ke domain yang berbeda Wilayah AWS, (misalnya, dari domain lama dan bucket yang terletak di us-east-2 ke domain baru di us-west-2), ganti dengan di pernyataan PUT dan coba lagi permintaan tersebut. `"region": "region"` `"endpoint": "s3.amazonaws.com"`

------

### Menggunakan sampel klien Python
<a name="managedomains-snapshot-client-python"></a>

Klien Python lebih mudah untuk diotomatisasi daripada permintaan HTTP sederhana dan memiliki kemampuan penggunaan kembali yang lebih baik. Jika anda memilih untuk menggunakan metode ini untuk mendaftarkan repositori snapshot, simpan sampel kode Python berikut sebagai file Python, seperti `register-repo.py`. Klien memerlukan paket [AWS SDK untuk Python (Boto3)](https://aws.amazon.com/sdk-for-python/), [request](http://docs.python-requests.org/) dan [requests-aws4auth](https://pypi.python.org/pypi/requests-aws4auth). Klien berisi contoh-contoh yang dikomentari untuk operasi snapshot lainnya.

Memperbarui variabel berikut dalam kode sampel: `host`, `region`, `path`, dan `payload`.

```
import boto3
import requests
from requests_aws4auth import AWS4Auth

host = '' # domain endpoint
region = '' # e.g. us-west-1
service = 'es'
credentials = boto3.Session().get_credentials()
awsauth = AWS4Auth(credentials.access_key, credentials.secret_key, region, service, session_token=credentials.token)

# Register repository

path = '/_snapshot/my-snapshot-repo-name' # the OpenSearch API endpoint
url = host + path

payload = {
  "type": "s3",
  "settings": {
    "bucket": "amzn-s3-demo-bucket",
    "base_path": "my/snapshot/directory",
    "region": "us-west-1",
    "role_arn": "arn:aws:iam::123456789012:role/snapshot-role"
  }
}

headers = {"Content-Type": "application/json"}

r = requests.put(url, auth=awsauth, json=payload, headers=headers)

print(r.status_code)
print(r.text)

# # Take snapshot
#
# path = '/_snapshot/my-snapshot-repo-name/my-snapshot'
# url = host + path
#
# r = requests.put(url, auth=awsauth)
#
# print(r.text)
#
# # Delete index
#
# path = 'my-index'
# url = host + path
#
# r = requests.delete(url, auth=awsauth)
#
# print(r.text)
#
# # Restore snapshot (all indexes except Dashboards and fine-grained access control)
#
# path = '/_snapshot/my-snapshot-repo-name/my-snapshot/_restore'
# url = host + path
#
# payload = {
#   "indices": "-.kibana*,-.opendistro_security,-.opendistro-*",
#   "include_global_state": False
# }
#
# headers = {"Content-Type": "application/json"}
#
# r = requests.post(url, auth=awsauth, json=payload, headers=headers)
#
# print(r.text)
# 
# # Restore snapshot (one index)
#
# path = '/_snapshot/my-snapshot-repo-name/my-snapshot/_restore'
# url = host + path
#
# payload = {"indices": "my-index"}
#
# headers = {"Content-Type": "application/json"}
#
# r = requests.post(url, auth=awsauth, json=payload, headers=headers)
#
# print(r.text)
```