¿Cómo puedo restaurar los datos de un dominio de OpenSearch Service en otra cuenta de AWS?

7 minutos de lectura
0

Quiero restaurar los datos de un dominio de Amazon OpenSearch Service en otra cuenta.

Descripción corta

Para restaurar los datos de un dominio de OpenSearch Service en otra cuenta, debe configurar el acceso entre cuentas para los siguientes dominios:

  • El dominio de origen desde el que desea restaurar los datos (cuenta A)
  • El dominio de destino del servicio OpenSearch (cuenta B)

También debe configurar los permisos del dominio para acceder al bucket de Amazon Simple Storage Service (Amazon S3) que almacena los datos.

Nota: No es necesario crear un bucket de Amazon S3 en el destino (cuenta B). OpenSearch Service utiliza un único bucket de Amazon S3 para restaurar los datos de las cuentas.

Resolución

Nota: OpenSearch Service usa el dominio de origen de la cuenta A para las instantáneas del clúster.

En primer lugar, cree un bucket de Amazon S3 en la cuenta A de la misma región de AWS que el dominio de destino de OpenSearch Service. A continuación, complete los siguientes pasos para configurar el acceso entre cuentas. Debe completar los pasos para la cuenta A y la cuenta B.

Configuración del acceso al bucket de S3 en ambas cuentas

Siga estos pasos:

  1. Cree un rol de AWS Identity and Access Management (IAM) que conceda permiso a OpenSearch Service para acceder al bucket de S3. A continuación, seleccione Amazon Elastic Compute Cloud (Amazon EC2) como servicio.

  2. Cree la siguiente política de IAM que conceda el permiso de acceso al bucket de S3 y, a continuación, adjunte la política al rol de 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: Sustituya arn:aws:s3:::AccountA_S3_Bucket_Name por el ARN del bucket.

  3. Actualice la política de buckets de la cuenta A con la siguiente instrucción para conceder acceso a buckets entre cuentas al rol de IAM en la cuenta 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. Actualice la política de confianza del rol para incluir la siguiente relación de confianza:

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

    Nota: Anote el ARN del rol para usarlo en pasos posteriores.

  5. Para conceder a OpenSearch Service acceso de escritura al bucket de S3, realice una de las siguientes acciones:
    Para agrupar todos los permisos en un rol de IAM, incluya el permiso iam:PassRole en su política de IAM actual.
    Alternativa:
    Para dividir los permisos, cree una nueva política de IAM con el permiso iam:PassRole.
    Nota: Debe adjuntar la política de IAM al rol de IAM que usa para firmar la solicitud HTTP.
    El siguiente ejemplo de política contiene los permisos de IAM necesarios:

    {     "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: Sustituya arn:aws:iam::Account:snapshot-role por su rol de IAM. Además, sustituya arn:aws:es:us-east-1:Account:domain/restore/* por el dominio de OpenSearch Service en la cuenta A o la cuenta B.

  6. Si ha activado el control de acceso detallado para su dominio, debe asignar el rol de IAM a OpenSearch Dashboards. El rol de IAM utiliza un control de acceso detallado para proporcionar acceso a la API de lectura o escritura.

  7. (Opcional) Si ha usado el cliente Python en la cuenta A para registrar el bucket en OpenSearch Service, inicie una instancia de EC2 en la cuenta A. A continuación, adjunte el rol de IAM.

Nota: Asegúrese de que su grupo de seguridad pueda acceder al dominio de OpenSearch Service.

Registro del bucket de S3 como repositorio de instantáneas en ambas cuentas

Importante: Para la cuenta B, debe usar las credenciales de autenticación de usuario de IAM de la cuenta B y seleccionar OpenSearch Service como destino.

Para registrar el bucket, usa la aplicación Postman para realizar una solicitud HTTP PUT. Para instalar la aplicación, consulte Descargar Postman en el sitio web de Postman.

Siga estos pasos:

  1. Para PUT, introduzca una URL que incluya el punto de enlace del dominio de OpenSearch Service y el nombre del bucket de S3, por ejemplo, your-domain-endpoint.amazonaws.com/_snapshot/your-snapshot-repository-name.
  2. Seleccione la pestaña Autorización.
  3. En Postman, en Tipo, elija AWS Signature. En AccessKey y SecretKey, introduzca las claves de acceso del usuario de IAM.
  4. En Región de AWS, introduzca su región.
  5. En Nombre de servicio, escriba es.
  6. Seleccione Guardar.
  7. Seleccione la pestaña Encabezados.
  8. En Tipo de clave, elija Content-Type.
  9. En Valor de la clave, elija Aplicación/JSON.
  10. Seleccione Guardar.
  11. Seleccione la pestaña Cuerpo.
  12. Registre el bucket de S3 como repositorio de instantáneas:
{     "type": "s3",
     "settings": {
          "bucket": "snapshot",
          "region": "us-east-1",
          "role_arn": "arn:aws:iam::Account:role/cross"
     }
}

Nota: Sustituya snapshot por el nombre de su bucket de S3, us-east-1 por su región y arn:aws:iam::Account:role/cross por el rol de IAM de la cuenta A o la cuenta B. Para enviar la consulta, seleccione Enviar.

Una vez completado el registro, recibirá un mensaje de código de estado: 200 OK.

Verificación de que el repositorio de instantáneas esté configurado correctamente

En la cuenta A, lleve a cabo los siguientes pasos:

  1. Abra OpenSearch Dashboards y, a continuación, compruebe los datos disponibles en el bucket.
  2. Ejecute el siguiente comando para tomar una nueva instantánea:
    PUT /_snapshot/my-snapshot-repo-name/snapshot_name
    Nota: Sustituya my-snapshot-repo-name por el nombre de su bucket de S3 y snapshot name por el nombre de la instantánea.
    El siguiente resultado de ejemplo verifica el registro completo de un bucket de S3 en el dominio de OpenSearch Service en la cuenta A:
    GET _cat/snapshots/my-snapshot-repo-name
    
    SUCCESS 1585190280 02:38:00 1585190284 02:38:04 3.9s 4 4 0 4

En la cuenta B, lleve a cabo los siguientes pasos:

  1. Abra OpenSearch Dashboards.

  2. Ejecute el siguiente comando para ver las instantáneas de la cuenta A que están disponibles en el bucket de S3:

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

    Nota: Sustituya my-snapshot-repo-name por su repositorio de instantáneas.
    El siguiente resultado de ejemplo confirma que ha configurado el acceso entre cuentas en la cuenta B:

    today SUCCESS 1585190280 02:38:00 1585190284 02:38:04 3.9s 4 4 0 4
  3. Para restaurar los datos, ejecute el siguiente comando:

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

    Nota: Sustituya my-snapshot-repo-name por el repositorio de instantáneas y snapshotID por el nombre de la instantánea.

  4. Para restaurar índices específicos, ejecute el siguiente comando:

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

    Nota: Sustituya my-snapshot-repo-name por el repositorio de instantáneas y snapshotID por el nombre de la instantánea. Además, sustituya index name1 e indexname2 por sus índices.

  5. Para verificar los índices restaurados, ejecute el siguiente comando:

    GET _cat/indices?v

Información relacionada

¿Cómo puedo migrar datos de un dominio de OpenSearch Service a otro?

Paso 1.3: Adjunte una política de bucket para conceder permisos entre cuentas a la cuenta B

Migración de índices de Amazon OpenSearch Service mediante la reindexación remota

Administración de roles de IAM

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 meses