Implementación sin servidor con GitHub y Lambda – Buddy

En este artículo, mostraremos lo fácil que es ejecutar una aplicación Java en AWS Lambda utilizando Buddy para su integración continua y su implementación continua. En 15 minutos, estará ejecutando su software en la nube.

AWS Lambda se ha convertido en una fuente inagotable de implementación de software. Fomenta funciones simples, autónomas y sin estado que se ejecutan por sí mismas y eliminan una gran parte de la sobrecarga operativa tradicional asociada con la ejecución de software. Por desgracia, muchas herramientas de CI / CD tienen mucho que hacer antes de que se acerquen al tipo de facilidad que ofrece AWS Lambda.

Buddy pretende romper este molde. No es necesario ejecutar servidores Jenkins, no es necesario preguntarse por qué su compilación no se está iniciando o si los registros no aparecen. Solo una interfaz de usuario clara y simple que hace que implementar su aplicación sea tan fácil como ejecutarlo.

Este tutorial será simple y directo. Necesitará un par de cosas antes de comenzar …

Una cuenta de AWS que puede usar para aumentar la infraestructura. También necesitará el secreto y la clave de acceso para su usuario de IAM o cuenta raíz. Una cuenta en Buddy Una cuenta de GitHub que está integrada con la tolerancia BuddyA (o amor si así lo desea) de Java Aproximadamente 15 minutos de glorioso tiempo libre.

Puede armar su propia aplicación con los documentos de AWS, o puede encontrar un ejemplo listo aquí. Si decide crear su propia aplicación, tenga en cuenta que estoy asumiendo que está utilizando Maven y Java 8. Sin embargo, no hace mucha diferencia: Buddy también admite Gradle y versiones posteriores de Java.

Lo importante aquí es que su repositorio se transfiere a su cuenta de GitHub, ya sea una bifurcación de nuestro repositorio prefabricado o su propia creación maravillosa.

Inicie sesión en la consola de AWS y navegue a la sección Lambda. Vas a hacer lo que a todo desarrollador le encanta hacer. Haz algo nuevo y brillante.

Cree una nueva función con el botón naranja brillante: Crear AWS Lambda

2. Déle un nombre de función y seleccione el entorno de ejecución Java 8. Estos son los únicos bits de información requerida que su Lambda necesita para existir.

Información básica de Lambda

También hay una sección de permisos. Sin embargo, para el punto de este tutorial, no se preocupe por eso.

3. Cuando cree su Lambda, solo hay un campo que deberá cambiar. Lambda necesita saber qué archivo y función debe invocar cuando se activa:

Manipulador

Nadie llama a su aplicación "ejemplo". Cambie esto para que coincida con el nombre del paquete, el nombre de la clase y la función. Si está utilizando mi ejemplo, debe actualizar este campo para que contenga lo siguiente:

com.chris.buddy.LambdaHander :: handleRequest

Bueno. Dirígete a Buddy y haz clic en ese encantador Nuevo proyecto tile (otra cosa nueva, ¡este debe ser el paraíso del desarrollador!). Una vez que haga clic en él, deberá seleccionar su proveedor de Git y el repositorio para usar.

Elija su ejemplo de Lambda que le gustaría construir: Crear un nuevo proyecto Buddy

2. Buddy sabe automáticamente que es una aplicación Java, por lo tanto, haga clic en Agregar una nueva tubería en la página siguiente. Asigne un nombre a su canalización y configúrelo como desee. Como un defecto sensato, prefiero ir a algo como esto:

Agregar nueva tubería

De esta forma, la canalización se activará cada vez que presione una confirmación en la rama maestra.

3. Seleccione el mosaico Maven, ya que Buddy ya lo ha resaltado amablemente. Solo busca ese rojo Detectado faja en la parte superior izquierda del mosaico:

Selección Maven

4. En la página siguiente, verá que ya ha completado algunos comandos sensibles de Maven. Para mi ejemplo, esto funcionará perfectamente. Si no es lo que desea, no dude en modificar, pero mvn clean install tiende a cubrir la mayoría de las bases.

Detalles de Maven

5. Una vez que se agrega el actón, debe ejecutar su tubería. Esto escribirá su archivo .jar en su carpeta de destino. Esto es importante para el siguiente paso. Comprueba que todo pase bien cuando hayas corrido.

El último paso es agregar la acción Lambda. Para hacer esto, deberá hacer clic en el símbolo + justo debajo de su paso Maven en el Acciones primarias sección:

Acciones primarias

Esto abrirá el menú, desde el cual puede elegir su acción de implementación de Lambda. Puede ingresar "lambda" en la entrada de búsqueda o desplazarse un poco hacia abajo hasta llegar a Servicios web de Amazon sección que contiene una gran cantidad de acciones preconfiguradas para que las utilice. Selecciona el Azulejo de Lambda Deploy:

Lista de acción de AWS

En este punto, se enfrentará a un mensaje que le solicitará su nueva integración de AWS. Si no ha hecho esto antes, simplemente deberá pegar su clave secreta y de acceso desde su cuenta de AWS. Una vez que hayas hecho esto, solo tendrás que conectar la acción.

La razón por la que necesitaba ejecutar su canalización en el paso 5 era para que Buddy conociera la salida en su directorio de destino. Cuando esté configurando su acción Lambda, haga clic en el Vistazo botón al lado de la ruta a su código Lambda. Aquí puede ver el contenido del sistema de archivos de tubería:

lambda-browse

El sistema de archivos es el caché de la tubería. Contiene un clon del repositorio en la última revisión + archivos generados y modificados por acciones de compilación (artefactos).

En mi ejemplo, el artefacto de salida se llama buddy.jar:

Examinar el sistema de archivos de tubería

Haga clic en buddy.jar y seleccione el botón azul para usarlo como la ruta de origen para la implementación (debería ver que la ruta ahora se ha actualizado en su configuración). El resto es simple. Seleccione la región en la que existe su Lambda. Para mí, fue eu-west-1 así que seleccioné UE (Irlanda). Buddy ha creado automáticamente una lista desplegable de sus funciones lambda. Seleccione la función lambda que acaba de hacer de esta lista, luego seleccione Guarda esta acción.

¡Y dale un giro!

Haga clic en Ejecutar tubería, dale un comentario funky y observa cómo ocurre la magia. Ambos pasos deben ser ecológicos y verá que su código ahora se ha implementado en su AWS Lambda. Si está utilizando mi ejemplo, desde la consola de AWS puede crear una función de prueba que se vea así (el bit clave es simplemente pasar un número sin formato):

Configurar evento de prueba

Desde allí, guarde este evento y haga clic en el Prueba botón para ver la salida! Debería ver la versión de cadena de su número reproducida con un pequeño mensaje:

Ejecución exitosa

¡Salud! ¡Lo has hecho! ??

Buddy también admite la configuración de YAML, por lo que si quisiéramos, podríamos haber invocado todas estas acciones desde un buddy.yml en lugar de hacer clic manualmente. Entonces, ¿cómo harías esto?

En Buddy, busca este botón en el lado derecho:

Conmutador de configuración YAML

Haz clic en él, haz clic en él, haz clic en él. Esto abrirá un cuadro de diálogo con un interruptor. Haga clic en ese interruptor también (obviamente) y cambiará el modo de canalización de GUI a YAML. Esto significa que su canalización ahora espera un archivo de configuración buddy.yml en la raíz de su repositorio.

Si está utilizando mi repositorio de ejemplo, ya sabe que existe en el repositorio porque crea automáticamente la canalización al agregar el proyecto. Si no lo está, la siguiente documentación sobre YAML debe ser clara y fácil de seguir, pero si desea generar uno para usted, puede ver la versión de YAML de su canal aquí:

Mostrar YAML para canalización

Al hacer clic en esto, verá la definición YAML de una canalización de Buddy. Este YAML es fácil de leer y entender por sí solo. Por ejemplo, aquí está el YAML tomado del repositorio de muestras prefabricado:

– pipeline: "my-lambda-pipeline" trigger_mode: "ON_EVERY_PUSH" ref_name: "master" ref_type: "BRANCH" trigger_condition: "SIEMPRE" acciones: – action: "Execute: mvn clean install" type: "BUILD" working_directory: " / buddy / buddy-lambda-example-1 "docker_image_name:" library / maven "docker_image_tag:" 3.3.3 "execute_commands: -" mvn clean install "cached_dirs: -" /root/.m2/repository "mount_filesystem_path:" / buddy / buddy-lambda-example-1 "shell:" BASH "trigger_condition:" SIEMPRE "- acción:" Implementar función buddy-lambda "tipo:" AWS_LAMBDA_DEPLOY "local_path:" target / buddy.jar "region:" eu-west- 1 "nombre_función:" buddy-lambda "condición_activador:" SIEMPRE "id_integración: 58538

Entonces ahí lo tienes. En algún lugar en las profundidades de un centro de datos de AWS, en un servidor Blade en el medio de un bastidor, su código se está ejecutando y está devolviendo una respuesta a su IU. El código fue puesto allí por Buddy y su gran gama de integraciones.

Este proceso es fácil gracias a las tecnologías que se centran en la productividad, la simplicidad y la fiabilidad. Al permitir que las personas se concentren en estos valores, las empresas pueden lograr sus resultados más rápidamente y los ingenieros de software pueden enfocar sus esfuerzos en las cosas que más les importan.

Y de eso se trata Buddy.