Tutorial: Crear un proyecto en AWS CodeStar con la AWS CLI - 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: Crear un proyecto en AWS CodeStar con la AWS CLI

En este tutorial se muestra cómo utilizar la AWS CLI para crear un proyecto de AWS CodeStar con código fuente de muestra y una plantilla de cadena de herramientas de muestra. AWS CodeStar aprovisiona la infraestructura de AWS y recursos de IAM especificados en una plantilla de cadena de herramientas de AWS CloudFormation. El proyecto administra los recursos de cadena de herramientas para compilar e implementar el código fuente.

AWS CodeStar utiliza AWS CloudFormation para compilar e implementar el código de muestra. Este código de muestra crea un servicio web que está alojado en AWS Lambda y al que se puede acceder desde Amazon API Gateway.

Requisitos previos:

  • Realice los pasos que se indican en Configuración de AWS CodeStar.

  • Tiene que haber creado un bucket de almacenamiento de Amazon S3. En este tutorial, debe cargar el código fuente de muestra y la plantilla de la cadena de herramientas en esta ubicación.

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.

Paso 1: Descargar y revisar el código fuente de muestra

Hay un archivo .zip disponible para su descarga para este tutorial. Contiene código fuente de muestra para una aplicación de muestra de Node.js en la plataforma de computación Lambda. Cuando el código fuente se coloca en el repositorio, la carpeta y los archivos aparecen tal como se muestra a continuación:

tests/ app.js buildspec.yml index.js package.json README.md template.yml

Los siguientes elementos del proyecto están representados en su código fuente de muestra:

  • tests/: pruebas unitarias configuradas para este proyecto de CodeBuild del proyecto. Esta carpeta se incluye en el código de muestra, pero no es necesaria para crear un proyecto.

  • app.js: código fuente de la aplicación para el proyecto.

  • buildspec.yml: instrucciones de compilación de la etapa de compilación del recurso de CodeBuild. Este archivo es necesario para una plantilla de cadena de herramientas con un recurso de CodeBuild.

  • package.json: información sobre las dependencias para el código fuente de la aplicación.

  • README.md: archivo readme del proyecto incluido en todos los proyectos de AWS CodeStar. Este archivo se incluye en el código de muestra, pero no es necesario para crear un proyecto.

  • template.yml: archivo de plantilla de la infraestructura o archivo de plantilla SAM incluido en todos los proyectos de AWS CodeStar. Esto es diferente de la plantilla de la cadena de herramientas .yml que cargará más adelante en este tutorial. Este archivo se incluye en el código de muestra, pero no es necesario para crear un proyecto.

Paso 2: Descargar la plantilla de la cadena de herramientas de muestra

La plantilla de la cadena de herramientas de muestra incluida para este tutorial crea un repositorio (CodeCommit), una canalización (CodePipeline) y un contenedor de compilación (CodeBuild) y utiliza AWS CloudFormation para implementar el código fuente en una plataforma de Lambda. Además de estos recursos, también hay roles de IAM que puede utilizar para definir el ámbito de los permisos de su entorno de tiempo de ejecución, un bucket de Amazon S3 que CodePipeline utiliza para almacenar los artefactos de implementación y una regla de CloudWatch Events que se utiliza para desencadenar las implementaciones de canalización al enviar un código al repositorio. Para seguir las prácticas recomendadas de AWS IAM, reduzca el ámbito de las políticas de sus roles de la cadena de herramientas definidos en este ejemplo.

Descargue y descomprima la plantilla de AWS CloudFormation de muestra en formato YAML.

