Ir para o conteúdo

Como faço para criar um padrão de índice no meu cluster do Amazon OpenSearch Service?

6 minuto de leitura
0

Quero criar um padrão de índice no meu cluster do Amazon OpenSearch Service.

Resolução

Pré-requisitos:

  • O usuário do AWS Identity and Access Management (AWS IAM) deve ter permissões PUT e POST para criar um padrão de índice. Exemplo de política de acesso:
    {  "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/*"
        }
      ]
    }
    Observação: substitua region pela sua região da AWS, account-id pela sua conta da AWS e domain-name pelo nome do seu domínio.
  • Sua versão do cluster deve permitir padrões de índice.

Crie o padrão de índice

Use os painéis do OpenSearch

É possível usar os painéis do OpenSearch para criar um padrão de índice para clusters do OpenSearch Service ou do Elasticsearch com ou sem controle de acesso refinado. Para obter instruções, consulte Creating an index pattern (Criação de um padrão de índice) no site do OpenSearch.

Use comandos curl

Para criar um padrão de índice para clusters sem controle de acesso refinado, execute o comando a seguir com base no tipo de cluster.

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

Observação: substitua sample-index pelo nome ou padrão do índice.

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

Observação: substitua sample-index pelo nome ou padrão do índice.

Para clusters com controle de acesso refinado, conclua as seguintes etapas:

  1. Para gerar cookies de autorização no arquivo auth.txt, execute o seguinte comando com base no tipo de cluster.
    Clusters do 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
    Observação: substitua usernameexample por seu nome de usuário e passwordexample por sua senha.
    Clusters do 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
    Observação: substitua usernameexample por seu nome de usuário e passwordexample por sua senha.
  2. Para enviar a solicitação de criação do padrão de índice, execute o seguinte comando com base no seu tipo de cluster:
    Clusters do 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
    Observação: substitua sample-index pelo nome ou padrão do índice.
    Clusters do 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
    Observação: substitua sample-index pelo nome ou padrão do índice.

Use Python

Pré-requisitos:

Execute o seguinte comando Python para criar o padrão de índice para clusters do 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)

Observação: substitua domain-endpoint pelo endpoint do seu domínio e aos-region pela sua região. Para clusters do Elasticsearch, substitua _dashboards/api/saved_objects/index-pattern por _plugin/kibana/api/saved_objects/index-pattern.

Solucione problemas de criação de padrões de índice

Você usa controle de acesso refinado com autenticação SAML 2.0 ou Amazon Cognito

Se o domínio do seu cluster usa SAML 2.0 ou Amazon Cognito para autenticação, crie um usuário interno para gerenciar o padrão de índice.

Observação: para clusters em que você ativou o controle de acesso refinado, o usuário deve ter permissões ESHttpPut e ESHttpPost para criar um padrão de índice.

Não é possível criar o padrão de índice no locatário global

Por padrão, os painéis do OpenSearch cria padrões de índice sob o inquilino global. Para criar um padrão de índice fora do locatário global, execute o seguinte comando:

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

Observação: substitua sample-index pelo nome ou padrão do índice.

Você não incluiu o alias .kibana no cluster

Para solucionar esse problema, conclua as seguintes etapas:

  1. Para verificar se o alias .kibana existe no cluster, execute o seguinte comando:
    curl -XGET https://opensearch-end-point/_cat/aliases
    Observação: para clusters com controle de acesso refinado, inclua o sinalizador -u com seu nome de usuário e senha. Exemplo de comando:
    curl -XPOST -u 'master-user:master-user-password' 'domain-endpoint/_cat/indices
    Se o índice .kibana não existir, vá para a etapa 4.
  2. Para criar um backup do índice .kibana, execute o seguinte comando:
    curl -XPOST "https://domain-endpoint/_reindex" -H 'Content-Type: application/json' -d'{
      "source": {
        "index": ".kibana"
      },
      "dest": {
     "index": ".kibana_backup"
      }
    }'
    Observação: substitua domain-endpoint pelo endpoint do seu domínio. Para clusters com controle de acesso refinado, inclua o sinalizador -u com seu nome de usuário e senha.
  3. Para excluir o índice .kibana, execute o seguinte comando:
    curl -XDELETE "https://domain-endpoint/.kibana"
    Observação: substitua domain-endpoint pelo endpoint do seu domínio. Para clusters com controle de acesso refinado, inclua o sinalizador -u com seu nome de usuário e senha.
  4. Para criar um alias .kibana e apontá-lo para o índice .kibana_backup, execute o seguinte comando:
    curl -XPOST "https://domain-endpoint/_aliases" -H 'Content-Type: application/json' -d'{
      "actions": [
        {
          "add": {
            "index": ".kibana_backup",
            "alias": ".kibana"
          }
        }
      ]
    }'
    Observação: substitua domain-endpoint pelo endpoint do seu domínio. Para clusters com controle de acesso refinado, inclua o sinalizador -u com seu nome de usuário e senha.

Informações relacionadas

Export and import Kibana dashboards with OpenSearch Service (Exportar e importar painéis do Kibana com o OpenSearch Service)

Por que a ação do índice de sobreposição em minha política do ISM continua falhando no Amazon OpenSearch Service?

AWS OFICIALAtualizada há 5 meses