

Amazon ya no CodeCatalyst está abierto a nuevos clientes. Los clientes existentes pueden seguir utilizando el servicio con normalidad. Para obtener más información, consulte [Cómo migrar desde CodeCatalyst](migration.md).

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Tutorial: carga de artefactos en Amazon S3
<a name="build-deploy"></a>

En este tutorial, aprenderás a cargar artefactos a un bucket de Amazon S3 mediante un CodeCatalyst [flujo](workflows-concepts.md#workflows-concepts-workflows) de trabajo de Amazon que incluye un par de [acciones de compilación](workflows-concepts.md#workflows-concepts-actions). 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.

**Topics**
+ [Requisitos previos](#build-deploy-tut-prereqs)
+ [Paso 1: Crea un AWS rol](#build-deploy-tut-role)
+ [Paso 2: creación de un bucket de Amazon S3](#build-deploy-tut-artifact)
+ [Paso 3: creación de un repositorio de código fuente](#deploy-tut-lambda-cfn-source)
+ [Paso 4: creación de un flujo de trabajo](#build-deploy-tut-workflow.title)
+ [Paso 5: verificación de los resultados](#build-deploy.s3.verify)
+ [Limpieza](#deploy-tut-lambda-cfn-clean-up)

## Requisitos previos
<a name="build-deploy-tut-prereqs"></a>

Antes de comenzar, necesitará lo siguiente:
+ Necesitas un CodeCatalyst **espacio** con una AWS cuenta conectada. Para obtener más información, consulte [Creación de un espacio](spaces-create.md).
+ 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 [Crear un proyecto vacío en Amazon CodeCatalyst](projects-create.md#projects-create-empty).
+ En tu proyecto, necesitas un CodeCatalyst **entorno** llamado:

  ```
  codecatalyst-artifact-environment
  ```

  Configure este entorno de la siguiente manera:
  + Elija cualquier tipo, como **Desarrollo**.
  + Conecta tu AWS cuenta a ella.
  + 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 VPCs](deploy-environments.md).

## Paso 1: Crea un AWS rol
<a name="build-deploy-tut-role"></a>

En este paso, crea un rol de AWS IAM que luego asignará a la acción de creación de su flujo de trabajo. Este rol otorga a la acción de CodeCatalyst construcción el permiso para acceder a tu AWS cuenta y escribir en Amazon S3, donde se almacenará tu 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 las funciones de IAM, consulte las funciones de [IAM en la Guía](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) del AWS AWS Identity and Access Management usuario.*

**Creación de un rol de compilación**

1. Cree una política para el rol del modo siguiente:

   1. Inicie sesión en. AWS

   1. Abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

   1. En el panel de navegación, seleccione **Políticas**.

   1. Elija **Crear política**.

   1. Seleccione la pestaña **JSON**.

   1. Elimine el código existente.

   1. Pegue el siguiente código:

------
#### [ JSON ]

****  

      ```
      {
          "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": "*"
      ```

   1. Elija **Siguiente: Etiquetas**.

   1. Elija **Siguiente: Revisar**.

   1. En **Nombre**, escriba:

      ```
      codecatalyst-s3-build-policy
      ```

   1. Elija **Crear política**.

      Ahora ha creado una política de permisos.

1. Cree el rol de compilación de la siguiente manera:

   1. En el panel de navegación, seleccione **Roles** y luego seleccione **Crear rol**.

   1. Elija **Política de confianza personalizada**.

   1. Elimine la política de confianza personalizada existente.

   1. Añada la siguiente política de confianza personalizada:

   1. Elija **Siguiente**.

   1. En **Políticas de permisos**, busque `codecatalyst-s3-build-policy` y active su casilla de verificación.

   1. Elija **Siguiente**.

   1. En **Nombre del rol**, escriba:

      ```
      codecatalyst-s3-build-role
      ```

   1. En **Descripción del rol**, escriba:

      ```
      CodeCatalyst build role
      ```

   1. 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: creación de un bucket de Amazon S3
<a name="build-deploy-tut-artifact"></a>

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**

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

1. En el panel principal, elija **Crear bucket**.

1. En **Nombre del bucket**, escriba:

   ```
   codecatalyst-artifact-bucket
   ```

1. 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](https://docs.aws.amazon.com/general/latest/gr/s3.html) en la *Referencia general de AWS*.

1. En la parte inferior de la página, elija **Crear bucket**.

1. 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: creación de un repositorio de código fuente
<a name="deploy-tut-lambda-cfn-source"></a>

En este paso, crearás un repositorio de origen 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](source-repositories-create.md).

**Creación de un repositorio de código fuente**

1. Abra la CodeCatalyst consola en [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. Vaya a su proyecto, `codecatalyst-artifact-project`.

1. En el panel de navegación, elija **Código** y, a continuación, elija **Repositorios de origen**. 

1. Elija **Agregar repositorio** y, a continuación, elija **Crear repositorio**.

1. En **Nombre del repositorio**, escriba:

   ```
   codecatalyst-artifact-source-repository
   ```

1. Seleccione **Crear**.

Ahora ha creado un repositorio llamado `codecatalyst-artifact-source-repository`.

## Paso 4: creación de un flujo de trabajo
<a name="build-deploy-tut-workflow.title"></a>

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](workflows-add-trigger.md).
+ Una acción de compilación llamada `GenerateFiles`: al activarse, la acción `GenerateFiles` crea dos archivos, `Hello.txt` y `Goodbye.txt`, y los empaqueta en un artefacto de salida llamado `codecatalystArtifact`.
+ Otra acción de compilación llamada `Upload`: cuando finaliza la acción `GenerateFiles`, la acción `Upload` ejecuta el comando de la AWS CLI `aws s3 sync` para cargar los archivos de `codecatalystArtifact` y del repositorio de código fuente en el bucket de Amazon S3. AWS CLI Viene preinstalada y preconfigurada en la plataforma CodeCatalyst informática, por lo que no es necesario instalarla ni configurarla.

  Para obtener más información sobre el software preempaquetado en la plataforma CodeCatalyst informática, consulte. [Especificación de imágenes del entorno en tiempo de ejecución](build-images.md) Para obtener más información sobre el AWS CLI`aws s3 sync` comando, consulta [sync](https://docs.aws.amazon.com/cli/latest/reference/s3/sync.html) en la *Referencia de AWS CLI comandos*.

Para obtener más información sobre la acción de compilación, consulte [Compilación con flujos de trabajo](build-workflow-actions.md).

**Para crear un flujo de trabajo**

1. En el panel de navegación, elija **CI/CD** y, a continuación, elija **Flujos de trabajo**.

1. Seleccione **Crear flujo de trabajo**.

1. Elimine el código de ejemplo de YAML.

1. 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: Crea un AWS rol](#build-deploy-tut-role). Para obtener más información sobre cómo configurar un entorno con un rol de IAM predeterminado, consulte [Creación de un entorno](deploy-environments-creating-environment.md).

   ```
   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*con el nombre del entorno en el que ha creado[Requisitos previos](#build-deploy-tut-prereqs).
   + *codecatalyst-account-connection*con el nombre de la conexión de cuentas en la que creaste[Requisitos previos](#build-deploy-tut-prereqs).
   + *codecatalyst-s3-build-role* por el nombre del rol de compilación que creó en [Paso 1: Crea un AWS rol](#build-deploy-tut-role).
   + *codecatalyst-artifact-bucket*con el nombre de la Amazon S3 en la que creaste[Paso 2: creación de un bucket de Amazon S3](#build-deploy-tut-artifact).

   Para obtener información sobre las propiedades de este archivo, consulte el [Acciones de compilación y prueba de YAML](build-action-ref.md).

1. (Opcional) Seleccione **Validar** para asegurarse de que el código de YAML del flujo de trabajo sea válido antes de confirmarlo.

1. Elija **Confirmar**.

1. En el cuadro de diálogo **Confirmar flujo de trabajo**, escriba lo siguiente:

   1. En **Nombre del archivo de flujo de trabajo**, deje el valor predeterminado, `codecatalyst-artifact-workflow`.

   1. En **Mensaje de confirmación**, escriba:

      ```
      add initial workflow file
      ```

   1. En **Repositorio**, elija **codecatalyst-artifact-source-repository**.

   1. En **Nombre de la ramificación**, elija **principal**.

   1. Elija **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**

1. En el panel de navegación, elija **CI/CD** y, a continuación, elija **Flujos de trabajo**.

1. Elija el flujo de trabajo que acaba de crear: `codecatalyst-artifact-workflow`.

1. Elija **GenerateFiles**ver el progreso de la primera acción de compilación.

1. Seleccione **Cargar** para ver el progreso de la segunda acción de compilación.

1. 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: verificación de los resultados
<a name="build-deploy.s3.verify"></a>

Cuando se ejecute el flujo de trabajo, vaya al servicio Amazon S3 y busque en su *codecatalyst-artifact-bucket* 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
<a name="deploy-tut-lambda-cfn-clean-up"></a>

Limpie CodeCatalyst y evite AWS que le cobren por estos servicios.

**Para limpiar en CodeCatalyst**

1. Abre la CodeCatalyst consola en [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. Elimine el repositorio de código fuente `codecatalyst-artifact-source-repository`.

1. Elimine el flujo de trabajo `codecatalyst-artifact-workflow`.

**Para limpiar en AWS**

1. Limpie Amazon S3 de la siguiente manera:

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

   1. Elimine los archivos del bucket `codecatalyst-artifact-bucket`.

   1. Elimine el bucket `codecatalyst-artifact-bucket`.

1. Limpie IAM de la siguiente manera:

   1. Abra la consola de IAM en [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

   1. Elimine la `codecatalyst-s3-build-policy`.

   1. Elimine la `codecatalyst-s3-build-role`.