Mendaftarkan repositori snapshot manual - OpenSearch Layanan Amazon

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

Mendaftarkan repositori snapshot manual

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 diaksesTheSnapshotRole, seperti yang dijelaskan dalam. Prasyarat

Langkah 1: Petakan peran snapshot di OpenSearch Dasbor (jika menggunakan kontrol akses berbutir halus)

Kontrol akses detail memperkenalkan langkah tambahan saat mendaftarkan repositori. Bahkan jika Anda menggunakan otentikasi HTTP dasar untuk semua tujuan lain, Anda perlu memetakan manage_snapshots peran ke IAM peran Anda yang memiliki iam:PassRole izin untuk diteruskan. 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.

  2. Dari menu utama, pilih Keamanan, Peran, lalu pilih peran manage_snapshots.

  3. Pilih Pengguna yang Dipetakan, Kelola pemetaan.

  4. Tambahkan peran ARN yang memiliki izin untuk diteruskanTheSnapshotRole. Letakkan peran ARNs di bawah peran Backend.

    arn:aws:iam::123456789123:role/role-name
  5. Pilih Peta dan konfirmasikan pengguna atau peran muncul di bawah Pengguna yang dipetakan.

Langkah 2: Mendaftarkan repositori

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 PUT permintaan ke titik akhir domain OpenSearch Layanan. Anda dapat menggunakan curl, contoh klien Python, Postman, atau metode lain untuk mengirim permintaan yang ditandatangani untuk mendaftarkan repositori snapshot. Perhatikan bahwa Anda tidak dapat menggunakan PUT permintaan di konsol OpenSearch Dasbor untuk mendaftarkan repositori.

Permintaan mengambil format berikut:

PUT domain-endpoint/_snapshot/my-snapshot-repo-name { "type": "s3", "settings": { "bucket": "s3-bucket-name", "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 permintaan VPC agar berhasil mendaftarkan repositori snapshot. Mengakses VPC bervariasi berdasarkan konfigurasi jaringan, tetapi kemungkinan melibatkan koneksi ke jaringan VPN atau 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 JSON respons 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 kunci terkelola S3 untuk bucket yang Anda gunakan sebagai repositori snapshot, tambahkan "server_side_encryption": true ke blok permintaan. "settings" PUT Untuk informasi selengkapnya, lihat Melindungi data menggunakan enkripsi sisi server dengan kunci enkripsi terkelola Amazon S3 di Panduan Pengguna Amazon Simple Storage Service.

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.

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 "settings" blok 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 dan coba lagi permintaan tersebut. "region": "region" "endpoint": "s3.amazonaws.com" PUT

Menggunakan sampel klien Python

Klien Python lebih mudah diotomatisasi daripada HTTP permintaan sederhana dan memiliki kegunaan 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 for Python (Boto3), request dan 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": "s3-bucket-name", "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)