¿Cómo creo un patrón de índice en mi clúster de Amazon OpenSearch Service?

5 minutos de lectura
0

Quiero crear un patrón de índice en mi clúster de Amazon OpenSearch Service.

Descripción corta

Para crear un patrón de índice, el clúster debe cumplir los siguientes requisitos previos:

  1. El usuario debe tener permisos PUT y POST para crear un patrón de índice similar a la siguiente política de acceso:

    {
      "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. Su versión de clúster admite el patrón de índice.

Resolución

Siga estas instrucciones para crear un patrón de índice para los clústeres de OpenSearch Service o Elasticsearch con o sin control de acceso detallado (FGAC).

Creación de un patrón de índice para clústeres sin FGAC activado

Clústeres de Elasticsearch

Ejecute un comando similar al siguiente:

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

Clústeres de OpenSearch Service

Ejecute un comando similar al siguiente:

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

Creación de un patrón de índice para clústeres con FGAC activado

Clústeres de Elasticsearch

Ejecuta el siguiente comando curl para generar cookies de autorización en el archivo 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

A continuación, envíe la solicitud de creación del patrón de índice:

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

Clústeres de OpenSearch Service

Ejecuta el siguiente comando curl para generar cookies de autorización en el archivo 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

A continuación, envíe la solicitud de creación del patrón de índice:

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

(Opcional) Cliente Python

Use el siguiente fragmento de código de Python para crear el patrón de índice:

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: Debe tener instaladas las siguientes dependencias:

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

Nota:

  • El rol utilizado para ejecutar el fragmento de código debe asignarse al rol respaldado para los clústeres de FGAC.
  • Para los clústeres de Elasticsearch, cambie la ruta a '_plugin/kibana/api/saved_objects/index-pattern'.

Solución de problemas comunes relacionados con la creación de un patrón de índice

Clústeres de FGAC que utilizan la autenticación SAML o de Amazon Cognito

Si el dominio del clúster usa SAML o Amazon Cognito para la autenticación, cree un usuario interno para administrar el patrón de índice.

Nota: El usuario debe tener permisos PUT y POST para crear un patrón de índice. Este requisito no es obligatorio para los clústeres sin FGAC activado.

Creación de un patrón de índice en otros inquilinos

Los patrones de índice se crean en el inquilino global de forma predeterminada. Para crear un patrón de índice fuera del inquilino global, ejecute un comando curl similar al siguiente:

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

Falta el alias .kibana en el clúster

Compruebe si el alias .kibana existe sin que el FGAC esté activado en el clúster mediante el siguiente comando curl:

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

Comprueba si el índice .kibana existe con el FGAC activado en el clúster mediante el siguiente comando curl:

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

Si el índice .kibana no existe, omita los pasos 1 y 2 para crear una copia de seguridad y eliminar el índice.

1. Cree una copia de seguridad del índice .kibana:

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

2. Elimine el índice .kibana:

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

3. Cree un alias .kibana y apúntelo al índice .kibana_backup:

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

Nota: Incluya el parámetro authentication (username:password) para los clústeres del FGAC.

Información relacionada

Exportación e importación de paneles de Kibana con Amazon ES

¿Por qué la acción de transferencia de índice de mi política de ISM sigue fallando en OpenSearch Service?