Come posso ripristinare dati da un dominio del Servizio OpenSearch in un altro account AWS?

6 minuti di lettura
0

Desidero ripristinare dati da un dominio del Servizio OpenSearch di Amazon in un altro account.

Breve descrizione

Per ripristinare dati da un dominio del Servizio OpenSearch in un altro account, devi configurare l'accesso multi-account per i seguenti domini:

  • Il dominio di origine da cui desideri ripristinare i dati (Account A)
  • Il dominio di destinazione del Servizio OpenSearch (Account B)

Inoltre, devi configurare le autorizzazioni per il dominio per accedere al bucket Amazon Simple Storage Service (Amazon S3) che memorizza i dati.

Nota: non devi creare un bucket Amazon S3 nella destinazione (Account B). Il Servizio OpenSearch utilizza un singolo bucket Amazon S3 per ripristinare i dati nei diversi account.

Risoluzione

Nota: il Servizio OpenSearch utilizza il dominio di origine nell'Account A per gli snapshot del cluster.

Innanzitutto, crea un bucket Amazon S3 nell'Account A nella stessa Regione AWS del dominio di destinazione del Servizio OpenSearch. Quindi completa i seguenti passaggi per configurare l'accesso multi-account. È necessario completare i passaggi sia per l'Account A che per l'Account B.

Configura l'accesso al bucket S3 in entrambi gli account

