Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Registrazione di un repository di snapshot manuali
È necessario registrare un repository di istantanee con OpenSearch Service prima di poter scattare istantanee dell'indice manualmente. Questa operazione unica richiede la firma della AWS richiesta con credenziali a cui è consentito l'accessoTheSnapshotRole, come descritto in. Prerequisiti
Passaggio 1: mappare il ruolo dell'istantanea nelle OpenSearch dashboard (se si utilizza un controllo di accesso granulare)
Fine-grained il controllo degli accessi introduce un passaggio aggiuntivo per la registrazione di un repository. Anche se si utilizza l'autenticazione di base HTTP per tutti gli altri scopi, è necessario mappare il ruolo manage_snapshots al ruolo IAM che dispone delle autorizzazioni iam:PassRole per inviare TheSnapshotRole.
-
Vai al plug-in OpenSearch Dashboards per il tuo dominio di servizio. OpenSearch Puoi trovare l'endpoint Dashboards nella dashboard del tuo dominio nella OpenSearch console di servizio.
-
Dal menu principale scegliere Sicurezza, Ruoli e selezionare il ruolo manage_snapshots.
-
Scegliere Utenti mappati, Gestisci mappatura.
-
Aggiungi l'ARN del ruolo che dispone delle autorizzazioni per inviare
TheSnapshotRole. Inserisci gli ARN dei ruoli in Backend roles (Ruoli di back-end).arn:aws:iam::123456789123:role/role-name -
Selezionare Mappa e confermare che l'utente o il ruolo venga visualizzato in Utenti mappati.
Fase 2: Registrazione di un repository
La seguente scheda Istantanee mostra come registrare una directory di istantanee. Per le opzioni specifiche relative alla crittografia di un'istantanea manuale e alla registrazione di un'istantanea dopo la migrazione a un nuovo dominio, consulta le schede pertinenti.
Utilizzo del client Python di esempio
Il client Python è più facile da automatizzare rispetto a una semplice richiesta HTTP e ha una migliore riusabilità. Se si sceglie di utilizzare questo metodo per registrare un repository di snapshot, salvare il seguente codice Python di esempio come file Python, ad esempio register-repo.py. Il client richiede i pacchetti AWS SDK per Python (Boto3)
Aggiornare le seguenti variabili nel codice di esempio:host, region, path e 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)