Inscription d'un référentiel d'instantanés manuels - Amazon OpenSearch Service

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.

  1. 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.

  2. Dans le menu principal, choisissez Security (Sécurité), Roles (Rôles), puis sélectionnez le rôle manage_snapshots.

  3. Choisissez Mapped users (Utilisateurs mappés), Manage mapping (Gérer le mappage).

  4. Ajoutez ARN le rôle autorisé à transmettreTheSnapshotRole. Placez le rôle ARNs sous Rôles du backend.

    arn:aws:iam::123456789123:role/role-name
  5. 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.

Snapshots

Pour enregistrer un référentiel de snapshots, envoyez une PUT demande au point de terminaison du domaine de OpenSearch service. Vous pouvez utiliser curl, le client Python d'exemple, Postman ou une autre méthode pour envoyer une demande signée afin d'enregistrer le référentiel de snapshots. Notez que vous ne pouvez pas utiliser de PUT requête dans la console OpenSearch Dashboards pour enregistrer le référentiel.

La demande se présente au format suivant :

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" } }
Note

Les noms de référentiels ne peuvent pas commencer par « cs- ». De plus, vous ne devriez pas écrire dans le même référentiel à partir de plusieurs domaines. Un seul domaine doit avoir un accès en écriture au référentiel.

Si votre domaine réside dans un cloud privé virtuel (VPC), votre ordinateur doit être connecté au VPC pour que la demande enregistre correctement le référentiel de clichés. L'accès à un VPC varie en fonction de la configuration du réseau, mais implique probablement la connexion à un réseau VPN ou à un réseau d'entreprise. Pour vérifier que vous pouvez accéder au domaine de OpenSearch service, accédez https://your-vpc-domain.region.es.amazonaws.com à un navigateur Web et vérifiez que vous recevez la JSON réponse par défaut.

Lorsque votre compartiment Amazon S3 se trouve dans un autre domaine Région AWS que votre OpenSearch domaine, ajoutez le paramètre "endpoint": "s3.amazonaws.com" à la demande.

Encrypted snapshots

Vous ne pouvez actuellement pas utiliser les clés AWS Key Management Service (KMS) pour chiffrer les instantanés manuels, mais vous pouvez les protéger à l'aide du chiffrement côté serveur (). SSE

Pour activer l'utilisation SSE de clés gérées par S3 pour le bucket que vous utilisez comme référentiel de snapshots, ajoutez-le "server_side_encryption": true au "settings" bloc de la PUT demande. Pour plus d'informations, consultez Protection des données à l'aide du chiffrement côté serveur avec les clés de chiffrement gérées par Amazon S3 dans le Guide de l'utilisateur Amazon Simple Storage Service.

Vous pouvez également utiliser des AWS KMS clés pour le chiffrement côté serveur sur le compartiment S3 que vous utilisez comme référentiel de snapshots. Si vous utilisez cette approche, veillez à TheSnapshotRole autoriser la AWS KMS clé utilisée pour chiffrer le compartiment S3. Pour plus d'informations, consultez Stratégies de clé dans le AWS KMS.

Domain migration

L'enregistrement d'un référentiel d'instantanés est une opération ponctuelle. Cela étant, pour migrer d'un domaine à un autre, vous devez enregistrer le référentiel d'instantanés sur l'ancien et le nouveau domaine. Le nom du référentiel est arbitraire.

Prenez en compte les instructions suivantes lors de la migration vers un nouveau domaine ou de l'enregistrement du même référentiel auprès de plusieurs domaines :

  • Lorsque vous enregistrez le référentiel sur le nouveau domaine, ajoutez-le "readonly": true au "settings" bloc de la PUT demande. Ce paramètre vous empêche d'écraser malencontreusement des données de l'ancien domaine. Un seul domaine doit avoir un accès en écriture au référentiel.

  • Si vous migrez des données vers un domaine situé dans un autre domaine (par exemple Région AWS, d'un ancien domaine et d'un compartiment situés dans us-east-2 vers un nouveau domaine dans us-west-2), remplacez-les par dans l'instruction et réessayez la demande. "region": "region" "endpoint": "s3.amazonaws.com" PUT

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), requests et requests-aws4auth. Le client contient des exemples mis en commentaire pour d'autres opérations d'instantanés.

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)