Passer au contenu

Comment puis-je créer un modèle d'index dans mon cluster OpenSearch Service ?

Lecture de 6 minute(s)
0

Je souhaite créer un modèle d'index dans mon cluster Amazon OpenSearch Service.

Résolution

Prérequis :

  • L'utilisateur Gestion des identités et des accès AWS (AWS IAM) doit disposer des autorisations PUT et POST pour créer un modèle d'index. Exemple de politique d'accès :
    {  "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "VisualEditor0",
          "Effect": "Allow",
          "Action": [
            "es:ESHttpHead",
            "es:ESHttpPost",
            "es:ESHttpGet",
            "es:ESHttpDelete",
            "es:ESHttpPut"
          ],
          "Resource": "arn:aws:es:region:account-id:domain/domain-name/*"
        }
      ]
    }
    Remarque : Remplacez region par votre région AWS, account-id par votre compte AWS et domain-name par le nom de votre domaine.
  • La version de votre cluster doit autoriser les modèles d'index.

Créer le modèle d'index

Utiliser les tableaux de bord OpenSearch

Vous pouvez utiliser les tableaux de bord OpenSearch pour créer un modèle d'index pour les clusters OpenSearch Service ou Elasticsearch avec ou sans contrôle précis des accès. Pour obtenir des instructions, consultez la page Création d'un modèle d'index sur le site Web d’OpenSearch.

Utiliser les commandes curl

Pour créer un modèle d'index pour les clusters sans contrôle précis des accès, exécutez la commande suivante en fonction du type de cluster.

Clusters Elasticsearch :

curl -X POST  https://elasticsearch-end-point/_plugin/kibana/api/saved_objects/index-pattern/ \
-H "kbn-xsrf: true" \

-H "content-type: application/json" \

-d '{ "attributes": { "title": "sample-index*" } }'

Remarque : Remplacez sample-index par votre nom ou modèle d’index.

Clusters OpenSearch Service :

curl -X POST  https://opensearch-end-point/_dashboards/api/saved_objects/index-pattern/ \
-H "kbn-xsrf: true" \

-H "content-type: application/json" \

-d '{ "attributes": { "title": "sample-index*" } }'

Remarque : Remplacez sample-index par votre nom ou modèle d’index.

Pour les clusters dotés d'un contrôle précis des accès, procédez comme suit :

  1. Pour générer des cookies d'autorisation dans le fichier auth.txt, exécutez la commande suivante en fonction du type de cluster.
    Clusters Elasticsearch :
    curl -X POST  https://elasticsearch-end-point/_plugin/kibana/auth/login  \
    -H "kbn-xsrf: true" \
    -H "content-type: application/json" \
    -d '{"username":"usernameexample", "password":"passwordexample"}' \
    -c auth.txt
    Remarque : Remplacez usernameexample par votre nom d'utilisateur et passwordexample par votre mot de passe.
    Clusters OpenSearch Service :
    curl -X POST  https://opensearch-end-point/_dashboards/auth/login  \
    -H "kbn-xsrf: true" \
    -H "content-type: application/json" \
    -d '{"username":"usernameexample", "password":"passwordexample"}' \
    -c auth.txt
    **Remarque :**Remplacez ** usernameexample par ** votre nom d'utilisateur et ** passwordexample par ** votre mot de passe.
  2. Pour soumettre la demande de création du modèle d'index, exécutez la commande suivante en fonction de votre type de cluster :
    Clusters Elasticsearch :
    curl -X POST  https://elasticsearch-end-point/_plugin/kibana/api/saved_objects/index-pattern/test  \
    -H "kbn-xsrf: true" \
    -H "content-type: application/json" \
    -d '{ "attributes": { "title": "sample-index*" } }' \
    -b auth.txt
    Remarque : Remplacez sample-index par votre nom ou modèle d’index.
    Clusters OpenSearch Service :
    curl -X POST  https://opensearch-end-point/_dashboards/api/saved_objects/index-pattern/  \
    -H "kbn-xsrf: true" \
    -H "content-type: application/json" \
    -d '{ "attributes": { "title": "sample-index*" } }' \
    -b auth.txt
    Remarque : Remplacez sample-index par votre nom ou modèle d’index.

Utiliser Python

Prérequis :

Exécutez la commande Python suivante pour créer le modèle d'index pour les clusters OpenSearch Service :

import boto3
import requests
from requests_aws4auth import AWS4Auth

