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ê precisa registrar um repositório de instantâneos no OpenSearch Service antes de poder tirar instantâneos de índice manuais. Essa operação única exige que você assine sua AWS solicitação com credenciais de acesso permitidoTheSnapshotRole, conforme descrito em. Pré-requisitos

Etapa 1: mapear a função de instantâneo nos OpenSearch painéis (se estiver usando 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 do seu domínio OpenSearch de serviço. Você pode encontrar o endpoint do Dashboards no painel do seu domínio no console de OpenSearch serviços.

  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 a função ARNs em Funções de back-end.

    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 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 você não pode usar uma solicitação PUT no console OpenSearch Dashboards para registrar o repositório.

A solicitação 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 verificar se você pode acessar o domínio do OpenSearch Serviço, navegue até https://your-vpc-domain.region.es.amazonaws.com em um navegador da Web e verifique se você recebeu a resposta JSON padrão.

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

Encrypted snapshots

Atualmente, você não pode usar chaves AWS Key Management Service (KMS) para criptografar instantâneos manuais, mas pode protegê-los usando criptografia do 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.

Como alternativa, você pode usar AWS KMS chaves para criptografia do lado do servidor no bucket do S3 que você usa como repositório de instantâneos. Se você usar essa abordagem, certifique-se de fornecer TheSnapshotRole permissão para a AWS KMS chave 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)