Logotipo de Zephyrnet

Utilice Amazon OpenSearch Ingestion para migrar a Amazon OpenSearch Serverless | Servicios web de Amazon

Fecha:

Amazon OpenSearch sin servidor es una configuración de escalado automático bajo demanda para Servicio Amazon OpenSearch. Desde su lanzamiento, el interés por OpenSearch Serverless ha ido creciendo constantemente. Los clientes prefieren dejar que el servicio administre su capacidad automáticamente en lugar de tener que aprovisionarla manualmente. Hasta ahora, los clientes han tenido que depender del uso de código personalizado o soluciones de terceros para mover los datos entre los dominios aprovisionados de OpenSearch Service y OpenSearch Serverless.

Recientemente presentamos una característica con Ingestión de Amazon OpenSearch (OSI) para hacer que esta migración sea aún más sencilla. OSI es un recopilador de datos sin servidor totalmente administrado que ofrece datos de registro, métricas y seguimiento en tiempo real a dominios de OpenSearch Service y colecciones de OpenSearch Serverless.

En esta publicación, describimos los pasos para migrar los datos entre los dominios aprovisionados del servicio OpenSearch y OpenSearch Serverless. La migración de metadatos, como roles de seguridad y objetos del panel, se tratará en otra publicación posterior.

Resumen de la solución

El siguiente diagrama muestra los componentes necesarios para mover datos entre dominios aprovisionados por OpenSearch Service y OpenSearch Serverless mediante OSI. Utilizará OSI con OpenSearch Service como fuente y una colección OpenSearch Serverless como receptor.

Requisitos previos

Antes de comenzar, complete los siguientes pasos para crear los recursos necesarios:

  1. Crear una Gestión de identidades y accesos de AWS (IAM) función que asumirá la canalización de OpenSearch Ingestion para escribir en la colección OpenSearch Serverless. Este rol debe especificarse en el sts_role_arn parámetro de la configuración de la tubería.
  2. Adjuntar una política de permisos al rol para permitirle leer datos del dominio del servicio OpenSearch. La siguiente es una política de ejemplo con privilegios mínimos:
    {
       "Version":"2012-10-17",
       "Statement":[
          {
             "Effect":"Allow",
             "Action":"es:ESHttpGet",
             "Resource":[
                "arn:aws:es:us-east-1:{account-id}:domain/{domain-name}/",
                "arn:aws:es:us-east-1:{account-id}:domain/{domain-name}/_cat/indices",
                "arn:aws:es:us-east-1:{account-id}:domain/{domain-name}/_search",
                "arn:aws:es:us-east-1:{account-id}:domain/{domain-name}/_search/scroll",
                "arn:aws:es:us-east-1:{account-id}:domain/{domain-name}/*/_search"
             ]
          },
          {
             "Effect":"Allow",
             "Action":"es:ESHttpPost",
             "Resource":[
                "arn:aws:es:us-east-1:{account-id}:domain/{domain-name}/*/_search/point_in_time",
                "arn:aws:es:us-east-1:{account-id}:domain/{domain-name}/*/_search/scroll"
             ]
          },
          {
             "Effect":"Allow",
             "Action":"es:ESHttpDelete",
             "Resource":[
                "arn:aws:es:us-east-1:{account-id}:domain/{domain-name}/_search/point_in_time",
                "arn:aws:es:us-east-1:{account-id}:domain/{domain-name}/_search/scroll"
             ]
          }
       ]
    }

  3. Adjuntar una política de permisos al rol para permitirle enviar datos a la colección. La siguiente es una política de ejemplo con privilegios mínimos:
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Action": [
            "aoss:BatchGetCollection",
            "aoss:APIAccessAll"
          ],
          "Effect": "Allow",
          "Resource": "arn:aws:aoss:{region}:{your-account-id}:collection/{collection-id}"
        },
        {
          "Action": [
            "aoss:CreateSecurityPolicy",
            "aoss:GetSecurityPolicy",
            "aoss:UpdateSecurityPolicy"
          ],
          "Effect": "Allow",
          "Resource": "*",
          "Condition": {
            "StringEquals": {
              "aoss:collection": "{collection-name}"
            }
          }
        }
      ]
    }

  4. Configurar el rol para asumir el relación de confianza, como sigue:
    {
            "Version": "2012-10-17",
            "Statement": [
                {
                    "Effect": "Allow",
                    "Principal": {
                        "Service": "osis-pipelines.amazonaws.com"
                    },
                    "Action": "sts:AssumeRole"
                }
            ]
        }

  5. Se recomienda agregar el aws:SourceAccount y aws:SourceArn claves de condición de la póliza de protección contra el problema del diputado confundido:
    "Condition": {
        "StringEquals": {
            "aws:SourceAccount": "{your-account-id}"
        },
        "ArnLike": {
            "aws:SourceArn": "arn:aws:osis:{region}:{your-account-id}:pipeline/*"
        }
    }

  6. Asigne el ARN del rol del dominio OpenSearch Ingestion como usuario backend (como all_access usuario) al usuario del dominio. Mostramos un ejemplo simplificado para utilizar el all_access role. Para escenarios de producción, asegúrese de utilizar una función con los permisos suficientes para leer y escribir.
  7. Crear una colección OpenSearch Serverless, que es donde se ingerirán los datos.
  8. Asocie una política de datos, como se muestra en el siguiente código, para otorgar permisos al rol de ingesta de OpenSearch en la colección:
    [
      {
        "Rules": [
          {
            "Resource": [
              "index/collection-name/*"
            ],
            "Permission": [
              "aoss:CreateIndex",
              "aoss:UpdateIndex",
              "aoss:DescribeIndex",
              "aoss:WriteDocument",
            ],
            "ResourceType": "index"
          }
        ],
        "Principal": [
          "arn:aws:iam::{account-id}:role/pipeline-role"
        ],
        "Description": "Pipeline role access"
      }
    ]

  9. Si la colección se define como una colección VPC, debe crear una política de red y configúrelo en la canalización de ingesta.

