Tutorial: creación y administración de un proyecto sin servidor en AWS CodeStar - AWS CodeStar

El 31 de julio de 2024, Amazon Web Services (AWS) dejará de ofrecer soporte para crear y visualizar proyectos de AWS CodeStar. Después del 31 de julio de 2024, ya no podrá acceder a la consola de AWS CodeStar ni crear nuevos proyectos. Sin embargo, los recursos de AWS que se hayan creado mediante AWS CodeStar, incluidos los repositorios de código fuente, las canalizaciones y las compilaciones, no se verán afectados por este cambio y seguirán funcionando en AWS CodeStar. Las conexiones y notificaciones de AWS CodeStar no se verán afectadas después de retirar dicho soporte.

 

Si desea realizar un seguimiento del trabajo, desarrollar código y crear, probar e implementar sus aplicaciones, Amazon CodeCatalyst ofrece un proceso de inicio simplificado y funciones adicionales para administrar sus proyectos de software. Obtenga más información sobre la funcionalidad y los precios de Amazon CodeCatalyst.

Tutorial: creación y administración de un proyecto sin servidor en AWS CodeStar

En este tutorial, utilizará AWS CodeStar para crear un proyecto que utiliza el Modelo de aplicación sin servidor de AWS (AWS SAM) para crear y administrar recursos de AWS para un servicio web alojado en AWS Lambda.

AWS CodeStar utiliza AWS SAM, que se basa en AWS CloudFormation, para ofrecer un modo sencillo de crear y administrar recursos de AWS admitidos, incluidas las API de Amazon API Gateway, las funciones de AWS Lambda y las tablas de Amazon DynamoDB. (Este proyecto no utiliza ninguna tabla de Amazon DynamoDB).

Para obtener más información, consulte el repositorio de AWS Serverless Application Model (AWS SAM) en GitHub.

Requisitos previos: Complete los pasos de Configuración de AWS CodeStar.

nota

Es posible que se apliquen cargos a su cuenta de AWS por los costos relacionados con este tutorial, incluidos los costos de los servicios de AWS utilizados por AWS CodeStar. Para obtener más información, consulte Precios de AWS CodeStar.

Información general

En este tutorial, va a:

  1. Utilizar AWS CodeStar para crear un proyecto que usa AWS SAM para compilar e implementar un servicio web basado en Python. Este servicio web está alojado en AWS Lambda y se puede acceder al mismo a través de Amazon API Gateway.

  2. Explorar los recursos principales del proyecto, que incluyen:

    • El repositorio de AWS CodeCommit donde está almacenado el código fuente del proyecto. Este código fuente incluye la lógica del servicio web y define recursos de AWS relacionados.

    • La canalización de AWS CodePipeline que automatiza la construcción del código fuente. Esta canalización utiliza AWS SAM para crear e implementar una función en AWS Lambda, crear una API relacionada en Amazon API Gateway y conectar la API a la función.

    • La función que se implementa en AWS Lambda.

    • La API que se crea en Amazon API Gateway.

  3. Probar el servicio web para confirmar que AWS CodeStar compila e implementa el servicio web según lo previsto.

  4. Configurar la estación de trabajo local para trabajar con el código fuente del proyecto.

  5. Cambiar el código fuente del proyecto utilizando su estación de trabajo local. Al añadir una función al proyecto y, a continuación, enviar los cambios al código fuente, AWS CodeStar vuelve a compilar e implementar el servicio web.

  6. Probar el servicio web de nuevo para confirmar que AWS CodeStar se ha vuelto a compilar e implementar según lo previsto.

  7. Escribir una prueba de unidad utilizando su estación de trabajo local para sustituir algunas de las pruebas manuales con una prueba automatizada. Al enviar la prueba de unidad, AWS CodeStar vuelve a compilar e implementar el servicio web y ejecuta la prueba de unidad.

  8. Consultar los resultados de las pruebas de unidad.

  9. Eliminar el proyecto. Este paso le ayuda a evitar cargos en su cuenta de AWS para los costos relacionados con este tutorial.

Paso 1: creación del proyecto