Completa i seguenti passaggi:

  1. Crea un ruolo AWS Identity and Access Management (AWS IAM) che conceda al Servizio OpenSearch l'autorizzazione di accesso al bucket S3. Quindi seleziona Amazon Elastic Compute Cloud (Amazon EC2) come servizio.

  2. Crea la seguente policy IAM che conceda l'autorizzazione di accesso al bucket S3, quindi associa la policy al ruolo IAM:

    {     "Version": "2012-10-17",
         "Statement": [{
              "Action": [
                   "s3:ListBucket"
              ],
              "Effect": "Allow",
              "Resource": [
                   "arn:aws:s3:::AccountA_S3_Bucket_Name"
              ]
         },
         {
              "Action": [
                   "s3:GetObject",
                   "s3:PutObject",
                   "s3:DeleteObject",
                   "iam:PassRole"
              ],
              "Effect": "Allow",
              "Resource": [
                   "arn:aws:s3:::AccountA_S3_Bucket_Name/*"
              ]
         }]
    }

    Nota: sostituisci arn:aws:s3:::AccountA_S3_Bucket_Name con il nome della risorsa Amazon (ARN) del tuo bucket.

  3. Aggiorna la policy del bucket dell'Account A con la seguente istruzione per concedere l'accesso multi-account al bucket al ruolo IAM nell'Account B:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "Permission for AccountB role",
                "Effect": "Allow",
                "Principal": {
                    "AWS": "arn:aws:iam::account-B-id:role/AccountB-role"
                },
                "Action": [
                    "s3:GetLifecycleConfiguration",
                    "s3:ListBucket",
                    "s3:GetObject",
                    "s3:PutObject",
                    "s3:DeleteObject"
                ],
                "Resource": [
                    "arn:aws:s3:::AccountA-bucket",
                    "arn:aws:s3:::AccountA-bucket/*"
                ]
            }
        ]
    }
  4. Aggiorna la policy di attendibilità del ruolo per includere la seguente relazione di attendibilità:

    {     "Version": "2012-10-17",
         "Statement": [{
              "Effect": "Allow",
              "Principal": {
                   "Service": "es.amazonaws.com"
              },
              "Action": "sts:AssumeRole"
         }]
    }

    Nota: annota l'ARN del ruolo da utilizzare nei passaggi successivi.

  5. Per concedere al Servizio OpenSearch l'accesso in scrittura al bucket S3, esegui una di queste azioni:
    Per raggruppare tutte le tue autorizzazioni in un ruolo IAM, includi l'autorizzazione iam:PassRole nella policy IAM esistente.
    -oppure-
    Per dividere le autorizzazioni, crea una nuova policy IAM con l'autorizzazione iam:PassRole.
    Nota: devi associare la policy IAM al ruolo IAM utilizzato per firmare la richiesta HTTP.
    Il seguente esempio di policy contiene le autorizzazioni IAM richieste:

    {     "Version": "2012-10-17",
         "Statement": [{
              "Effect": "Allow",
              "Action": "iam:PassRole",
              "Resource": "arn:aws:iam::Account:snapshot role"
         },
         {
              "Effect": "Allow",
              "Action": "es:ESHttpPut",
              "Resource": "arn:aws:es:us-east-1:Account:domain/srestore/*"
         }]
    }

    Nota: sostituisci arn:aws:iam::Account:snapshot-role con il tuo ruolo IAM. Inoltre, sostituisci arn:aws:es:us-east-1:Account:domain/restore/* con il dominio del Servizio OpenSearch nell'Account A o nell'Account B.

  6. Se hai attivato il controllo granulare degli accessi per il dominio, devi mappare il ruolo IAM a OpenSearch Dashboards. Il ruolo IAM utilizza un controllo granulare degli accessi per fornire l'accesso all'API di lettura o scrittura.

  7. (Facoltativo) Se nell'Account A hai utilizzato il client Python per registrare il bucket sul Servizio OpenSearch, avvia un'istanza EC2 nell'Account A e poi associa il ruolo IAM.

Nota: assicurati che il gruppo di sicurezza possa accedere al dominio del Servizio OpenSearch.

Registra il bucket S3 come repository di snapshot in entrambi gli account

Importante: per l'Account B, devi utilizzare le credenziali di autenticazione utente IAM dell'Account B e selezionare il Servizio OpenSearch come destinazione.

Per registrare il bucket, utilizza l'applicazione Postman per effettuare una richiesta HTTP PUT. Per installare l'applicazione, consulta Download Postman (Scarica Postman) sul sito web di Postman.

Completa i seguenti passaggi:

  1. Per PUT, inserisci un URL che includa l'endpoint del dominio del Servizio OpenSearch e il nome del bucket S3, ad esempio your-domain-endpoint.amazonaws.com/_snapshot/your-snapshot-repository-name.
  2. Scegli la scheda Authorization (Autorizzazione).
  3. In Postman, per Type (Tipo), scegli AWS Signature (Firma AWS). Per AccessKey (Chiave di accesso) e SecretKey (Chiave segreta), inserisci le chiavi di accesso dell'utente IAM.
  4. Per AWS Region (Regione AWS), inserisci la tua regione.
  5. Per Service name (Nome servizio), inserisci es.
  6. Scegli Save (Salva).
  7. Scegli la scheda Headers (Intestazioni).
  8. Per Key type (Tipo di chiave), scegli Content-Type.
  9. Per Key value (Valore chiave), scegli Application/JSON.
  10. Scegli Save (Salva).
  11. Scegli la scheda Body (Corpo).
  12. Registra il bucket S3 come repository di snapshot:
{     "type": "s3",
     "settings": {
          "bucket": "snapshot",
          "region": "us-east-1",
          "role_arn": "arn:aws:iam::Account:role/cross"
     }
}

Nota: sostituisci snapshot con il nome del tuo bucket S3, us-east-1 con la tua Regione e arn:aws:iam::Account:role/cross con il ruolo IAM dell'Account A o dell'Account B. Per inviare la query, scegli Send (Invia).

Una volta completata la registrazione, riceverai un messaggio Status Code: 200 OK.

Verifica che il tuo repository di snapshot sia configurato correttamente

Nell'Account A, completa i seguenti passaggi:

  1. Apri OpenSearch Dashboards, quindi controlla i dati disponibili nel bucket.
  2. Esegui questo comando per ottenere un nuovo snapshot:
    PUT /_snapshot/my-snapshot-repo-name/snapshot_name
    Nota: sostituisci my-snapshot-repo-name con il nome del tuo bucket S3 e snapshot_name con il nome del tuo snapshot.
    L'esempio di output seguente verifica una registrazione completa del bucket S3 nel dominio del Servizio OpenSearch nell'Account A:
    GET _cat/snapshots/my-snapshot-repo-name
    
    SUCCESS 1585190280 02:38:00 1585190284 02:38:04 3.9s 4 4 0 4

Nell'Account B, completa i seguenti passaggi:

  1. Apri OpenSearch Dashboards.

  2. Esegui questo comando per visualizzare gli snapshot dall'Account A disponibili nel bucket S3:

    GET _cat/snapshots/my-snapshot-repo-name

    Nota: sostituisci my-snapshot-repo-name con il tuo repository di snapshot.
    L'esempio di output seguente conferma che hai impostato l'accesso multi-account nell'Account B:

    today SUCCESS 1585190280 02:38:00 1585190284 02:38:04 3.9s 4 4 0 4
  3. Per ripristinare i dati, esegui questo comando:

    POST /_snapshot/my-snapshot-repo-name/snapshotID/_restore

    Nota: sostituisci my-snapshot-repo-name con il tuo repository di snapshot e snapshotID con il nome del tuo snapshot.

  4. Per ripristinare indici specifici, esegui questo comando:

    POST /_snapshot/my-snapshot-repo-name/snapshot ID/_restore
    {
       "indices": "index name1,index name2"
    }

    Nota: sostituisci my-snapshot-repo-name con il tuo repository di snapshot e snapshotID con il nome del tuo snapshot. Inoltre, sostituisci index name1 e indexname2 con i tuoi indici.

  5. Per verificare gli indici ripristinati, esegui questo comando:

    GET _cat/indices?v

Informazioni correlate

Come faccio a migrare i dati da un dominio del Servizio OpenSearch a un altro

Passaggio 1.3: associare una policy del bucket per concedere autorizzazioni multi-account all'Account B

Migrazione degli indici del Servizio OpenSearch di Amazon utilizzando la reindicizzazione remota

Gestione del ruolo IAM

AWS UFFICIALE
AWS UFFICIALEAggiornata un mese fa