Ahora está listo para mover datos desde su dominio aprovisionado a OpenSearch Serverless.

Mover datos de dominios aprovisionados a Serverless

Configurar la ingestión de Amazon OpenSearch
Para comenzar, debe tener un dominio activo del servicio OpenSearch (fuente) y una colección OpenSearch Serverless (sumidero). Complete los siguientes pasos para configurar una canalización de OpenSearch Ingestion para la migración:

  1. En la consola del servicio OpenSearch, seleccione Tubería bajo Ingestión en el panel de navegación.
  2. Elige Crear una canalización.
  3. Nombre de la canalización, ingrese un nombre (por ejemplo, octank-migration).
  4. Capacidad de tubería, puede definir la capacidad mínima y máxima para ampliar los recursos. Por ahora, puedes dejar el mínimo predeterminado en 1 y el máximo en 4.
  5. Plano de configuración, seleccione AWS-OpenSearchDataMigrationPipeline.
  6. Actualice la siguiente información para la fuente:
    1. Descomentar hosts y especifique el punto final del punto final del servicio OpenSearch existente.
    2. Descomentar distribution_version si su clúster de origen es un clúster del servicio OpenSearch con el modo de compatibilidad habilitado; en caso contrario déjalo comentado.
    3. Descomentar indices, include, index_name_regexy agregue un nombre de índice o patrón que desee migrar (por ejemplo, octank-iot-logs-2023.11.0*).
    4. Actualizar region bajo aws dónde está su dominio de origen (por ejemplo, us-west-2).
    5. Actualizar sts_role_arn bajo aws al rol que tiene permiso para leer datos del dominio del servicio OpenSearch (por ejemplo, arn:aws:iam::111122223333:role/osis-pipeline). Esta función debe agregarse como función de backend dentro de las funciones de seguridad del servicio OpenSearch.
  7. Actualice la siguiente información para el receptor:
    1. Descomentar hosts y especifique el punto final del punto final de OpenSearch Serverless existente.
    2. Actualizar sts_role_arn bajo aws al rol que tiene permiso para escribir datos en la colección OpenSearch Serverless (por ejemplo, arn:aws:iam::111122223333:role/osis-pipeline). Esta función debe agregarse como parte de la política de acceso a datos en la colección OpenSearch Serverless.
    3. Actualizar el serverless bandera para ser true.
    4. index, puede dejarlo como predeterminado, lo que obtendrá los metadatos del índice de origen y los escribirá en el mismo nombre en el destino que en las fuentes. Alternativamente, si desea tener un nombre de índice diferente en el destino, modifique este valor con el nombre que desee.
    5. document_id, puede obtener el ID de los metadatos del documento en el origen y utilizarlo en el destino. Tenga en cuenta que los ID de documentos personalizados solo se admiten para el tipo de colección BÚSQUEDA; Si tienes tu colección como TIMESERIES o VECTORSEARCH, debes comentar esta línea.
  8. A continuación, puede validar su canalización para verificar la conectividad del origen y el receptor para asegurarse de que el punto final exista y sea accesible.
  9. Configuración de red, elige tu configuración preferida:
    1. Elige Acceso a la VPC y seleccione su VPC, subred y grupo de seguridad para configurar el acceso de forma privada.
    2. Elige Público utilizar el acceso público. AWS recomienda utilizar un punto final de VPC para todas las cargas de trabajo de producción, pero en este tutorial, seleccione Público.
  10. Opción de publicación de registros, puedes crear un nuevo Reloj en la nube de Amazon o utilice un grupo de CloudWatch existente para escribir los registros de ingesta. Esto proporciona acceso a información sobre errores y advertencias generadas durante la operación, lo que puede ayudar durante la resolución de problemas. Para este tutorial, elija Crear nuevo grupo.
  11. Elige Siguientey verifique los detalles que especificó para la configuración de su canalización.
  12. Elige Crear canalización.