Al ejecutar el comando create-project más adelante en el tutorial, esta plantilla crea los siguientes recursos de la cadena de herramientas personalizadas de AWS CloudFormation. Para obtener más información acerca de los recursos creados en este tutorial, consulte los siguientes temas de la Guía del usuario de AWS CloudFormation:

  • El recurso AWS::CodeCommit::Repository de AWS CloudFormation crea un repositorio de CodeCommit.

  • El recurso AWS::CodeBuild::Project de AWS CloudFormation crea un proyecto de compilación de CodeBuild.

  • El recurso AWS::CodeDeploy::Application de AWS CloudFormation crea una aplicación de CodeDeploy.

  • El recurso AWS::CodePipeline::Pipeline de AWS CloudFormation crea una canalización de CodePipeline.

  • El recurso AWS::S3::Bucket AWS CloudFormation crea el bucket de artefactos de su canalización.

  • El recurso AWS::S3::BucketPolicy AWS CloudFormation crea la política del bucket del artefacto para el bucket del artefacto de la canalización.

  • El recurso AWS::IAM::Role de AWS CloudFormation crea el rol de trabajador de IAM de CodeBuild que otorga permisos a AWS CodeStar para administrar su proyecto de compilación de CodeBuild.

  • El recurso AWS::IAM::Role de AWS CloudFormation crea el rol de trabajador de IAM de CodePipeline que otorga permisos a AWS CodeStar para crear la canalización.

  • El recurso AWS::IAM::Role AWS CloudFormation crea el rol de trabajador de IAM de AWS CloudFormation que otorga permisos a AWS CodeStar para crear la pila de recursos.

  • El recurso AWS::IAM::Role AWS CloudFormation crea el rol de trabajador de IAM de AWS CloudFormation que otorga permisos a AWS CodeStar para crear la pila de recursos.

  • El recurso AWS::IAM::Role AWS CloudFormation crea el rol de trabajador de IAM de AWS CloudFormation que otorga permisos a AWS CodeStar para crear la pila de recursos.

  • El recurso AWS::Events::Rule de AWS CloudFormation crea el rol de CloudWatch Events que monitoriza el repositorio para enviar eventos.

  • El recurso AWS::IAM::Role de AWS CloudFormation crea el rol de IAM de CloudWatch Events.

Paso 3: Comprobar la plantilla de la cadena de herramientas en AWS CloudFormation

Antes de cargar la plantilla de la cadena de herramientas, puede probar la plantilla de la cadena de herramientas en AWS CloudFormation y solucionar los errores.

  1. Guarde la plantilla actualizada en el equipo local y abra la consola de AWS CloudFormation. Elija Create Stack. Debería ver los nuevos recursos en la lista.

  2. Revise la pila para ver si se han producido errores al crearla.

  3. Tras finalizar la prueba, elimine la pila.

    nota

    Asegúrese de eliminar la pila y todos los recursos creados en AWS CloudFormation. De lo contrario, al crear el proyecto, se podrían producir errores con los nombres de recursos ya en uso.

Paso 4: Cargar el código fuente y la plantilla de la cadena de herramientas

Para crear un proyecto de AWS CodeStar, primero debe empaquetar el código fuente en un archivo .zip y colocarlo en Amazon S3. AWS CodeStar inicializa el repositorio con este contenido. Especifique esta ubicación en su archivo de entrada al ejecutar el comando para crear su proyecto en la AWS CLI.

Asimismo, debe cargar su archivo toolchain.yml y colocarlo en Amazon S3. Especifique esta ubicación en su archivo de entrada al ejecutar el comando para crear su proyecto en la AWS CLI.

Para cargar el código fuente y la plantilla de la cadena de herramientas
  1. La siguiente estructura de archivos de ejemplo muestra los archivos de origen y la plantilla de la cadena de herramientas listos para ser comprimido y cargado. El código de muestra incluye el archivo template.yml. Recuerde que este archivo es diferente del archivo toolchain.yml.

    ls src toolchain.yml ls src/ README.md app.js buildspec.yml index.js package.json template.yml tests
  2. Cree el archivo .zip para los archivos de código fuente.

    cd src; zip -r "../src.zip" *; cd ../
  3. Utilice el comando cp e incluya los archivos como parámetros.

    Los siguientes comandos cargan el archivo .zip y toolchain.yml en Amazon S3.

    aws s3 cp src.zip s3://MyBucket/src.zip aws s3 cp toolchain.yml s3://MyBucket/toolchain.yml