En este paso, utilice la consola de AWS CodeStar para crear un proyecto.

  1. Inicie sesión en la AWS Management Console y abra la consola de AWS CodeStar en https://console.aws.amazon.com/codestar/.

    nota

    Debe iniciar sesión en la AWS Management Console con las credenciales asociadas al usuario de IAM que haya creado o identificado en Configuración de AWS CodeStar. Este usuario debe tener la política administrada AWSCodeStarFullAccess asociada.

  2. Elija la región de AWS donde desea crear el proyecto y sus recursos.

    Para obtener más información sobre las regiones de AWS en las que AWS CodeStar está disponible, consulte Regiones y puntos de conexión en la Referencia general de AWS .

  3. Elija Crear proyecto.

  4. En la página Elegir una plantilla de proyecto:

    • En Tipo de aplicación, seleccione Servicio web.

    • En Lenguaje de programación, seleccione Python.

    • En Servicios de AWS, seleccione AWS Lambda.

  5. Seleccione la casilla que contiene sus selecciones. Elija Siguiente.

  6. En Nombre del proyecto, escriba un nombre para el proyecto (por ejemplo, My SAM Project). Si usa un nombre distinto al del ejemplo, asegúrese de utilizarlo en todo el tutorial.

    En ID del proyecto, AWS CodeStar elija un identificador relacionado para este proyecto (por ejemplo, my-sam-project). Si ve un ID de proyecto diferente, asegúrese de utilizarlo durante todo el tutorial.

    Deje AWS CodeCommit seleccionado y no cambie el valor de Nombre del repositorio.

  7. Elija Siguiente.

  8. Revise la configuración y, a continuación, seleccione Crear presupuesto.

    Si es la primera vez que utiliza AWS CodeStar en esta región de AWS, en Mostrar nombre y Correo electrónico, escriba el nombre que mostrar y la dirección de correo electrónico que desee que utilice AWS CodeStar para su usuario de IAM. Elija Siguiente.

  9. Espere mientras AWS CodeStar crea el proyecto. Esto podría tardar varios minutos. No continúe hasta que vea el banner Proyecto aprovisionado al actualizar.

Paso 2: explorar recursos del proyecto

En este paso, se exploran cuatro de los recursos de AWS del proyecto para comprender cómo funciona el proyecto:

  • El repositorio de AWS CodeCommit donde está almacenado el código fuente del proyecto. AWS CodeStar asigna al repositorio el nombre my-sam-project, donde my-sam-project es el nombre del proyecto.

  • La canalización de AWS CodePipeline que utiliza CodeBuild y AWS SAM para automatizar la compilación y la implementación de la función de Lambda y de la API del servicio web en API Gateway. AWS CodeStar asigna a la canalización el nombre my-sam-project--Pipeline, donde my-sam-project es el ID del proyecto.

  • La función de Lambda que contiene la lógica del servicio web. AWS CodeStar asigna a la función el nombre awscodestar-my-sam-project-lambda-HelloWorld-ID_ALEATORIO, donde:

    • my-sam-project es el ID del proyecto.

    • HelloWorld es el ID de la función tal y como se especifica en el archivo template.yaml del repositorio de AWS CodeCommit. Puede explorar este archivo más adelante.

    • ID_ALEATORIO es un ID aleatorio que AWS SAM asigna a la función para ayudar a garantizar su exclusividad.

  • La API en API Gateway que facilita las tareas para llamar a la función de Lambda. AWS CodeStar asigna a la API el nombre awscodestar-my-sam-project--lambda, donde my-sam-project es el ID del proyecto.

Para explorar el repositorio de código fuente en CodeCommit
  1. Con el proyecto abierto en la consola de AWS CodeStar, en la barra de navegación, seleccione Repositorio.

  2. Seleccione el enlace a su repositorio de CodeCommit (My-SAM-Project) en Detalles del repositorio.

  3. En la consola de CodeCommit, en la página Código, se muestran los archivos de código fuente del proyecto:

    • buildspec.yml, que CodePipeline indica a CodeBuild que utilice durante la fase de compilación para comprimir el servicio web con AWS SAM.

    • index.py, que contiene la lógica de la función de Lambda. Esta función simplemente genera la cadena Hello World y una marca de tiempo en formato ISO.

    • README.md, que contiene información general sobre el repositorio.

    • template-configuration.json, que contiene el ARN del proyecto con marcadores de posición utilizados para etiquetar recursos con el ID del proyecto

    • template.yml, que utiliza AWS SAM para comprimir el servicio web y crear la API en API Gateway.

    
                        Los archivos de código fuente del proyecto en CodeCommit

    Para ver el contenido de un archivo, elíjalo en la lista.

    Para obtener más información sobre cómo utilizar la consola de CodeCommit, consulte la Guía del usuario de AWS CodeCommit.

