Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Inscription d'un référentiel d'instantanés manuels
Vous devez enregistrer un référentiel de clichés auprès du OpenSearch Service avant de pouvoir prendre des instantanés d'index manuels. Cette opération unique nécessite que vous signiez votre AWS demande avec des informations d'identification autoriséesTheSnapshotRole
, comme décrit dansPrérequis.
Étape 1 : Cartographier le rôle du snapshot dans les OpenSearch tableaux de bord (si vous utilisez un contrôle d'accès précis)
Le contrôle précis des accès introduit une étape supplémentaire lors de l'inscription d'un référentiel. Même si vous utilisez l'authentification de HTTP base à toutes autres fins, vous devez manage_snapshots
associer le IAM rôle à votre rôle iam:PassRole
autorisé à transmettreTheSnapshotRole
.
-
Accédez au plugin OpenSearch Dashboards correspondant à votre domaine OpenSearch de service. Vous pouvez trouver le point de terminaison Dashboards sur le tableau de bord de votre domaine sur la console OpenSearch de service.
-
Dans le menu principal, choisissez Security (Sécurité), Roles (Rôles), puis sélectionnez le rôle manage_snapshots.
-
Choisissez Mapped users (Utilisateurs mappés), Manage mapping (Gérer le mappage).
-
Ajoutez ARN le rôle autorisé à transmettre
TheSnapshotRole
. Placez le rôle ARNs sous Rôles du backend.arn:aws:iam::
123456789123
:role/role-name
-
Sélectionnez Map (Mapper) et vérifiez que l'utilisateur ou le rôle s'affiche sous Mapped users (Utilisateurs mappés).
Étape 2 : Inscrire un référentiel
L'onglet Snapshots suivant montre comment enregistrer un répertoire de snapshots. Pour les options spécifiques au chiffrement d'un instantané manuel et à l'enregistrement d'un instantané après la migration vers un nouveau domaine, consultez les onglets correspondants.
Utilisation de l'exemple de client Python
Le client Python est plus facile à automatiser qu'une simple HTTP requête et offre une meilleure réutilisabilité. Si vous choisissez d'utiliser cette méthode pour enregistrer un référentiel d'instantanés, enregistrez l'exemple de code Python suivant en tant que fichier Python, comme register-repo.py
. Le client a besoin des packages AWS SDK for Python (Boto3)
Mettez à jour les variables suivantes dans l'exemple de code : host
, region
, path
et 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)