host = 'https://domain-endpoint/' # include trailing /
region = 'aos-region' # example us-west-1
service = 'es'
credentials = boto3.Session().get_credentials()
awsauth = AWS4Auth(credentials.access_key, credentials.secret_key, region, service, session_token=credentials.token)


path = '_dashboards/api/saved_objects/index-pattern' # _plugin/kibana/api/saved_objects/index-pattern for es versions
url = host + path
payload = {"attributes":{"title":"multi-logs-*","fields":"[]"}}
headers = {"Content-Type": "application/json", "osd-xsrf": "true", "security_tenant": "global" }
r = requests.post (url, auth=awsauth, json=payload, headers=headers)
print(r.status_code)
print(r.text)

Remarque : Remplacez domain-endpoint par votre point de terminaison de domaine et aos-region par votre région. Pour les clusters Elasticsearch, remplacez _dashboards/api/saved_objects/index-pattern par _plugin/kibana/api/saved_objects/index-pattern.

Résoudre les problèmes liés à la création de modèles d'index

Vous utilisez un contrôle précis des accès avec l'authentification SAML 2.0 ou Amazon Cognito

Si le domaine de votre cluster utilise SAML 2.0 ou Amazon Cognito pour l'authentification, créez un utilisateur interne pour gérer le modèle d'index.

Remarque : Pour les clusters pour lesquels vous avez activé un contrôle précis des accès, l'utilisateur doit disposer des autorisations ESHttpPut et ESHttpPost pour créer un modèle d'index.

Vous ne pouvez pas créer le modèle d'index dans le locataire global

Par défaut, les tableaux de bord OpenSearch crée des modèles d'index sous le locataire Global. Pour créer un modèle d'index en dehors du locataire global, exécutez la commande suivante :

curl -s -X POST https://opensearch-end-point/_dashboards/api/saved_objects/index-pattern/sample-index -d '{"attributes": {"title": "sample-index*"}}' \
-H "osd-xsrf:true" \
-H "securitytenant: private" \
-H "content-type:application/json" \
-b auth.txt

Remarque : Remplacez sample-index par votre nom ou modèle d’index.

Vous n'avez pas inclus l'alias .kibana dans le cluster

Pour résoudre ce problème, procédez comme suit :

  1. Pour vérifier si l'alias .kibana existe dans le cluster, exécutez la commande suivante :
    curl -XGET https://opensearch-end-point/_cat/aliases
    Remarque : Pour les clusters dotés d'un contrôle précis des accès, incluez l'indicateur -u avec votre nom d'utilisateur et votre mot de passe. Exemple de commande :
    curl -XPOST -u 'master-user:master-user-password' 'domain-endpoint/_cat/indices
    Si l'index .kibana n'existe pas, passez à l'étape 4.
  2. Pour créer une sauvegarde de l'index .kibana, exécutez la commande suivante :
    curl -XPOST "https://domain-endpoint/_reindex" -H 'Content-Type: application/json' -d'{
      "source": {
        "index": ".kibana"
      },
      "dest": {
     "index": ".kibana_backup"
      }
    }'
    Remarque : Remplacez domain-endpoint par votre point de terminaison de domaine. Pour les clusters dotés d'un contrôle précis des accès, incluez l'indicateur -u avec votre nom d'utilisateur et votre mot de passe.
  3. Pour supprimer l'index .kibana, exécutez la commande suivante :
    curl -XDELETE "https://domain-endpoint/.kibana"
    Remarque : Remplacez domain-endpoint par votre point de terminaison de domaine. Pour les clusters dotés d'un contrôle précis des accès, incluez l'indicateur -u avec votre nom d'utilisateur et votre mot de passe.
  4. Pour créer un alias .kibana et le pointer vers l'index .kibana_backup, exécutez la commande suivante :
    curl -XPOST "https://domain-endpoint/_aliases" -H 'Content-Type: application/json' -d'{
      "actions": [
        {
          "add": {
            "index": ".kibana_backup",
            "alias": ".kibana"
          }
        }
      ]
    }'
    Remarque : Remplacez domain-endpoint par votre point de terminaison de domaine. Pour les clusters dotés d'un contrôle précis des accès, incluez l'indicateur -u avec votre nom d'utilisateur et votre mot de passe.

Informations connexes

Exporter et importer des tableaux de bord Kibana avec OpenSearch Service

Pourquoi l'action de substitution d'index de ma politique ISM échoue-t-elle toujours dans OpenSearch Service ?

AWS OFFICIELA mis à jour il y a un an