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.
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.
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
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://
à un navigateur Web et vérifiez que vous recevez la JSON réponse par défaut.your-vpc-domain
.region
.es.amazonaws.com
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.
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)