El paso rápido y confiable a la información es crucial para tomar decisiones comerciales inteligentes. Por eso las empresas están recurriendo a Servicio de búsqueda abierta de Amazon para potenciar sus capacidades de búsqueda y investigación. OpenSearch Service simplifica la implementación, operación y escalamiento de sistemas de búsqueda en la montón, permitiendo casos de uso como investigación de registros, monitoreo de aplicaciones y búsqueda de sitios web.
La papeleo válido de los índices y capital del clúster de OpenSearch Service puede ocasionar mejoras significativas en el rendimiento, la escalabilidad y la confiabilidad, todo lo cual impacta directamente en los resultados de una empresa. Sin confiscación, la industria carece de soluciones integradas y perfectamente documentadas para automatizar estas importantes tareas operativas.
Aplicar la integración continua y la implementación continua (CI/CD) para gobernar los capital del índice OpenSearch puede ayudar a lograrlo. Por ejemplo, acumular configuraciones de índice en un repositorio de origen permite un mejor seguimiento, colaboración y reversión. El uso de herramientas de infraestructura como código (IaC) puede ayudar a automatizar la creación de capital, proporcionando coherencia y reduciendo el trabajo manual. Por zaguero, el uso de una canalización de CI/CD puede automatizar las implementaciones y optimizar el flujo de trabajo.
En esta publicación, discutimos dos opciones para conquistar esto: la Proveedor Terraform OpenSearch y el Transformación biblioteca. Cuál se adapta mejor a su caso de uso depende de las herramientas con las que esté familiarizado, el verbo que elija y su canalización existente.
Descripción universal de la alternativa
Veamos una implementación sencilla. Para este caso de uso, utilizamos el Kit de incremento de la montón de AWS (AWS CDK) para aprovisionar la infraestructura relevante como se describe en el venidero diagrama de casa a continuación, AWS Lambda para activar scripts de Evolution y Construcción de código AWS para aplicar archivos Terraform. Puede encontrar el código de la alternativa completa en GitHub. repositorio.
Requisitos previos
Para seguir esta publicación, debe tener lo venidero:
- Franqueza con Java y Búsqueda abierta
- Franqueza con AWS CDK, Terraform y la término de comandos.
- Las siguientes versiones de software instaladas en su máquina: Python 3.12, NodeJS 20 y AWS CDK 2.170.0 o superior
- Un cuenta de AWScon un Administración de paso e identidad de AWS (IAM) rol configurado con los permisos relevantes
Construya la alternativa
Para crear una alternativa automatizada para la papeleo de clústeres del servicio OpenSearch, siga estos pasos:
- Ingrese los siguientes comandos en una terminal para descargar el código de la alternativa; construir la aplicación Java; construir la capa Lambda requerida; cree un dominio OpenSearch, dos funciones Lambda y un plan CodeBuild; y desplegar el código:
- Espere de 15 a 20 minutos para que la infraestructura termine de implementarse, luego verifique que su dominio OpenSearch esté en funcionamiento y que la función Lambda y el plan CodeBuild se hayan creado, como se muestra en las siguientes capturas de pantalla.
Antaño de utilizar herramientas automatizadas para crear plantillas de índice, puede confirmar que ya no exista ninguna utilizando el OpenSearchQuery
Función lambda.
- En la consola Lambda, navegue hasta el archivo relevante Función
- en el Prueba pestaña, elija Prueba.
La función debería devolver el mensaje «No hay patrones de índice creados por Terraform o Evolution», como se muestra en la venidero captura de pantalla.
Aplicar archivos Terraform
Primero, usa Terraform con CodeBuild. El código está inteligente para que lo pruebes. Veamos algunas partes importantes de la configuración:
- Defina las variables requeridas para su entorno:
- Especificar y configurar el proveedor.
NOTA: A la momento de publicación de este post, existe una bicho en el proveedor Terraform OpenSearch que se activará al iniciar su plan CodeBuild y que impedirá una ejecución exitosa. Hasta que se solucione, utilice la venidero traducción:
- Crear una plantilla de índice
Ahora está inteligente para realizar la prueba.
- En la consola de CodeBuild, navegue hasta el plan correspondiente y elija Comenzar a construir.
La compilación debería completarse correctamente y debería ver las siguientes líneas en los registros:
Puede comprobar que la plantilla de índice se ha creado correctamente utilizando la misma función Lambda que ayer y debería ver los siguientes resultados.
Ejecutar scripts de progreso
En el venidero paso, utilizará la biblioteca Evolution. El código está inteligente para que lo pruebes. Veamos algunas partes importantes del código y la configuración:
- Para principiar, debe asociar la última traducción de la biblioteca principal de Evolution y el SDK de AWS como dependencias de Maven. El archivo xml completo está acondicionado en GitHub. repositorio; para comprobar la compatibilidad de la biblioteca Evolution con diferentes versiones de OpenSearch, consulte aquí.
- Cree Evolution Bean y un interceptor de AWS (que implemente
HttpRequestInterceptor
).
Los interceptores son mecanismos abiertos en los que el SDK flama al código que usted escribe para inyectar comportamiento en el ciclo de vida de la solicitud y la respuesta. La función del interceptor de AWS es conectarse a la ejecución de solicitudes de API y crear una solicitud firmada por AWS con el sello de las funciones de IAM adecuadas. Puedes usar lo venidero código para crear su propia implementación para firmar todas las solicitudes realizadas a OpenSearch interiormente de AWS.
- Cree su propio cliente OpenSearch para encargar la creación cibernética de índices, asignaciones, plantillas y apelativo.
El cliente ElasticSearch predeterminado que viene incluido como parte de la dependencia de Maven no se puede utilizar para realizar PUT
llamadas al clúster OpenSearch. Por lo tanto, debe evitar la instancia de cliente REST predeterminada y asociar una CallBack
en torno a AwsRequestSigningInterceptor
.
La venidero es una implementación de muestra:
- Utilice el Evolution Bean para vocear a su método de migración, que es responsable de iniciar la migración de los scripts definidos ya sea usando
classpath
ofilepath
:
- Un
Evolution
El script de migración representa una citación REST a la API OpenSearch (por ejemplo,PUT /_index_template/cicd_template_evolution
), donde se definen patrones de índice, configuraciones y asignaciones en formato JSON. Evolution interpreta estos scripts, gestiona su control de versiones y proporciona una ejecución ordenada. Vea el venidero ejemplo:
Las dos primeras líneas debe ir seguido de una término en blanco. Evolution
asimismo admite líneas de comentarios en sus scripts de migración. Cada término que comienza con #
o //
se interpretará como una término de comentario. Las líneas de comentarios no se envían a OpenSearch. En cambio, son filtrados por Evolution.
La convención de nomenclatura de archivos del script de migración debe seguir un patrón:
- Principiar con
esMigrationPrefix
que es por defectoV
o el valía que se ha configurado mediante la opción de configuraciónesMigrationPrefix
- Seguido de un número de traducción, que debe ser numeral y puede estructurarse separando las partes de la traducción con un punto (
.
) - Seguido por el
versionDescriptionSeparator
:__
(el símbolo de doble subrayado) - Seguido de una descripción, que puede ser cualquier texto que admita su sistema de archivos.
- Terminar con
esMigrationSuffixes
que es por defecto.http
y es configurable y no distingue entre mayúsculas y minúsculas
Ahora está inteligente para ejecutar su primer cambio automatizado. Ya se ha creado un ejemplo de script de migración, al que puede consultar en una sección susodicho. Creará una plantilla de índice citación cicd_template_evolution
.
- En la consola Lambda, navegue hasta su función.
- en el Prueba pestaña, elija Prueba.
A posteriori de unos segundos, la función debería completarse exitosamente. Puede revisar la salida del registro en el Detalles sección, como se muestra en las siguientes capturas de pantalla.
La plantilla de índice ahora existe y puede confirmar que su configuración esté en término con el script, como se muestra en la venidero captura de pantalla.
Quitar
Para escobillar los capital que se crearon como parte de esta publicación, ejecute los siguientes comandos (en el infra
carpeta):
Conclusión
En esta publicación, demostramos cómo automatizar las plantillas de índice de OpenSearch utilizando prácticas y herramientas de CI/CD como Terraform o la biblioteca Evolution.
Para obtener más información sobre el servicio OpenSearch, consulte la Prontuario para desarrolladores del servicio Amazon OpenSearch. Para explorar más a fondo la biblioteca Evolution, consulte la documentación. Para obtener más información sobre el proveedor Terraform OpenSearch, consulte la documentación.
Esperamos que esta breviario detallada y el código adjunto le ayuden a principiar. Pruébelo, háganos memorizar su opinión en la sección de comentarios y no dude en comunicarse con nosotros si tiene preguntas.
Acerca de los autores
Camille Birbes es arquitecto senior de soluciones en AWS y tiene su sede en Hong Kong. Trabaja con las principales instituciones financieras para diseñar y crear soluciones seguras, escalables y de incorporación disponibilidad en la montón. Fuera del trabajo, Camille disfruta de cualquier forma de charnela, desde juegos de mesa hasta el zaguero videojuego.
Sriharsha Subramanya Begolli Trabaja como arquitecto senior de soluciones en AWS, con sede en Bengaluru, India. Su enfoque principal es ayudar a los clientes de grandes empresas a modernizar sus aplicaciones y desarrollar sistemas basados en la montón para cumplir con sus objetivos comerciales. Su experiencia radica en los dominios de datos y investigación.