El acceso rápido y confiable a la información es crucial para tomar decisiones comerciales inteligentes. Es por eso que las empresas están recurriendo a Servicio Amazon OpenSearch para potenciar sus capacidades de búsqueda y análisis. OpenSearch Service facilita la implementación, el funcionamiento y la ampliación de los sistemas de búsqueda en la nube, lo que permite casos de uso como el análisis de registros, el monitoreo de aplicaciones y la búsqueda en sitios web.
La gestión eficiente de los índices y los recursos de clúster de OpenSearch Service puede generar mejoras significativas en el rendimiento, la escalabilidad y la confiabilidad, todo lo cual afecta directamente los resultados de una empresa. Sin embargo, la industria carece de soluciones integradas y bien documentadas para automatizar estas importantes tareas operativas.
La aplicación de la integración continua y la implementación continua (CI/CD) a la gestión de los recursos de índice de OpenSearch puede ayudar a lograrlo. Por ejemplo, el almacenamiento de las configuraciones de índice en un repositorio de origen permite un mejor seguimiento, colaboración y recuperación. El uso de herramientas de infraestructura como código (IaC) puede ayudar a automatizar la creación de recursos, lo que proporciona coherencia y reduce el trabajo manual. Por último, el uso de una canalización de CI/CD puede automatizar las implementaciones y optimizar el flujo de trabajo.
En este post comentamos dos opciones para conseguirlo: la Proveedor de Terraform OpenSearch y la Evolución biblioteca. La que mejor se adapta a su caso de uso depende de las herramientas con las que esté familiarizado, el lenguaje que elija y su flujo de trabajo existente.
Resumen de la solución
Veamos una implementación sencilla. Para este caso de uso, utilizamos el Kit de desarrollo en la nube de AWS (AWS CDK) para aprovisionar la infraestructura relevante como se describe en el siguiente diagrama de arquitectura que aparece a continuación, AWS Lambda para activar scripts de Evolution y Construcción de código AWS para aplicar archivos Terraform. Puedes encontrar el código de la solución completa en GitHub repo.
Requisitos previos
Para seguir este post necesitas tener lo siguiente:
- Familiaridad con Java y Opensearch
- Familiaridad con AWS CDK, Terraform y la línea 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
- An Cuenta de AWS, Con un Gestión de identidades y accesos de AWS Rol (IAM) configurado con los permisos pertinentes
Construir la solución
Para crear una solución automatizada para la gestión de clústeres de OpenSearch Service, siga estos pasos:
- Ingrese los siguientes comandos en una terminal para descargar el código de la solución; crear la aplicación Java; crear la capa Lambda requerida; crear un dominio OpenSearch, dos funciones Lambda y un proyecto CodeBuild; e implementar el código:
- Espere entre 15 y 20 minutos para que la infraestructura termine de implementarse, luego verifique que su dominio OpenSearch esté en funcionamiento y que se hayan creado la función Lambda y el proyecto CodeBuild, como se muestra en las siguientes capturas de pantalla.
Antes de utilizar herramientas automatizadas para crear plantillas de índice, puede verificar que no exista ninguna utilizando el OpenSearchQuery
Función lambda.
- En la consola Lambda, navegue hasta la sección correspondiente. Función
- En la pestaña Prueba pestaña, elegir Prueba.
La función debería devolver el mensaje “No hay patrones de índice creados por Terraform o Evolution”, como se muestra en la siguiente captura de pantalla.
Aplicar archivos Terraform
Primero, use Terraform con CodeBuild. El código está listo para que lo pruebe. Veamos algunos elementos importantes de la configuración:
- Define las variables necesarias para tu entorno:
- Definir y configurar el proveedor
NOTA:A la fecha de publicación de este post, hay una error en el proveedor Terraform OpenSearch que se activará al iniciar su proyecto CodeBuild y que impedirá la ejecución exitosa. Hasta que se solucione, utilice la siguiente versión:
- Crear una plantilla de índice
Ahora está listo para realizar la prueba.
- En la consola CodeBuild, navegue hasta el Proyecto relevante y elija Iniciar compilación.
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 anteriormente y debería ver los siguientes resultados.
Ejecutar scripts de Evolution
En el siguiente paso, se utiliza la biblioteca Evolution. El código está listo para que lo pruebes. Veamos algunos fragmentos importantes de código y configuración:
- Para comenzar, debe agregar la última versión de la biblioteca principal Evolution y el SDK de AWS como dependencias de Maven. El archivo xml completo está disponible en GitHub repositorio; para comprobar la compatibilidad de la biblioteca Evolution con diferentes versiones de OpenSearch, consulte aquí.
- Cree un Evolution Bean y un interceptor de AWS (que implementa
HttpRequestInterceptor
).
Los interceptores son mecanismos abiertos en los que el SDK llama al código que escribes 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 los roles de IAM adecuados. Puedes usar lo siguiente código para crear su propia implementación para firmar todas las solicitudes realizadas a OpenSearch dentro de AWS.
- Cree su propio cliente OpenSearch para administrar la creación automática de índices, asignaciones, plantillas y alias.
El cliente ElasticSearch predeterminado que viene incluido como parte de la dependencia de Maven no se puede usar para realizar PUT
llamadas al clúster OpenSearch. Por lo tanto, debe omitir la instancia de cliente REST predeterminada y agregar una CallBack
En el correo electrónico “Su Cuenta de Usuario en su Nuevo Sistema XNUMXCX”. AwsRequestSigningInterceptor
.
A continuación se muestra un ejemplo de implementación:
- Utilice Evolution Bean para llamar a su método de migración, que es responsable de iniciar la migración de los scripts definidos mediante
classpath
orfilepath
:
- An
Evolution
El script de migración representa una llamada REST a la API de 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, administra sus versiones y proporciona una ejecución ordenada. Vea el siguiente ejemplo:
Las dos primeras líneas Debe ir seguido de una línea en blanco.. Evolution
También admite líneas de comentarios en sus scripts de migración. Cada línea que comience con #
or //
se interpretará como una línea de comentario. Las líneas de comentario no se envían a OpenSearch, sino que Evolution las filtra.
La convención de nombres de archivos del script de migración debe seguir un patrón:
- Comience con
esMigrationPrefix
que es por defectoV
o el valor que se ha configurado mediante la opción de configuraciónesMigrationPrefix
- Seguido de un número de versión, que debe ser numérico y puede estructurarse separando las partes de la versió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á listo para ejecutar su primer cambio automatizado. Ya se ha creado un ejemplo de un script de migración, al que puede hacer referencia en una sección anterior. Creará una plantilla de índice denominada cicd_template_evolution
.
- En la consola de Lambda, navegue hasta su función.
- En la pestaña Prueba pestaña, elegir Prueba.
Después de unos segundos, la función debería completarse correctamente. Puede revisar el resultado del registro en el Detalles sección, como se muestra en las siguientes capturas de pantalla.
La plantilla de índice ahora existe y puedes comprobar que su configuración está realmente en línea con el script, como se muestra en la siguiente captura de pantalla.
Limpiar
Para limpiar los recursos 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 Guía para desarrolladores del servicio Amazon OpenSearchPara explorar más a fondo la biblioteca Evolution, consulte la documentaciónPara obtener más información sobre el proveedor Terraform OpenSearch, consulte documentación.
Esperamos que esta guía detallada y el código que la acompaña te ayuden a comenzar. ¡Pruébala, cuéntanos qué te parece en la sección de comentarios y no dudes en comunicarte con nosotros si tienes preguntas!
Acerca de los autores
Camille Birbes Camille es arquitecto de soluciones sénior en AWS y reside en Hong Kong. Trabaja con importantes instituciones financieras para diseñar y crear soluciones seguras, escalables y de alta disponibilidad en la nube. Fuera del trabajo, a Camille le gustan todo tipo de juegos, desde juegos de mesa hasta los videojuegos más recientes.
Sri Harsha Subramanya Begolli Trabaja como arquitecto de soluciones sénior en AWS, con sede en Bengaluru, India. Su principal objetivo es ayudar a grandes empresas a modernizar sus aplicaciones y desarrollar sistemas basados en la nube para cumplir con sus objetivos comerciales. Su experiencia se centra en los ámbitos de los datos y el análisis.
- Distribución de relaciones públicas y contenido potenciado por SEO. Consiga amplificado hoy.
- PlatoData.Network Vertical Generativo Ai. Empodérate. Accede Aquí.
- PlatoAiStream. Inteligencia Web3. Conocimiento amplificado. Accede Aquí.
- PlatoESG. Carbón, tecnología limpia, Energía, Ambiente, Solar, Gestión de residuos. Accede Aquí.
- PlatoSalud. Inteligencia en Biotecnología y Ensayos Clínicos. Accede Aquí.
- Fuente: https://aws.amazon.com/blogs/big-data/use-ci-cd-best-practices-to-automate-amazon-opensearch-service-cluster-management-operations/