

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Registrar un repositorio de instantáneas manuales
<a name="managedomains-snapshot-registerdirectory"></a>

Debe registrar un repositorio de instantáneas en OpenSearch Service antes de poder realizar instantáneas de indexación manuales. Esta operación única requiere que firme la AWS solicitud con las credenciales a las que se permite el acceso`TheSnapshotRole`, tal y como se describe en[Requisitos previos](managedomains-snapshots.md#managedomains-snapshot-prerequisites).

## Paso 1: Asigne la función de captura de pantalla en los OpenSearch paneles (si utiliza un control de acceso detallado)
<a name="managedomains-snapshot-fgac"></a>

El control de acceso detallado presenta un paso adicional al registrar un repositorio. Incluso si utiliza autenticación HTTP básica para todos los demás fines, debe asignar el rol `manage_snapshots` al rol de IAM que tenga permisos `iam:PassRole` para transferir `TheSnapshotRole`.

1. Navegue hasta el complemento OpenSearch Dashboards de su dominio de servicio. OpenSearch Puedes encontrar el punto de conexión de Dashboards en el panel de control de tu dominio, en la consola de OpenSearch servicio. 

1. En el menú principal, seleccione **Seguridad**, **Roles** y seleccione el rol **manage\_snapshots**.

1. Seleccione **Usuarios asignados**, **Administrar mapeo**. 

1. Agregue el ARN del rol que tenga permisos para transferir `TheSnapshotRole`. Coloca el rol en ARNs Roles de **backend**.

   ```
   arn:aws:iam::{{123456789123}}:role/{{role-name}}
   ```

1. Seleccione **Asignar** y confirme que el usuario o el rol aparecen en **Usuarios asignados**.

## Paso 2: registrar un repositorio
<a name="managedomains-snapshot-register"></a>

La siguiente pestaña **Instantáneas** muestra cómo registrar un directorio de instantáneas. Para ver las opciones específicas para cifrar una instantánea manual y registrarla después de migrarla a un nuevo dominio, consulte las pestañas correspondientes.

------
#### [ Snapshots ]

Para registrar un repositorio de instantáneas, envíe una solicitud PUT al punto final del dominio OpenSearch de servicio. Puede usar [curl](https://curl.se/docs/manpage.html#--aws-sigv4), el [cliente Python de muestra](#managedomains-snapshot-client-python), [Postman](https://www.getpostman.com/) o algún otro método para enviar una solicitud firmada para registrar el repositorio de instantáneas. Tenga en cuenta que no puede usar una solicitud PUT en la consola de OpenSearch Dashboards para registrar el repositorio.

La solicitud tiene el siguiente formato:

```
PUT {{domain-endpoint}}/_snapshot/{{my-snapshot-repo-name}}
{
  "type": "s3",
  "settings": {
    "bucket": "{{amzn-s3-demo-bucket}}",
    "base_path": "{{my/snapshot/directory}}",
    "region": "{{region}}",
    "role_arn": "arn:aws:iam::{{123456789012}}:role/{{TheSnapshotRole}}"
  }
}
```

**nota**  
Los nombres de repositorio no pueden comenzar por “cs-”. Además, no debe escribir en el mismo repositorio desde varios dominios. Solo un dominio debe tener acceso de escritura al repositorio.

Si el dominio reside en una nube privada virtual (VPC), la computadora debe estar conectada a la VPC para que la solicitud registre correctamente el repositorio de instantáneas. El acceso a una VPC depende de la configuración de red, pero probablemente implica conectarse a una VPN o a una red corporativa. Para comprobar que puede acceder al dominio del OpenSearch servicio, navegue `https://{{your-vpc-domain}}.{{region}}.es.amazonaws.com` en un navegador web y compruebe que recibe la respuesta JSON predeterminada.

Cuando su bucket de Amazon S3 se encuentre en un dominio Región de AWS que no sea su OpenSearch dominio, añada el parámetro `"endpoint": "s3.amazonaws.com"` a la solicitud.

------
#### [ Encrypted snapshots ]

Actualmente no puede usar claves AWS Key Management Service (KMS) para cifrar instantáneas manuales, pero puede protegerlas mediante el cifrado del lado del servidor (SSE).

Para activar el SSE con claves administradas de S3 para el bucket que utiliza como repositorio de instantáneas, agregue `"server_side_encryption": true` al bloque `"settings"` de la solicitud PUT. Para obtener más información, consulte [Uso del cifrado del servidor con claves administradas por Amazon S3 (SSE-S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html) en la *Guía del usuario de Amazon Simple Storage Service*.

Como alternativa, puede usar AWS KMS claves para el cifrado del lado del servidor en el bucket de S3 que utiliza como repositorio de instantáneas. Si utiliza este enfoque, asegúrese de dar `TheSnapshotRole` permiso a la AWS KMS clave utilizada para cifrar el depósito de S3. Para más información, consulte [Políticas de claves en AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html).

------
#### [ Domain migration ]

El registro de un repositorio de instantáneas es una operación que se realiza una vez. Sin embargo, para migrar de un dominio a otro, debe registrar el mismo repositorio de instantáneas en el dominio antiguo y en el nuevo. El nombre del repositorio es arbitrario.

Tenga en cuenta las siguientes pautas al migrar a un nuevo dominio o registrar el mismo repositorio con varios dominios:
+ Al registrar el repositorio en el nuevo dominio, agregue `"readonly": true` al bloque `"settings"` de la solicitud PUT. Esta configuración impide sobrescribir accidentalmente datos del dominio antiguo. Solo un dominio debe tener acceso de escritura al repositorio.
+ Si migra datos a un dominio en una Región de AWS diferente (por ejemplo, desde un dominio antiguo y un bucket ubicado en us-east-2 a un nuevo dominio en us-west-2), reemplace `"region": "{{region}}"` por `"endpoint": "s3.amazonaws.com"` en la instrucción PUT y vuelva a enviar la solicitud.

------

### Utilizar el cliente de Python de ejemplo
<a name="managedomains-snapshot-client-python"></a>

El cliente de Python es más fácil de automatizar que una simple solicitud HTTP y tiene una mejor reutilización. Si elige utilizar este método para registrar un repositorio de instantáneas, guarde el siguiente código de muestra de Python como archivo Python, por ejemplo `register-repo.py`. El cliente requiere los paquetes [AWS SDK para Python (Boto3)](https://aws.amazon.com/sdk-for-python/), [requests](http://docs.python-requests.org/) y [requests-aws4auth](https://pypi.python.org/pypi/requests-aws4auth). El cliente contiene ejemplos de otras operaciones de instantánea que están marcados como comentarios.

Actualice las variables siguientes en el código de muestra: `host`, `region`, `path` y `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": "{{amzn-s3-demo-bucket}}",
    "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)
```