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
.
-
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.
-
No menu principal, escolha Segurança, Funções e selecione a função manage_snapshots.
-
Escolha Usuários mapeados e Gerenciar mapeamento.
-
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
-
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.
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)
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)