Registro de um repositório de snapshots manuais - OpenSearch Serviço Amazon

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Registro de um repositório de snapshots manuais

Você deve registrar o repositório de snapshots com o OpenSearch Service antes de poder fazer snapshots de índices manuais. Esta operação única exige que você assine a solicitação da AWS com credenciais que têm permissão para acessar TheSnapshotRole, conforme descrito em Pré-requisitos.

Etapa 1: Mapear a função de snapshot no OpenSearch Dashboards (se estiver usando um controle de acesso refinado)

O controle de acesso refinado introduz uma etapa adicional ao registrar um repositório. Mesmo que você use a autenticação básica HTTP para todos os outros fins, será necessário mapear o perfil manage_snapshots para o seu perfil do IAM que tem permissões iam:PassRole para passar TheSnapshotRole.

  1. Navegue até o plug-in OpenSearch Dashboards para seu domínio do OpenSearch Service. Você pode encontrar o endpoint do Dashboards no painel do seu domínio no console do OpenSearch Service.

  2. No menu principal, escolha Segurança, Funções e selecione a função manage_snapshots.

  3. Escolha Usuários mapeados e Gerenciar mapeamento.

  4. Adicione o ARN do perfil que tenha permissões para aprovar TheSnapshotRole. Coloque ARNs de perfil em Perfis de backend.

    arn:aws:iam::123456789123:role/role-name
  5. Selecione Mapa e confirme se o usuário ou função aparece em Usuários mapeados.

Etapa 2: Registrar um repositório

A guia Snapshots a seguir demonstra como registrar um diretório de snapshots. Para opções específicas para criptografar e registrar um snapshot manual após a migração para um novo domínio, consulte as guias relevantes.

Snapshots

Para registrar um repositório de snapshots, envie uma solicitação PUT para o endpoint do domínio do OpenSearch Service. Você pode usar o curl, o cliente do Python de exemplo, Postman ou outro método para enviar uma solicitação assinada a fim de registrar o repositório de snapshot. Observe que não é possível usar uma solicitação PUT no console do Kibana para registrar o repositório.

O cabeçalho assume o seguinte formato:

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" } }
nota

Os nomes dos repositórios não podem começar com “cs-”. Além disso, você não deve gravar no mesmo repositório a partir de vários domínios. Apenas um domínio deve ter acesso de gravação ao repositório.

Se o domínio residir em uma nuvem privada virtual (VPC), o computador deverá estar conectado à VPC para que a solicitação registre o repositório de snapshots com êxito. O acesso a uma VPC varia de acordo com a configuração de rede, mas geralmente requer uma conexão com VPN ou rede corporativa. Para saber se você pode alcançar o domínio do OpenSearch Service, navegue até https://your-vpc-domain.region.es.amazonaws.com em um navegador da Web e confira se você recebe a resposta JSON padrão.

Quando seu bucket do Amazon S3 estiver em outro Região da AWS que não o domínio do OpenSearch, adicione o parâmetro "endpoint": "s3.amazonaws.com" à solicitação.

Encrypted snapshots

No momento, você não pode usar chaves do AWS Key Management Service (KMS) para criptografar snapshots manuais, mas pode protegê-los usando criptografia no lado do servidor (SSE).

Para ativar a SSE com chaves gerenciadas pelo S3 para o bucket que você usa como repositório de snapshots, adicione "server_side_encryption": true ao bloco "settings" da solicitação PUT. Para obter mais informações, consulte Proteção de dados usando criptografia no lado do servidor com chaves de criptografia gerenciadas pelo Amazon S3 no Manual do usuário do Amazon Simple Storage Service.

Você também pode usar chaves do AWS KMS para criptografia no lado do servidor no bucket do S3 que utiliza como repositório de snapshots. Se você usar essa abordagem, certifique-se de fornecer a permissão TheSnapshotRole para a chave do AWS KMS usada para criptografar o bucket do S3. Para obter mais informações, consulte Usar políticas de chaves no AWS KMS.

Domain migration

O registro de um repositório de snapshots é uma operação única. No entanto, para migrar de um domínio para outro, é necessário registrar o repositório de snapshots no domínio antigo e no novo. O nome do repositório é arbitrário.

Considere as seguintes diretrizes ao migrar para um novo domínio ou registrar o mesmo repositório com vários domínios:

  • Ao registrar o repositório no novo domínio, adicione "readonly": true para o bloco "settings" da solicitação PUT. Essa configuração impede que você sobrescreva acidentalmente dados do domínio antigo. Apenas um domínio deve ter acesso de gravação ao repositório.

  • Se estiver migrando dados para um domínio em uma Região da AWS diferente (por exemplo, de um domínio antigo e um bucket localizado em us-east-2 para um novo domínio em us-west-2), substitua "region": "region" por "endpoint": "s3.amazonaws.com" na instrução de PUT e tente novamente a solicitação.

Uso do cliente Python de exemplo

O cliente Python é mais fácil de automatizar do que uma simples solicitação HTTP, além de ser mais fácil reutilizá-lo. Se você optar por usar esse método para registrar um repositório de snapshots, salve o seguinte código de exemplo Python como um arquivo Python. Por exemplo, register-repo.py. O cliente exige os pacotes AWS SDK for Python (Boto3), requests e requests-aws4auth. O cliente contém exemplos comentados para outras operações de snapshot.

Atualize as seguintes variáveis no código de exemplo: host, region, path e 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)