Come posso creare un modello di indice nel mio cluster del servizio OpenSearch di Amazon?

5 minuti di lettura
0

Desidero creare un modello di indice nel mio cluster del servizio OpenSearch di Amazon.

Breve descrizione

Per creare un modello di indice, il cluster deve soddisfare i seguenti prerequisiti:

  1. L'utente deve disporre delle autorizzazioni PUT e POST per creare un modello di indice simile alla seguente policy di accesso:

    {
      "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>/*"
        }
      ]
    }
  2. La versione del tuo cluster supporta il modello di indice.

Risoluzione

Segui queste istruzioni per creare un modello di indice per i cluster del servizio OpenSearch o Elasticsearch con o senza controllo granulare degli accessi (FGAC).

Crea un modello di indice per i cluster senza FGAC attivato

Cluster Elasticsearch

Esegui un comando simile al seguente:

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*" } }'

Cluster del servizio OpenSearch

Esegui un comando simile al seguente:

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*" } }'

Crea un modello di indice per i cluster con FGAC attivato

Cluster Elasticsearch

Esegui il seguente comando curl per generare i cookie di autorizzazione nel file auth.txt:

curl -X POST  https://elasticsearch-end-point/_plugin/kibana/auth/login  \
-H "kbn-xsrf: true" \
-H "content-type: application/json" \
-d '{"username":"<username>", "password":"<password>"}' \
-c auth.txt

Quindi invia la richiesta di creazione del modello di indice:

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

Cluster del servizio OpenSearch

Esegui il seguente comando curl per generare i cookie di autorizzazione nel file auth.txt:

curl -X POST  https://opensearch-end-point/_dashboards/auth/login  \
-H "kbn-xsrf: true" \
-H "content-type: application/json" \
-d '{"username":"<username>", "password":"<password>"}' \
-c auth.txt

Quindi invia la richiesta di creazione del modello di indice:

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

(Facoltativo) Client Python

Utilizzaa il seguente frammento di codice Python per creare il modello di indice:

import boto3
import requests
from requests_aws4auth import AWS4Auth

host = 'https://domain-endpoint/' # include trailing /
region = 'es-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)

Nota: è necessario che siano installate le seguenti dipendenze:

pip install boto3
pip install opensearch-py
pip install requests
pip install requests-aws4auth

Nota:

  • il ruolo utilizzato per eseguire il frammento di codice deve corrispondere al ruolo supportato per i cluster FGAC.
  • Per i cluster Elasticsearch, cambia il percorso in '_plugin/kibana/api/saved_objects/index-pattern'.

Risolvi i problemi più comuni relativi alla creazione di un modello di indice

Cluster FGAC che utilizzano l'autenticazione SAML o Amazon Cognito

Se il dominio del tuo cluster utilizza SAML o Amazon Cognito per l'autenticazione, crea un utente interno per gestire il modello di indice.

Nota: l'utente deve disporre delle autorizzazioni PUT e POST per creare un modello di indice. Questo requisito non è richiesto per i cluster senza FGAC attivato.

Crea un modello di indice in altri tenant

Per impostazione predefinita, i modelli di indice vengono creati nel tenant Global. Per creare un modello di indice al di fuori del tenant Global, esegui un comando curl simile al seguente:

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

Alias .kibana mancante nel cluster

Controlla se l'alias .kibana esiste senza FGAC attivato nel cluster utilizzando il seguente comando curl:

curl -XGET https://opensearch-end-point/_cat/aliases

Controlla se l'indice .kibana esiste con FGAC attivato nel cluster utilizzando il seguente comando curl:

curl -XGET https://opensearch-end-point/_cat/aliases

Se l'indice .kibana non esiste, salta i passaggi 1-2 per creare un backup ed eliminare l'indice.

1. Crea un backup dell'indice .kibana:

curl -XPOST "https://domain-end-point/_reindex" -H 'Content-Type: application/json' -d'
{
  "source": {
    "index": ".kibana"
  },
  "dest": {
 "index": ".kibana_backup"
  }
}'

2. Elimina l'indice .kibana:

curl -XDELETE "https://domain-end-point/.kibana"

3. Crea un alias .kibana e indirizzalo all'indice .kibana_backup:

curl -XPOST "https://domain-end-point/_aliases" -H 'Content-Type: application/json' -d'
{
  "actions": [
    {
      "add": {
        "index": ".kibana_backup",
        "alias": ".kibana"
      }
    }
  ]
}'

**Nota:**Includi il parametro di autenticazione (username:password) per i cluster FGAC.

Informazioni correlate

Export and import Kibana dashboards with Amazon ES (Esporta e importa dashboard Kibana con Amazon ES)

Perché l'operazione dell'indice di rollover nella policy ISM continua a non riuscire sul servizio OpenSearch di Amazon?