Debería llevar un par de minutos crear la canalización de ingesta.
El siguiente gráfico ofrece una demostración rápida de cómo crear la canalización de ingesta de OpenSearch mediante los pasos anteriores.

Verificar los datos ingeridos en la colección OpenSearch Serverless de destino

Una vez creada y activa la canalización, inicie sesión en OpenSearch Dashboards para su colección OpenSearch Serverless y ejecute el siguiente comando para enumerar los índices:

OBTENER _cat/indices?v

El siguiente gráfico ofrece una demostración rápida de cómo enumerar los índices antes y después de que la canalización se active.

Conclusión

En esta publicación, vimos cómo OpenSearch Ingestion puede ingerir datos en una colección OpenSearch Serverless sin la necesidad de utilizar soluciones de terceros. Con una configuración mínima del productor de datos, ingirió datos automáticamente en la colección. OSI también le permite transformar o reindexar los datos de la versión ES7.x antes de la transferencia a un dominio del servicio OpenSearch o a una colección OpenSearch Serverless. OSI elimina la necesidad de aprovisionar, escalar o administrar servidores. AWS ofrece varios digitales para que pueda comenzar rápidamente a crear canalizaciones utilizando OpenSearch Ingestion. Puede utilizar varios integrados integraciones de tuberías para ingerir rápidamente datos de Amazon DynamoDB, Streaming administrado por Amazon para Apache Kafka (Amazon MSK), Lago de seguridad de Amazon, Fluent Bit y muchos más. La siguiente ingesta de OpenSearch planos le permiten crear canalizaciones de datos con cambios mínimos de configuración.


Acerca de los autores

Muthu Pitchaimani es un especialista en búsquedas de Amazon OpenSearch Service. Construye aplicaciones y soluciones de búsqueda a gran escala. Muthu está interesado en los temas de redes y seguridad, y tiene su sede en Austin, Texas.

Prashant Agrawal es Arquitecto de Soluciones Sr. Especialista en Búsqueda con Amazon OpenSearch Service. Trabaja en estrecha colaboración con los clientes para ayudarlos a migrar sus cargas de trabajo a la nube y ayuda a los clientes existentes a ajustar sus clústeres para lograr un mejor rendimiento y ahorrar costos. Antes de unirse a AWS, ayudó a varios clientes a usar OpenSearch y Elasticsearch para sus casos de uso de búsqueda y análisis de registros. Cuando no está trabajando, puedes encontrarlo viajando y explorando nuevos lugares. En resumen, le gusta hacer Comer → Viajar → Repetir.

Rahul Sharma es gerente técnico de cuentas en Amazon Web Services. Le apasionan las tecnologías de datos que ayudan a aprovechar los datos como un activo estratégico y reside en la ciudad de Nueva York, Nueva York.

punto_img

Información más reciente

punto_img