

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Registrazione di un repository di snapshot manuali
<a name="managedomains-snapshot-registerdirectory"></a>

È necessario registrare un repository di istantanee con OpenSearch Service prima di poter scattare istantanee dell'indice manualmente. Questa operazione unica richiede la firma della AWS richiesta con credenziali a cui è consentito l'accesso`TheSnapshotRole`, come descritto in. [Prerequisiti](managedomains-snapshots.md#managedomains-snapshot-prerequisites)

## Passaggio 1: mappare il ruolo dell'istantanea nelle OpenSearch dashboard (se si utilizza un controllo di accesso granulare)
<a name="managedomains-snapshot-fgac"></a>

Il controllo granulare degli accessi introduce un passaggio aggiuntivo durante la registrazione di un repository. Anche se si utilizza l'autenticazione di base HTTP per tutti gli altri scopi, è necessario mappare il ruolo `manage_snapshots` al ruolo IAM che dispone delle autorizzazioni `iam:PassRole` per inviare `TheSnapshotRole`.

1. Vai al plug-in OpenSearch Dashboards per il tuo dominio di servizio. OpenSearch Puoi trovare l'endpoint Dashboards nella dashboard del tuo dominio nella OpenSearch console di servizio. 

1. Dal menu principale scegliere **Sicurezza**, **Ruoli** e selezionare il ruolo **manage\$1snapshots**.

1. Scegliere **Utenti mappati**, **Gestisci mappatura**. 

1. Aggiungi l'ARN del ruolo che dispone delle autorizzazioni per inviare `TheSnapshotRole`. Inserisci il ruolo nei ruoli ARNs di **backend**.

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

1. Selezionare **Mappa** e confermare che l'utente o il ruolo venga visualizzato in **Utenti mappati**.

## Fase 2: Registrazione di un repository
<a name="managedomains-snapshot-register"></a>

La seguente scheda **Snapshot** mostra come registrare una directory di snapshot. Per le opzioni specifiche relative alla crittografia di un'istantanea manuale e alla registrazione di un'istantanea dopo la migrazione a un nuovo dominio, consulta le schede pertinenti.

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

Per registrare un archivio di snapshot, invia una richiesta PUT all'endpoint del dominio del servizio. OpenSearch Puoi usare [curl](https://curl.se/docs/manpage.html#--aws-sigv4), il client [Python di esempio](#managedomains-snapshot-client-python)[,](https://www.getpostman.com/) Postman o qualche altro metodo per inviare una richiesta firmata per registrare il repository di snapshot. Tieni presente che non puoi utilizzare una richiesta PUT nella console OpenSearch Dashboards per registrare il repository.

La richiesta ha il seguente 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**  
I nomi dei repository non possono iniziare con "cs-". Inoltre, non dovresti scrivere nello stesso repository da più domini. Solo un dominio deve avere accesso in scrittura al repository.

Se il dominio si trova all'interno di un Virtual Private Cloud (VPC), perché la richiesta registri correttamente il repository di snapshot il computer deve essere connesso al VPC. L'accesso a un VPC varia in base alla configurazione della rete, ma prevede con ogni probabilità la connessione a una VPN o a una rete aziendale. Per verificare di poter raggiungere il dominio del OpenSearch servizio, accedi a `https://your-vpc-domain.region.es.amazonaws.com` In un browser Web e verifica di ricevere la risposta JSON predefinita.

Quando il bucket Amazon S3 si trova in un OpenSearch dominio Regione AWS diverso dal tuo, aggiungi il parametro `"endpoint": "s3.amazonaws.com"` alla richiesta.

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

Al momento non puoi utilizzare le chiavi AWS Key Management Service (KMS) per crittografare le istantanee manuali, ma puoi proteggerle utilizzando la crittografia lato server (SSE).

Per attivare SSE con chiavi gestite da S3 per il bucket che usi come repository di istantanee, aggiungile al blocco della richiesta PUT. `"server_side_encryption": true` `"settings"` Per ulteriori informazioni, consulta [Uso della crittografia lato server con chiavi gestite da Amazon S3 (SSE-S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html) nella *Guida per l'utente di Amazon Simple Storage Service*.

In alternativa, puoi utilizzare AWS KMS le chiavi per la crittografia lato server sul bucket S3 che usi come repository di istantanee. Se utilizzi questo approccio, assicurati di fornire l'`TheSnapshotRole`autorizzazione alla AWS KMS chiave utilizzata per crittografare il bucket S3. Per ulteriori informazioni, consulta [Policy delle chiavi in AWS KMS](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html).

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

La registrazione di un repository di snapshot è un'operazione che viene eseguita una tantum. Tuttavia, per eseguire la migrazione da un dominio a un altro, è necessario registrare lo stesso repository di snapshot sia sul vecchio dominio che sul nuovo. Il nome del repository è arbitrario.

Considerare le seguenti linee guida quando si esegue la migrazione a un nuovo dominio o si registra lo stesso repository con più domini:
+ Quando si registra il repository nel nuovo dominio, aggiungere `"readonly": true` al blocco `"settings"` della richiesta PUT. Questa impostazione impedisce di sovrascrivere accidentalmente i dati dal vecchio dominio. Solo un dominio deve avere accesso in scrittura al repository.
+ Se stai migrando i dati verso un dominio in un altro (ad esempio Regione AWS, da un vecchio dominio e bucket situato in us-east-2 a un nuovo dominio in us-west-2), `"region": "region"` sostituiscili con nell'istruzione PUT e riprova la richiesta. `"endpoint": "s3.amazonaws.com"`

------

### Utilizzo del client Python di esempio
<a name="managedomains-snapshot-client-python"></a>

Il client Python è più facile da automatizzare rispetto a una semplice richiesta HTTP e ha una migliore riusabilità. Se si sceglie di utilizzare questo metodo per registrare un repository di snapshot, salvare il seguente codice Python di esempio come file Python, ad esempio `register-repo.py`. Il client richiede i pacchetti [AWS SDK per Python (Boto3)](https://aws.amazon.com/sdk-for-python/), [richieste](http://docs.python-requests.org/) e [requests-aws4auth](https://pypi.python.org/pypi/requests-aws4auth). Il client contiene esempi commentati per altre operazioni con snapshot.

Aggiornare le seguenti variabili nel codice di esempio:`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": "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)
```