Tutorial: carga de artefactos en Amazon S3
En este tutorial aprenderá a cargar artefactos en un bucket de Amazon S3 mediante un flujo de trabajo de Amazon CodeCatalyst que incluye un par de acciones de compilación. Estas acciones se ejecutan en serie cuando se inicia el flujo de trabajo. La primera acción de compilación genera dos archivos, Hello.txt
y Goodbye.txt
, y los empaqueta en un artefacto de compilación. La segunda acción de compilación carga el artefacto en Amazon S3. Configurará el flujo de trabajo para que se ejecute cada vez que envíe una confirmación a su repositorio de código fuente.
Temas
Requisitos previos
Antes de comenzar, necesitará lo siguiente:
-
Necesita un espacio de CodeCatalyst con una cuenta de AWS conectada. Para obtener más información, consulte Creación de un espacio.
-
En su espacio, necesita un proyecto vacío llamado:
codecatalyst-artifact-project
Use la opción Empezar desde cero para crear este proyecto.
Para obtener más información, consulte Creación de un proyecto vacío en Amazon CodeCatalyst.
-
En su proyecto, necesita un entorno de CodeCatalyst llamado:
codecatalyst-artifact-environment
Configure este entorno de la siguiente manera:
-
Elija cualquier tipo, como Desarrollo.
-
Conecte su cuenta de AWS al entorno.
-
En Rol de IAM predeterminado, elija cualquier rol. Especificará un rol diferente más adelante.
Para obtener más información, consulte Implementación en Cuentas de AWS y VPC.
-
Paso 1: crear un rol de AWS
En este paso, creará un rol de AWS IAM que más adelante asignará a la acción de compilación en el flujo de trabajo. Este rol concede a la acción de compilación de CodeCatalyst permiso para acceder a su cuenta de AWS y escribir en Amazon S3, donde se almacenará el artefacto. El rol se llama rol de compilación.
nota
Si ya tiene un rol de compilación que creó para otro tutorial, también puede utilizarlo en este tutorial. Solo asegúrese de que tenga los permisos y la política de confianza que se muestran en el siguiente procedimiento.
Para obtener más información sobre los roles de IAM, consulte Roles de IAM en la Guía del usuario de AWS AWS Identity and Access Management.
Creación de un rol de compilación
-
Cree una política para el rol del modo siguiente:
-
Inicie sesión en AWS.
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. -
En el panel de navegación, seleccione Políticas.
-
Elija Create Policy (Crear política).
-
Seleccione la pestaña JSON.
-
Elimine el código existente.
-
Pegue el siguiente código:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:ListBucket" ], "Resource": "*" } ] }
nota
La primera vez que utilice el rol para ejecutar acciones de flujo de trabajo, use el comodín en la instrucción de política de recursos y, a continuación, precise el ámbito de la política con el nombre del recurso cuando esté disponible.
"Resource": "*"
-
Elija Siguiente: Etiquetas.
-
Elija Siguiente: Revisar.
-
En Nombre, escriba:
codecatalyst-s3-build-policy
-
Elija Crear política.
Ahora ha creado una política de permisos.
-
-
Cree el rol de compilación de la siguiente manera:
-
En el panel de navegación, seleccione Roles y luego seleccione Crear rol.
-
Elija Política de confianza personalizada.
-
Elimine la política de confianza personalizada existente.
-
Añada la siguiente política de confianza personalizada:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": [ "codecatalyst-runner.amazonaws.com", "codecatalyst.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
-
Elija Siguiente.
-
En Políticas de permisos, busque
codecatalyst-s3-build-policy
y active su casilla de verificación. -
Elija Siguiente.
-
En Nombre del rol, escriba:
codecatalyst-s3-build-role
-
En Descripción del rol, escriba:
CodeCatalyst build role
-
Elija Crear rol.
Ahora ha creado un rol de compilación con una política de confianza y una política de permisos.
-
Paso 2: crear un bucket de Amazon S3
En este paso, creará un bucket de Amazon S3 en el que se cargarán los artefactos Hello.txt
y Goodbye.txt
.
Creación de un bucket de Amazon S3
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/
. -
En el panel principal, elija Crear bucket.
-
En Nombre del bucket, escriba:
codecatalyst-artifact-bucket
-
En AWS Región, seleccione una región. En este tutorial, se asume que ha elegido Oeste de EE. UU. (Oregón) us-west-2. Para obtener más información sobre las regiones admitidas en Amazon S3, consulte Puntos de conexión y cuotas de Amazon Simple Storage Service en la Referencia general de AWS.
-
En la parte inferior de la página, elija Crear bucket.
-
Copie el nombre del bucket que acaba de crear, por ejemplo:
codecatalyst-artifact-bucket
Ahora ha creado un bucket llamado codecatalyst-artifact-bucket
en la región Oeste de EE. UU. (Oregón) us-west-2.
Paso 3: crear un repositorio de código fuente
En este paso, creará un repositorio de código fuente en CodeCatalyst. Este repositorio se utiliza para almacenar el archivo de definición del flujo de trabajo del tutorial.
Para obtener más información sobre los repositorios de código fuente, consulte Creación de un repositorio de código fuente.
Creación de un repositorio de código fuente
Abra la consola de CodeCatalyst en https://codecatalyst.aws/
. -
Vaya a su proyecto,
codecatalyst-artifact-project
. -
En el panel de navegación, elija Código y, a continuación, elija Repositorios de origen.
-
Elija Agregar repositorio y, a continuación, elija Crear repositorio.
-
En Nombre del repositorio, escriba:
codecatalyst-artifact-source-repository
-
Seleccione Crear.
Ahora ha creado un repositorio llamado codecatalyst-artifact-source-repository
.
Paso 4: crear un flujo de trabajo
En este paso, creará un flujo de trabajo con los siguientes componentes que se ejecutarán en orden:
-
Un desencadenador: este desencadenador inicia la ejecución automática del flujo de trabajo cuando se introduce un cambio en el repositorio de código fuente. Para obtener más información sobre los desencadenadores, consulte Inicio de un flujo de trabajo y ejecución automática mediante desencadenadores.
-
Una acción de compilación llamada
GenerateFiles
: al activarse, la acciónGenerateFiles
crea dos archivos,Hello.txt
yGoodbye.txt
, y los empaqueta en un artefacto de salida llamadocodecatalystArtifact
. -
Otra acción de compilación llamada
Upload
: cuando finaliza la acciónGenerateFiles
, la acciónUpload
ejecuta el comando de la AWS CLIaws s3 sync
para cargar los archivos decodecatalystArtifact
y del repositorio de código fuente en el bucket de Amazon S3. La AWS CLI viene preinstalada y preconfigurada en la plataforma de computación de CodeCatalyst, por lo que no es necesario instalarla ni configurarla.Para obtener más información sobre el software preempaquetado en la plataforma de computación de CodeCatalyst, consulte Especificación de imágenes del entorno en tiempo de ejecución. Para obtener más información sobre el comando
aws s3 sync
de la AWS CLI, consulte sync en la Referencia de comandos de la AWS CLI.
Para obtener más información sobre la acción de compilación, consulte Compilación con flujos de trabajo.
Creación de un flujo de trabajo
-
En el panel de navegación, elija CI/CD y, a continuación, elija Flujos de trabajo.
-
Seleccione Crear flujo de trabajo.
-
Elimine el código de ejemplo de YAML.
-
Añada el código de YAML siguiente:
nota
En el código de YAML que aparece a continuación, puede omitir la sección
Connections:
si lo desea. Si omite esta sección, debe asegurarse de que el rol especificado en el campo Rol de IAM predeterminado del entorno incluya los permisos y las políticas de confianza que se describen en Paso 1: crear un rol de AWS. Para obtener más información sobre cómo configurar un entorno con un rol de IAM predeterminado, consulte Creación de un entorno.Name: codecatalyst-artifact-workflow SchemaVersion: 1.0 Triggers: - Type: Push Branches: - main Actions: GenerateFiles: Identifier: aws/build@v1 Configuration: Steps: # Create the output files. - Run: echo "Hello, World!" > "Hello.txt" - Run: echo "Goodbye!" > "Goodbye.txt" Outputs: Artifacts: - Name: codecatalystArtifact Files: - "**/*" Upload: Identifier: aws/build@v1 DependsOn: - GenerateFiles Environment: Name:
codecatalyst-artifact-environment
Connections: - Name:codecatalyst-account-connection
Role:codecatalyst-s3-build-role
Inputs: Artifacts: - codecatalystArtifact Configuration: Steps: # Upload the output artifact to the S3 bucket. - Run: aws s3 sync . s3://codecatalyst-artifact-bucket
En el código anterior, sustituya:
-
codecatalyst-artifact-environment
por el nombre del entorno que ha creado en Requisitos previos. -
codecatalyst-account-connection
por el nombre de la conexión de cuenta que creó en Requisitos previos. -
codecatalyst-s3-build-role
por el nombre del rol de compilación que creó en Paso 1: crear un rol de AWS. -
codecatalyst-artifact-bucket
por el nombre del bucket de Amazon S3 que creó en Paso 2: crear un bucket de Amazon S3.
Para obtener información sobre las propiedades de este archivo, consulte el Acciones de compilación y prueba de YAML.
-
-
(Opcional) Seleccione Validar para asegurarse de que el código de YAML del flujo de trabajo es válido antes de confirmarlo.
-
Elija Commit (Confirmar).
-
En el cuadro de diálogo Confirmar flujo de trabajo, escriba lo siguiente:
-
En Nombre del archivo de flujo de trabajo, deje el valor predeterminado,
codecatalyst-artifact-workflow
. -
En Mensaje de confirmación, escriba:
add initial workflow file
-
En Repositorio, elija codecatalyst-artifact-source-repository.
-
En Nombre de la ramificación, elija principal.
-
Elija Commit (Confirmar).
Ahora ha creado un flujo de trabajo. La ejecución del flujo de trabajo se inicia automáticamente debido al desencadenador definido en la parte superior del flujo de trabajo. En concreto, cuando confirmó (e incorporó) el archivo
codecatalyst-artifact-workflow.yaml
en su repositorio de código fuente, el desencadenador inició la ejecución del flujo de trabajo. -
Consulta de la ejecución del flujo de trabajo en curso
-
En el panel de navegación, elija CI/CD y, a continuación, elija Flujos de trabajo.
-
Elija el flujo de trabajo que acaba de crear:
codecatalyst-artifact-workflow
. -
Elija GenerateFiles para ver el progreso de la primera acción de compilación.
-
Seleccione Cargar para ver el progreso de la segunda acción de compilación.
-
Cuando finalice la acción Cargar, haga lo siguiente:
-
Si la ejecución del flujo de trabajo se realizó correctamente, vaya al siguiente procedimiento.
-
Si se produjo un error en la ejecución del flujo de trabajo, seleccione Registros para solucionar el problema.
-
Paso 5: verificar los resultados
Cuando se ejecute el flujo de trabajo, vaya al servicio Amazon S3 y busque el bucket codecatalyst-artifact-bucket
. Ahora debería incluir los siguientes archivos y carpetas:
. |— .aws/ |— .git/ |Goodbye.txt |Hello.txt |REAME.md
Los archivos Goodbye.txt
y Hello.txt
se han cargado porque formaban parte del artefacto codecatalystArtifact
. Los archivos .aws/
, .git/
y README.md
se ha cargado porque estaban en su repositorio de código fuente.
Limpieza
Limpie CodeCatalyst y AWS para evitar que le cobren por estos servicios.
Limpieza en CodeCatalyst
Abra la consola de CodeCatalyst en https://codecatalyst.aws/
. -
Elimine el repositorio de código fuente
codecatalyst-artifact-source-repository
. -
Elimine el flujo de trabajo
codecatalyst-artifact-workflow
.
Limpieza en AWS
-
Limpie Amazon S3 de la siguiente manera:
Abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/
. -
Elimine los archivos del bucket
codecatalyst-artifact-bucket
. -
Elimine el bucket
codecatalyst-artifact-bucket
.
-
Limpie IAM de la siguiente manera:
Abra la consola de IAM en https://console.aws.amazon.com/iam/
. -
Elimine la
codecatalyst-s3-build-policy
. -
Elimine la
codecatalyst-s3-build-role
.