Configuración del bucket de Amazon S3 para compartir el código fuente
  • Dado que va a almacenar el código fuente y la cadena de herramientas en Amazon S3, puede utilizar las políticas de bucket de Amazon S3 y los ACL de objetos para asegurarse de que otros usuarios de IAM o cuentas de AWS puedan crear proyectos a partir de las muestras. AWS CodeStar garantiza que cualquier usuario que cree un proyecto personalizado tendrá acceso a la cadena de herramientas y al origen que desee utilizar.

    Para permitir que cualquier persona utilice la muestra, ejecute los siguientes comandos:

    aws s3api put-object-acl --bucket MyBucket --key toolchain.yml --acl public-read aws s3api put-object-acl --bucket MyBucket --key src.zip --acl public-read

Paso 5: Crear un proyecto en AWS CodeStar

Siga estos pasos para crear su proyecto.

importante

Asegúrese de configurar la región preferida de AWS en la AWS CLI. El proyecto se crea en la región de AWS configurada en la AWS CLI.

  1. Ejecute el comando create-project e incluya el parámetro --generate-cli-skeleton:

    aws codestar create-project --generate-cli-skeleton

    En el resultado se muestran datos con formato JSON. Copie los datos en un archivo (por ejemplo, input.json) en la ubicación del equipo o instancia local en la que haya instalado la AWS CLI. Modifique los datos copiados como se indica a continuación y guarde los resultados. Este archivo de entrada está configurado para un proyecto llamado MyProject con el nombre de bucket myBucket.

    • Asegúrese de proporcionar el parámetro roleArn. Para las plantillas personalizadas, como la plantilla de ejemplo de este tutorial, debe proporcionar un rol. Este rol debe tener permisos para crear todos los recursos especificados en Paso 2: Descargar la plantilla de la cadena de herramientas de muestra.

    • Asegúrese de indicar el parámetro ProjectId bajo stackParameters. La plantilla de muestra que se proporciona para este tutorial requiere dicho parámetro.

    { "name": "MyProject", "id": "myproject", "description": "Sample project created with the CLI", "sourceCode": [ { "source": { "s3": { "bucketName": "MyBucket", "bucketKey": "src.zip" } }, "destination": { "codeCommit": { "name": "myproject" } } } ], "toolchain": { "source": { "s3": { "bucketName": "MyBucket", "bucketKey": "toolchain.yml" } }, "roleArn": "role_ARN", "stackParameters": { "ProjectId": "myproject" } } }
  2. Cambie al directorio que contiene el archivo que acaba de guardar y ejecute de nuevo el comando create-project. Incluya el parámetro --cli-input-json.

    aws codestar create-project --cli-input-json file://input.json
  3. Si el comando se ejecuta correctamente, aparecerán datos similares a los siguientes en el resultado:

    { "id": "project-ID", "arn": "arn" }
    • El resultado contiene información acerca del nuevo proyecto:

      • El valor id representa el ID del proyecto.

      • El valor arn representa el ARN del proyecto.

  4. Para comprobar el estado de creación del proyecto, utilice el comando describe-project. Incluya el parámetro --id.

    aws codestar describe-project --id <project_ID>

    En el resultado se muestra información similar a la siguiente:

    { "name": "MyProject", "id": "myproject", "arn": "arn:aws:codestar:us-east-1:account_ID:project/myproject", "description": "", "createdTimeStamp": 1539700079.472, "stackId": "arn:aws:cloudformation:us-east-1:account_ID:stack/awscodestar-myproject/stack-ID", "status": { "state": "CreateInProgress" } }
    • El resultado contiene información acerca del nuevo proyecto:

      • El valor id representa el ID único del proyecto.

      • El valor state representa el estado de la creación del proyecto, como, por ejemplo, CreateInProgress o CreateComplete.

Durante la creación del proyecto, puede añadir miembros al equipo o configurar el acceso al repositorio de su proyecto desde la línea de comandos o su IDE favorito.