Nombre: | Tutorial #2 - AWS CodeCommit & CodeBuild |
Duración: | 60 minutos |
Profesor responsable | Mario Villamizar |
Pre-Requisitos: | Python + Flask + Git + AWS IaaS |
Objetivos
Al finalizar el tutorial el estudiante estará en capacidad de:
Requisitos para desarrollar el tutorial
En particular se utilizarán los siguientes recursos:
El código de la aplicación lo encuentra en el siguiente repositorio de GitHub:
https://github.com/WeimarG/taller-pipeline-beanstalk.git
La aplicación es una pequeña API en Python y Flask con dos endpoints.
Endpoint | / |
Descripción | Lista la información de todos los héroes registrados en plataforma. |
Método | GET |
Retorno | application/json, con todos los héroes registrados en plataforma. |
Parámetros del Endpoint | Ninguno |
Endpoint | /<int:id_heroe> |
Descripción | Permite recuperar la información de un héroe registrado en plataforma. |
Método | GET |
Retorno | application/json. Con un diccionario que representa la información de un héroe. |
Parámetros del Endpoint | Ninguno. |
Ingrese a la consola de administración de AWS y en el menú servicios selecciones CodeCommit.
En la ventana principal de AWS CodeCommit selección el botón "Crear el repositorio"
Agregue un nombre y descripción para el repositorio y de clic en el botón crear.
Para realizar conexiones remotas desde su máquina local hacia el repositorio de AWS CodeCommit debe configurar la conexión https para AWS con git-remote-codecommit.
git-remote-codecommit es una utilidad que permite la extracción e inserción de código en repositorios de CodeCommit utilizando la aplicación de Git.
Para este ejemplo, se utilizará un usuario de IAM para realizar la conexión desde la máquina local hacia AWS CodeCommit.
Para utilizar correctamente git-remote-codecommit se deben tener instaladas algunas dependencias, las cuales son:
Puede descargar python a través del sitio oficial en:
pip se instalará automáticamente con las últimas versiones de Python
Puede descargar Git a través en:
Puede validar la versión de cada una de las dependencias con los siguientes comandos:
Nota: Si después de instalar python en Windows presenta error al ejecutar los comandos de pip, verifique las características instaladas, para esto diríjase a aplicaciones y características y busque la aplicación de Python.
A continuación de clic sobre la aplicación y seleccione la opción Modificar.
Por último, valide que la opción de pip esté seleccionada y de clic en el botón Next e Install para finalizar el proceso.
Actividad 2.1 Creación y configuración de usuario IAM
Para tener una conexión correcta desde la máquina local hacia el repositorio de AWS CodeCommit, es necesario la creación de un usuario IAM quien tendrá configuradas las políticas necesarias para permitir el acceso a la cuenta de AWS.
Diríjase a la consola de administración de AWS y en el menú servicios selecciones IAM.
En el panel de navegación de IAM seleccione la opción Usuarios y posteriormente en el botón "Agregar usuarios"
Asigne un nombre de usuario y seleccione, en tipo de acceso, la opción "Clave de acceso: acceso mediante programación". De clic en el botón Siguiente. Puede asignarle el nombre de usuario "Tutorial2DevOpsCodeCommitUser".
En la siguiente ventana seleccione la opción "Añadir un usuario al grupo" y de clic en el botón "Crear un grupo", este nuevo grupo tendrá cada una de la políticas y permisos para el acceso de los usuarios a los servicios de AWS. Puede asignarle el nombre de grupo "Tutorial2DevOpsCodeCommitGroup".
En la ventana de creación de grupo asigne un Nombre de grupo y en la sección de políticas filtre por "CodeCommit" para la seleccionar la polítca "AWSCodeCommitFullAccess".
Al finalizar la creación del grupo, selecciónelo y de clic en "Siguiente".
Continue por las siguientes ventanas dejando los valores por defecto y finalice dando clic en el botón "Crear un usuario".
Por último, copie o descargue la clave de acceso del usuario ya que estas son necesarias para los próximos pasos.
Descargue el instalador de AWS CLI a través del siguiente enlace:
https://awscli.amazonaws.com/AWSCLIV2.msi
(si requiere un instalador para otro SO valide la documentación de AWS)
Al ejecutar el instalador verá una pantalla como la siguiente.
De clic en Next y acepte los términos de licencia, por último, de clic en Install
Podrá validar la correcta instalación ejecutando los siguientes comandos en la consola:
A continuación, estando en la consola, ejecute el siguiente comando para configurar el perfil que usará el AWS CLI.
aws configure
Se le solicitará que ingrese las credenciales del usuario creado anteriormente, región y formato.
Dentro de la consola ejecute el comando:
pip install git-remote-codecommit
Este comando descargará todos los complementos necesarios y posteriormente instalará git-remote-codecommit.
Si el proceso finalizó correctamente, observará el mensaje "Successfully built git-remote-codecommit "
Clone el repositorio en su máquina local
> git clone https://github.com/WeimarG/taller-pipeline-beanstalk.git tutorial-2-devops
A continuación, diríjase a la consola de AWS e ingrese al servicio de AWS CodeCommit.
De clic en la sección Repositorios y copie la URL HTTPS (GRC) del repositorio que creó en la Actividad 1.
Regrese nuevamente a la consola de su equipo local, ingrese dentro del directorio del repositorio de la aplicación y ejecute el comando:
git remote add origin codecommit::us-east-1://MyRepository
Donde "MyRepository" corresponde a el nombre del repositorio creado en AWS CodeCommit"
En este caso, el comando sería:
git remote add origin codecommit::us-east-2://Test-Repo-CodeCommit
Prepare todos los archivos de la aplicación y realice un push de estos al repositorio de CodeCommit con el comando:
git push -u origin master
A continuación, ingrese nuevamente a la consola de AWS y diríjase al servicio de AWS CodeCommit para validar que los archivos se hayan cargado correctamente al repositorio.
Por último, si desea clonar su repositorio de CodeCommit en una máquina local deberá utilizar el siguiente comando:
git clone codecommit::us-east-2://MyRepository
Donde "MyRepository" corresponde a el nombre del repositorio creado en AWS CodeCommit"
AWS CodeBuild es un servicio de compilación de código administrado por AWS. Este servicio permite realizar test unitarios y genera artefactos para su implementación en producción.
Con AWS CodeBuild puede realizar pruebas sobre las diferentes versiones de su aplicación, esto se debe a que se puede integrar con diferentes herramientas como GitHub, AWS CodeCommit, S3, entre otros.
AWS CodeBuild no necesita la implementación ni administración de infraestructura como servidores o grupos de seguridad ya que es un servicio serverless donde lo único que debe hacer es cargar el código de su aplicación en un repositorio y AWS CodeBuild se conectará para realizar la compilación.
CodeBuild es compatible con los lenguajes de programación más conocidos por lo que no debe preocuparse por utilizar un lenguaje en específico.
AWS CodeBuild permite realizar integraciones con herramientas como CodePipeline para ser parte de una canalización y posteriormente realizar el despliegue de la aplicación en un ambiente de producción.
Ingrese a la consola de administración de AWS y en el menú servicios selecciones CodeBuild.
En la ventana principal de CodeBuild de clic en el botón "Crear el Proyecto"
Asigne un nombre y descripción para el proyecto
Agregue el origen del código de su aplicación y el repositorio, para este caso se utilizará como origen AWS CodeCommit que es donde se almacenó con anterioridad el código de la aplicación de prueba.
Puede seleccionar varios tipos de referencia de la versión del código que desea compilar y testear, dentro de las opciones está:
Para este caso se seleccionará la opción Ramificación donde se tomará como referencia la rama master.
A continuación, debe seleccionar el entorno, para esto podrá seleccionar entre una imagen administrada por AWS o una imagen de Docker personalizada. Para este caso se seleccionará una imagen administrada por AWS con sistema operativo Ubuntu.
Es recomendable que seleccione la versión de la imagen más actualizada.
Por otro lado, debe seleccionar o crear un Rol de servicio el cual permitirá que CodeBuild tenga acceso a los recursos necesarios. Para este caso, se creará un nuevo rol con el nombre por defecto.
En la siguiente sección encontrará la configuración de BuildSpec (Especificación de compilación).
BuildSpec es un archivo con formato YAML (.yml) el cual contiene un grupo de comandos de compilación que utiliza CodeBuild para ejecutar las compilaciones.
El archivo BuildSpec.yml puede estar dentro del código fuente o puede especificarlo en el momento de la creación del proyecto.
Se recomienda que el archivo tenga el nombre buildspec.yml en caso de que requiera usar otro nombre para diferenciar varias compilaciones, debe especificar este nombre en el momento que cree el proyecto de CodeBuild.
Para obtener más información de la construcción y sintaxis de BuildSpec diríjase al siguiente enlace:
https://docs.aws.amazon.com/es_es/codebuild/latest/userguide/build-spec-ref.html
Para este ejemplo, se especificará que el archivo de compilación está dentro del código fuente.
Por último, debe definir como quiere hacer el registro de logs y donde almacenarlos.
En este caso se hará el registro de los logs en CloudWatch.
De clic en el botón "Crear el proyecto de compilación"
En esta parte estará construido el proyecto de CodeBuild y podrá iniciar con los Test de compilación.
A continuación, de clic en el botón "Iniciar la compilación", para iniciar las pruebas.
Podrá ver el estado de la compilación mientras se ejecuta.
Si la compilación finalizó correctamente vera algo similar a la siguiente imagen:
En este punto se hace necesario
[1] https://docs.aws.amazon.com/es_es/codecommit/latest/userguide/getting-started-cc.html
[2] https://docs.aws.amazon.com/es_es/codecommit/latest/userguide/setting-up.html
[3] https://docs.aws.amazon.com/es_es/codecommit/latest/userguide/setting-up-git-remote-codecommit.html
[4] https://docs.aws.amazon.com/es_es/cli/latest/userguide/install-cliv2-windows.html
[5] https://docs.aws.amazon.com/es_es/codebuild/latest/userguide/codebuild-user.pdf
[6] https://docs.aws.amazon.com/es_es/codebuild/latest/userguide/build-env-ref.html
[7] https://docs.aws.amazon.com/es_es/codebuild/latest/userguide/build-spec-ref.html
[8] https://docs.aws.amazon.com/es_es/codebuild/latest/userguide/concepts.html#concepts-how-it-works