Para explorar la canalización en CodePipeline
  1. Para ver información acerca de la canalización, abra el proyecto en la consola de AWS CodeStar y, en la barra de navegación, seleccione Canalización; a continuación, verá que la canalización contiene:

    • Una etapa Origen para obtener el código fuente desde CodeCommit.

    • Una etapa de compilación para crear el código fuente con CodeBuild.

    • Una etapa Implementar para implementar el código fuente compilado y los recursos de AWS con AWS SAM.

  2. Para ver más información sobre la canalización, en Detalles de la canalización, elija la canalización para abrirla en la consola de CodePipeline.

Para obtener más información sobre la consola de CodePipeline, consulte la Guía del usuario de AWS CodePipeline.

Para explorar la actividad del proyecto y los recursos del servicio de AWS en la página Información general
  1. Abra el proyecto en la consola de AWS CodeStar. En la barra de navegación, seleccione Información general.

  2. Revise las listas Actividad del proyecto y Recursos del proyecto.

Para explorar la función en Lambda
  1. Con el proyecto abierto en la consola de AWS CodeStar, en la barra de navegación lateral, seleccione Información general.

  2. En Recursos del proyecto, seleccione el enlace en la columna ARN para la función de Lambda.

    El código de la función se muestra en la consola de Lambda.

Para obtener más información acerca de la consola de Lambda, consulte la Guía para desarrolladores de AWS Lambda.

Para explorar la API en API Gateway
  1. Con el proyecto abierto en la consola de AWS CodeStar, en la barra de navegación lateral, seleccione Información general.

  2. En Recursos del proyecto, seleccione el enlace en la columna ARN para la API de Amazon API Gateway.

    Los recursos de la API se muestran en la consola de API Gateway.

Para obtener más información sobre la consola de API Gateway, consulte la Guía para desarrolladores de API Gateway.

Paso 3: probar el servicio web

En este paso, probará el servicio web que AWS CodeStar acaba de compilar e implementar.

  1. Con el proyecto abierto en el paso anterior, en la barra de navegación, seleccione Canalización.

  2. Asegúrese de que se muestre el estado Correcto en las etapas Fuente, Compilación e Implementación antes de continuar. Esto podría tardar varios minutos.

    nota

    Si se muestra Error en alguna de las etapas, consulte la siguiente ayuda para la solución de problemas:

  3. Seleccione Ver aplicación.

En la pestaña nueva que se abre en el navegador web, el servicio web muestra la siguiente salida de respuesta:

{"output": "Hello World", "timestamp": "2017-08-30T15:53:42.682839"}

Paso 4: configurar la estación de trabajo para editar código de proyecto

En este paso, configurará la estación de trabajo local para editar el código fuente en el proyecto de AWS CodeStar. Su estación de trabajo local puede ser un equipo físico o virtual que se ejecuta en macOS, Windows o Linux.

  1. Con su proyecto aún abierto del paso anterior:

    • En la barra de navegación, seleccione IDE y, a continuación, expanda Acceder al código del proyecto.

    • Seleccione Ver instrucciones debajo de la Interfaz de la línea de comandos.

      Si tiene instalado Visual Studio o Eclipse, seleccione Ver instrucciones debajo de Visual Studio o Eclipse en su lugar, siga las instrucciones y, a continuación, pase a Paso 5: añadir lógica al servicio web.

  2. Siga las instrucciones para completar las siguientes tareas:

    1. Configure Git en su estación de trabajo.

    2. Utilice la consola de IAM para generar credenciales de Git para su usuario de IAM.

    3. Clone el repositorio de CodeCommit del proyecto en su estación de trabajo local.

  3. En el panel de navegación izquierdo, seleccione Proyecto para volver a la información general del proyecto.

Paso 5: añadir lógica al servicio web

En este paso, utilice su estación de trabajo local para añadir lógica al servicio web. En concreto, añada una función de Lambda y, a continuación, conéctela a la API en API Gateway.

  1. En su estación de trabajo local, vaya al directorio que contiene el repositorio del código fuente clonado.

  2. En dicho directorio, cree un archivo llamado hello.py. Añada el siguiente código y luego guarde el archivo:

    import json def handler(event, context): data = { 'output': 'Hello ' + event["pathParameters"]["name"] } return { 'statusCode': 200, 'body': json.dumps(data), 'headers': {'Content-Type': 'application/json'} }

    El código anterior simplemente genera la cadena Hello junto la cadena que envía el intermediario a la función.

  3. En el mismo directorio, abra el archivo template.yml. Añada el siguiente código al final del archivo y, a continuación, guárdelo:

    Hello: Type: AWS::Serverless::Function Properties: FunctionName: !Sub 'awscodestar-${ProjectId}-lambda-Hello' Handler: hello.handler Runtime: python3.7 Role: Fn::GetAtt: - LambdaExecutionRole - Arn Events: GetEvent: Type: Api Properties: Path: /hello/{name} Method: get

    AWS SAM utiliza este código para crear una función en Lambda, añadir un nuevo método y ruta a la API en API Gateway y, a continuación, conectar este método y ruta a la nueva función.

    nota

    La sangría del código anterior es importante. Si no añade código exactamente como se muestra, es posible que el proyecto no se cree correctamente.

  4. Ejecute git add . para añadir cambios en el archivo en el área provisional del repositorio clonado. No olvide el punto (.), que añade todos los archivos modificados.

    nota

    Si utiliza Visual Studio o Eclipse en lugar de la línea de comando, las instrucciones para el uso de Git podrían ser diferentes. Consulte la documentación de Eclipse o Visual Studio.

  5. Ejecute git commit -m "Added hello.py and updated template.yaml." para confirmar sus archivos provisionales en el repositorio clonado

  6. Ejecute git push para enviar la confirmación al repositorio remoto.

    nota

    Es posible que se le pidan las credenciales de inicio de sesión que se generaron anteriormente. Para evitar que se le pida cada vez que interactúe con el repositorio remoto, considere la posibilidad de instalar y configurar un administrador de credenciales de Git. Por ejemplo, en macOS o Linux, puede ejecutar git config credential.helper 'cache --timeout 900' en el terminal para que no las solicite antes de transcurridos 15 minutos. También puede ejecutar git config credential.helper 'store --file ~/.git-credentials' para que nunca se las pida de nuevo. Git almacena sus credenciales en texto sin formato en un archivo de su directorio de inicio. Para obtener más información, consulte Git Tools - Credential Storage en el sitio web de Git.

Una vez que AWS CodeStar detecta el envío, ordena a CodePipeline que utilice CodeBuild y AWS SAM para volver a compilar e implementar el servicio web. Puede ver el progreso de la implementación en la página Canalización.

AWS SAM asigna a la nueva función el nombre awscodestar-my-sam-project-lambda-Hello-ID_ALEATORIO, donde:

  • my-sam-project es el ID del proyecto.

  • Hello es el ID de la función tal como se especifica en el archivo template.yaml.

  • ID_ALEATORIO es un ID aleatorio que AWS SAM asigna a la función para que sea exclusiva.

Paso 6: probar el servicio web mejorado

En este paso, pruebe el servicio web mejorado que AWS CodeStar ha creado e implementado, en función de la lógica que añadió en el paso anterior.

  1. Con el proyecto todavía abierto en la consola de AWS CodeStar, en la barra de navegación, seleccione Canalización.

  2. Asegúrese de que la canalización se haya vuelto a ejecutar y que se muestre el estado Correcto en las etapas Fuente, Compilación e Implementación antes de continuar. Esto podría tardar varios minutos.

    nota

    Si se muestra Failed (Error) en alguna de las etapas, consulte la siguiente ayuda para la solución de problemas:

  3. Seleccione Ver aplicación.

    En la pestaña nueva que se abre en el navegador web, el servicio web muestra la siguiente salida de respuesta:

    {"output": "Hello World", "timestamp": "2017-08-30T15:53:42.682839"}
  4. En el cuadro de dirección de la pestaña, añada la ruta /hello/ y su nombre al final de la URL (por ejemplo, https://ID_API.execute-api.ID_REGIÓN.amazonaws.com/Prod/hello/SU_NOMBRE) y después pulse Intro.

Si su nombre es Mary, el servicio web de salida muestra la siguiente salida de respuesta:

{"output": "Hello Mary"}

Paso 7: añadir una prueba de unidad al servicio web

En este paso, utilice la estación de trabajo local para añadir una prueba que AWS CodeStar ejecutará en el servicio web. Esta prueba sustituye las pruebas manuales que realizó antes.

  1. En su estación de trabajo local, vaya al directorio que contiene el repositorio del código fuente clonado.

  2. En dicho directorio, cree un archivo llamado hello_test.py. Añada el siguiente código y luego guarde el archivo.

    from hello import handler def test_hello_handler(): event = { 'pathParameters': { 'name': 'testname' } } context = {} expected = { 'body': '{"output": "Hello testname"}', 'headers': { 'Content-Type': 'application/json' }, 'statusCode': 200 } assert handler(event, context) == expected

    Esta prueba comprueba si la salida de la función de Lambda está en el formato previsto. En caso afirmativo, la prueba se ejecuta satisfactoriamente. De lo contrario, la prueba falla.

  3. En el mismo directorio, abra el archivo buildspec.yml. Sustituya el contenido del archivo por el siguiente código y, a continuación, guárdelo.

    version: 0.2 phases: install: runtime-versions: python: 3.7 commands: - pip install pytest # Upgrade AWS CLI to the latest version - pip install --upgrade awscli pre_build: commands: - pytest build: commands: # Use AWS SAM to package the application by using AWS CloudFormation - aws cloudformation package --template template.yml --s3-bucket $S3_BUCKET --output-template template-export.yml # Do not remove this statement. This command is required for AWS CodeStar projects. # Update the AWS Partition, AWS Region, account ID and project ID in the project ARN on template-configuration.json file so AWS CloudFormation can tag project resources. - sed -i.bak 's/\$PARTITION\$/'${PARTITION}'/g;s/\$AWS_REGION\$/'${AWS_REGION}'/g;s/\$ACCOUNT_ID\$/'${ACCOUNT_ID}'/g;s/\$PROJECT_ID\$/'${PROJECT_ID}'/g' template-configuration.json artifacts: type: zip files: - template-export.yml - template-configuration.json

    Esta especificación de compilación indica a CodeBuild que instale pytest, el marco de pruebas de Python, en su entorno. CodeBuild utiliza pytest para ejecutar la prueba unitaria. El resto de la especificación de compilación es la misma que antes.

  4. Utilice Git para introducir estos cambios en el repositorio remoto.

    git add . git commit -m "Added hello_test.py and updated buildspec.yml." git push

Paso 8: ver los resultados de pruebas de la unidad

En este paso, verá si la prueba de unidad se ha realizado con éxito o ha fallado.

  1. Con el proyecto todavía abierto en la consola de AWS CodeStar, en la barra de navegación, seleccione Canalización.

  2. Asegúrese de que la canalización se haya vuelto a ejecutar antes de continuar. Esto podría tardar varios minutos.

    Si la prueba de unidad se ha realizado correctamente, se muestra Correcto en la etapa Compilar.

  3. Para ver los detalles del resultado de la prueba unitaria, en la etapa de compilación, seleccione el enlace de CodeBuild.

  4. En la consola de CodeBuild, en la página Proyecto de compilación: my-sam-project, en Historial de compilaciones, seleccione el enlace en la columna Ejecución de la compilación de la tabla.

  5. En la página my-sam-project:ID_COMPILACIÓN, en Registros de compilación, elija el enlace Ver el registro completo.

  6. En la consola de Registros de Amazon CloudWatch, consulte la salida del registro para ver un resultado de prueba similar al siguiente. En el siguiente resultado de prueba, la prueba se ha superado:

    ... ============================= test session starts ============================== platform linux2 -- Python 2.7.12, pytest-3.2.1, py-1.4.34, pluggy-0.4.0 rootdir: /codebuild/output/src123456789/src, inifile: collected 1 item hello_test.py . =========================== 1 passed in 0.01 seconds =========================== ...

    Si la prueba no se ha superado, debería haber detalles en la salida de registro para ayudarle a solucionar el error.

Paso 9: Eliminación

En este paso, elimine el proyecto para evitar cargos continuos relacionados con este proyecto.

Si desea seguir utilizando este proyecto, puede omitir este paso, pero es posible que se aplique un cargo en su cuenta de AWS.

  1. Con el proyecto todavía abierto en la consola de AWS CodeStar, en la barra de navegación, seleccione Configuración.

  2. En Detalles del proyecto, seleccione Eliminar proyecto.

  3. Escriba delete, marque la casilla Eliminar recursos y, a continuación, seleccione Eliminar.

    importante

    Si desmarca esta casilla, el registro del proyecto se eliminará de AWS CodeStar, pero se conservarán numerosos recursos de AWS del proyecto. Es posible que se aplique un cargo en su cuenta de AWS.

Si todavía hay un bucket de Amazon S3 que AWS CodeStar ha creado para este proyecto, siga los pasos que se indican a continuación para eliminarlo:

  1. Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

  2. En la lista de buckets, seleccione el icono junto a aws-codestar-ID_REGIÓN-ID_CUENTA-my-sam-project--pipe, donde:

    • ID_REGIÓN es el ID de la región de AWS del proyecto que acaba de eliminar.

    • ID_CUENTA es el ID de la cuenta de AWS.

    • my-sam-project es el ID del proyecto que acaba de eliminar.

  3. Elija Vaciar bucket. Escriba el nombre del bucket y después elija Confirmar.

  4. Seleccione Eliminar bucket. Escriba el nombre del bucket y después elija Confirmar.

Pasos siguientes

Ahora que ha completado este tutorial, le recomendamos que revise los siguientes recursos: