

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: Crear una canalización con acciones AWS CloudFormation StackSets de despliegue
<a name="tutorials-stackset-deployment"></a>

En este tutorial, utilizará la AWS CodePipeline consola para crear una canalización con acciones de despliegue para crear un conjunto de pilas y crear instancias de pila. Cuando se ejecuta la canalización, la plantilla crea un conjunto de pilas y también crea y actualiza las instancias en las que se implementa el conjunto de pilas.

**importante**  
Como parte de la creación de una canalización, se utilizará un depósito de artefactos de S3 proporcionado por el cliente CodePipeline para crear artefactos. (Es diferente del bucket que se usa para una acción de origen de S3). Si el depósito de artefactos de S3 está en una cuenta diferente a la de tu canalización, asegúrate de que el depósito de artefactos de S3 pertenezca a una Cuentas de AWS persona segura y fiable.

Hay dos formas de gestionar los permisos de un conjunto apilado: las funciones de IAM autogestionadas y AWS las administradas mediante funciones de IAM. En este tutorial, se proporcionan ejemplos con permisos autoadministrados.

Para utilizar Stacksets de la forma más eficaz posible CodePipeline, debes tener una idea clara de los conceptos subyacentes CloudFormation StackSets y de cómo funcionan. Consulta [StackSets los conceptos](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-concepts.html) en la Guía del *AWS CloudFormation usuario*.

**Topics**
+ [Requisitos previos](#tutorials-stackset-deployment-prereq)
+ [Paso 1: Cargue la AWS CloudFormation plantilla de muestra y el archivo de parámetros](#tutorials-stackset-deployment-upload)
+ [Paso 2: Crear la canalización](#tutorials-stackset-action-pipeline)
+ [Paso 3: Ver la implementación inicial](#tutorials-stackset-action-initial)
+ [Paso 4: Añadir una CloudFormationStackInstances acción](#tutorials-stacksets-instances)
+ [Paso 5: Ver los recursos del conjunto de pilas para su implementación](#tutorials-stacksets-view)
+ [Paso 6: Actualizar el conjunto de pilas](#tutorials-stacksets-update)

## Requisitos previos
<a name="tutorials-stackset-deployment-prereq"></a>

Para las operaciones de conjuntos apilados, se utilizan dos cuentas diferentes: una cuenta de administración y una cuenta de destino. Los conjuntos de pilas se crean en la cuenta de administrador. Se crean pilas individuales que pertenecen a un conjunto de pilas de la cuenta de destino.

**Para crear un rol de administrador con su cuenta de administrador**
+ Siga las instrucciones de [Configuración de permisos básicos para operaciones con conjuntos de pilas](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs-self-managed.html#stacksets-prereqs-accountsetup). Su rol debe llamarse **`AWSCloudFormationStackSetAdministrationRole`**.

**Para crear el rol de servicio en la cuenta de destino**
+ Cree un rol de servicio en la cuenta de destino que confíe en la cuenta de administrador. Siga las instrucciones de [Configuración de permisos básicos para operaciones con conjuntos de pilas](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs-self-managed.html#stacksets-prereqs-accountsetup). Su rol debe llamarse **`AWSCloudFormationStackSetExecutionRole`**. 

## Paso 1: Cargue la AWS CloudFormation plantilla de muestra y el archivo de parámetros
<a name="tutorials-stackset-deployment-upload"></a>

Cree un bucket de origen para los archivos de parámetros y plantillas del conjunto de pilas. Descargue el archivo de AWS CloudFormation plantilla de ejemplo, configure un archivo de parámetros y comprima los archivos antes de cargarlos en su bucket de código fuente de S3.

**nota**  
Asegúrese de comprimir los archivos de origen antes de subirlos a su bucket de origen de S3, incluso si el único archivo fuente es la plantilla.



**Para crear un bucket de origen de S3**

1. Inicie sesión en la consola de Amazon S3 Consola de administración de AWS y ábrala en [https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/).

1. Elija **Crear bucket**.

1. En **Nombre del bucket**, escriba un nombre para el bucket.

   En **Región** la región en la que desea crear la canalización. Elija **Crear bucket**.

1. Una vez creado el bucket, aparecerá un banner donde se indicará que la operación se ha realizado correctamente. Elija **Go to bucket details (Acceder a los detalles del bucket)**.

1. En la pestaña **Properties (Propiedades)**, elija **Versioning (Control de versiones)**. Elija **Enable versioning (Habilitar control de versiones)** y haga clic en **Save (Guardar)**.

**Para crear el archivo AWS CloudFormation de plantilla**

1. Descargue el siguiente archivo de plantilla de ejemplo para generar la CloudTrail configuración de los conjuntos de pilas:[https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/EnableAWSCloudtrail.yml](https://s3.amazonaws.com/cloudformation-stackset-sample-templates-us-east-1/EnableAWSCloudtrail.yml).

1. Guarde el archivo como `template.yml`.

**Para crear el archivo parameters.txt**

1. Cree un archivo con los parámetros para la implementación. Los parámetros son valores que desea actualizar en su pila en tiempo de ejecución. El siguiente archivo de ejemplo actualiza los parámetros de la plantilla del conjunto de pilas para permitir la validación del registro y los eventos globales.

   ```
   [
     {
       "ParameterKey": "EnableLogFileValidation",
       "ParameterValue": "true"
     }, 
     {
       "ParameterKey": "IncludeGlobalEvents",
       "ParameterValue": "true"
     }
   ]
   ```

1. Guarde el archivo como `parameters.txt`.

**Para crear el archivo accounts.txt**

1. Cree un archivo con las cuentas en las que desee crear las instancias, como se muestra en el siguiente archivo de ejemplo.

   ```
   [
       "111111222222","333333444444"
   ]
   ```

1. Guarde el archivo como `accounts.txt`.

**Para crear y cargar los archivos de origen**

1. Combine los archivos .zip en un solo archivo ZIP. Sus archivos deberían aparecer así en el archivo ZIP.

   ```
   template.yml
   parameters.txt
   accounts.txt
   ```

1. Cargue el archivo ZIP en el bucket de S3. Este archivo es el artefacto de origen creado por el asistente **Create Pipeline** para su acción de implementación en CodePipeline.

## Paso 2: Crear la canalización
<a name="tutorials-stackset-action-pipeline"></a>

En esta sección, debe crear una canalización con las siguientes acciones:
+ Una fase de origen con una acción de origen de S3 en la que el artefacto de origen es el archivo de plantilla y cualquier archivo de origen de respaldo.
+ Una etapa de despliegue con una acción de despliegue del conjunto de CloudFormation pilas que crea el conjunto de pilas.
+ Una etapa de despliegue con una acción de despliegue de instancias CloudFormation apiladas que crea las pilas e instancias dentro de las cuentas de destino.

**Para crear una canalización con una acción CloudFormationStackSet**

1. Inicia sesión en la CodePipeline consola Consola de administración de AWS y ábrela en [http://console.aws.amazon. com/codesuite/codepipeline/home](https://console.aws.amazon.com/codesuite/codepipeline/home).

1. En la página **Bienvenido**, **Introducción** o en la página **Canalizaciones**, elija **Crear canalización**.

1. En la página **Paso 1: elección de la opción de creación**, en **Opciones de creación**, seleccione la opción **Crear una canalización personalizada**. Elija **Siguiente**.

1. En **Paso 2: elegir la configuración de la canalización**, en **Nombre de la canalización**, escriba **MyStackSetsPipeline**.

1. En **Tipo de canalización**, elija **V1** para los fines de este tutorial. También puede elegir **V2**; sin embargo, tenga en cuenta que los tipos de canalización difieren en cuanto a características y precio. Para obtener más información, consulte [Tipos de canalización](pipeline-types.md).

1. En **Función de servicio**, elija **Nueva función de servicio** CodePipeline para poder crear una función de servicio en IAM.

1. En **Almacén de artefactos**, deje los valores predeterminados.
**nota**  
Este no es el bucket de origen para su código fuente. Este es el almacén de artefactos de la canalización. Cada canalización debe tener su propio almacén de artefactos independiente, como un bucket de S3. Al crear o editar una canalización, debes tener una cubeta de artefactos en la región de la canalización y una cubeta de artefactos por cada AWS región en la que ejecutes una acción.  
Para obtener más información, consulte [Artefactos de entrada y salida](welcome-introducing-artifacts.md) y [CodePipeline referencia de estructura de tubería](reference-pipeline-structure.md).

   Elija **Siguiente**.

1. En la página **Paso 3: agregar la etapa de origen**, en **Proveedor de origen**, elija **Amazon S3**.

1. En **Bucket**, introduzca el bucket de origen de S3 creado para este tutorial, por ejemplo `BucketName`. En **Clave de objeto de S3**, escriba la ruta y el nombre del archivo ZIP, como `MyFiles.zip`.

1. Elija **Siguiente**.

1. En **Paso 4: agregar la etapa de compilación**, elija **Omitir la etapa de compilación** y, a continuación, acepte el mensaje de advertencia eligiendo **Omitir** una vez más. 

   Elija **Siguiente**.

1. En **Paso 5: agregación de la etapa de prueba**, elija **Omitir la etapa de prueba** y, a continuación, acepte el mensaje de advertencia eligiendo **Omitir** una vez más. 

   Elija **Siguiente**.

1. En el **paso 6: añadir la fase de despliegue**:

   1. En **Proveedor de implementación**, elija **Conjunto de pilas de AWS CloudFormation )**.

   1. En **Nombre de conjunto de pilas**, escriba un nombre para el conjunto de pilas. Este es el nombre del conjunto de pilas que crea la plantilla.
**nota**  
Anote el nombre del conjunto de pilas. La usarás cuando agregues la segunda acción de StackSets despliegue a tu canalización.

   1. En **Ruta de plantilla**, introduzca el nombre del artefacto y la ruta del archivo donde subió el archivo de plantilla. Por ejemplo, introduzca lo siguiente utilizando el el nombre del artefacto de origen por defecto `SourceArtifact`.

      ```
      SourceArtifact::template.yml
      ```

   1. En **Destinos de implementación**, introduzca el nombre del artefacto y la ruta del archivo donde subió el archivo de cuentas. Por ejemplo, introduzca lo siguiente utilizando el el nombre del artefacto de origen por defecto `SourceArtifact`.

      ```
      SourceArtifact::accounts.txt
      ```

   1. En **Destino de despliegue Regiones de AWS**, introduce una región para el despliegue de tu instancia de pila inicial, por ejemplo`us-east-1`.

   1. Expanda **Opciones de implementación**. En **Parámetros**, introduzca el nombre del artefacto y la ruta del archivo donde cargó el archivo de parámetros. Por ejemplo, introduzca lo siguiente utilizando el el nombre del artefacto de origen por defecto `SourceArtifact`.

      ```
      SourceArtifact::parameters.txt
      ```

      Para introducir los parámetros como una entrada literal en lugar de como una ruta de archivo, introduzca lo siguiente:

      ```
      ParameterKey=EnableLogFileValidation,ParameterValue=true
      ParameterKey=IncludeGlobalEvents,ParameterValue=true
      ```

   1. En **Capacidades**, elija CAPABILITY\$1IAM y CAPABILITY\$1NAMED\$1IAM.

   1. En **Modelo de permiso**, elija SELF\$1MANAGED.

   1. En **Porcentaje de tolerancia a errores**, introduzca `20`.

   1. En **Porcentaje máximo simultáneo**, introduzca `25`.

   1. Elija **Siguiente**.

   1. En **Paso 7: revisión**, elija **Crear canalización**. Aparece su canalización. 

   1. Permita que su canalización se ejecute. 

## Paso 3: Ver la implementación inicial
<a name="tutorials-stackset-action-initial"></a>

Vea los recursos y el estado de su implementación inicial. Tras comprobar que la implementación ha creado correctamente el conjunto de pilas, puede añadir la segunda acción a la fase **Deploy /Implementación)**.

**Para ver los recursos**

1. Abre la CodePipeline consola en [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

1. En **Canalizaciones**, elija la canalización y luego **Ver**. El diagrama muestra las etapas de código fuente e implementación de la canalización.

1. Elige la CloudFormation acción de la **CloudFormationStackSet**acción de tu proceso. La plantilla, los recursos y los eventos de tu conjunto de pilas se muestran en la CloudFormation consola.

1. En el panel de navegación izquierdo, selecciona **StackSets**. En la lista, elija el nuevo conjunto de pilas.

1. Elija la pestaña **Instancias de la pila**. Verifique que se haya creado una instancia de pila para cada cuenta que haya proporcionado en la región us-east-1. Compruebe que el estado de cada instancia de pila sea `CURRENT`.

## Paso 4: Añadir una CloudFormationStackInstances acción
<a name="tutorials-stacksets-instances"></a>

Crea una siguiente acción en tu proceso que permita CloudFormation StackSets crear las instancias de la pila restantes.

**Para crear una acción siguiente en su canalización**

1. Abre la CodePipeline consola en. [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/)

   En **Canalizaciones**, elija la canalización y luego **Ver**. El diagrama muestra las etapas de código fuente e implementación de la canalización.

1. Elija esta opción para editar la canalización. La canalización se muestra en modo de **edición**. 

1. En la etapa **Implementar**, elija **Editar**.

1. En la acción de implementación de **Conjunto de pilas de AWS CloudFormation CloudFormation**, seleccione **Añadir grupo de acciones**.

1. En la página **Editar acción**, añada los detalles de la acción:

   1. En **Nombre de la acción**, escriba un nombre para la acción.

   1. En **Proveedor de acciones**, elija **Instancias de pila de AWS CloudFormation )**.

   1. En **Artefactos de entrada**, elija **SourceArtifact**.

   1. En **Nombre de conjunto de pilas**, introduzca el nombre para el conjunto de pilas. Este es el nombre del conjunto de pilas proporcionado en la primera acción.

   1. En **Destinos de implementación**, introduzca el nombre del artefacto y la ruta del archivo donde subió el archivo de cuentas. Por ejemplo, introduzca lo siguiente utilizando el el nombre del artefacto de origen por defecto `SourceArtifact`.

      ```
      SourceArtifact::accounts.txt
      ```

   1. En **Destino de despliegue Regiones de AWS**, introduce las regiones en las que se desplegarán las instancias de pila restantes, por ejemplo, de la `eu-central-1` siguiente manera: `us-east-2`

      ```
      us-east2, eu-central-1
      ```

   1. En **Porcentaje de tolerancia a errores**, introduzca `20`.

   1. En **Porcentaje máximo simultáneo**, introduzca `25`.

   1. Seleccione **Save**.

   1. Publica un cambio manualmente. La canalización actualizada se muestra con dos acciones en la etapa de implementación.

## Paso 5: Ver los recursos del conjunto de pilas para su implementación
<a name="tutorials-stacksets-view"></a>

Puede ver los recursos y el estado de su implementación del conjunto de pilas.

**Para ver los recursos**

1. Abra la CodePipeline consola en [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

1. En **Canalizaciones**, elija la canalización y luego **Ver**. El diagrama muestra las etapas de código fuente e implementación de la canalización.

1. Elige la CloudFormation acción de la **`AWS CloudFormation Stack Instances`**acción de tu proceso. La plantilla, los recursos y los eventos de tu conjunto de pilas se muestran en la CloudFormation consola.

1. En el panel de navegación izquierdo, selecciona **StackSets**. En la lista, elija el conjunto de pilas.

1. Elija la pestaña **Instancias de la pila**. Compruebe que todas las instancias de pila restantes de cada cuenta que haya proporcionado se hayan creado o actualizado en las regiones esperadas. Compruebe que el estado de cada instancia de pila sea `CURRENT`.

## Paso 6: Actualizar el conjunto de pilas
<a name="tutorials-stacksets-update"></a>

Actualice su conjunto de pilas e impleméntela en las instancias. En este ejemplo, también cambia los objetivos de implementación que desea designar para la actualización. Las instancias que no forman parte de la actualización pasan a un estado desactualizado.

1. Abre la CodePipeline consola en [https://console.aws.amazon.com/codepipeline/](https://console.aws.amazon.com/codepipeline/).

1. En **Canalizaciones**, elija la canalización y luego **Editar**. En la etapa **Implementar**, elija **Editar**.

1. Elija editar la acción **Conjunto de pila de AWS CloudFormation )** en su canalización. En **Descripción**, sobrescriba la descripción existente por una nueva descripción para el conjunto de pilas.

1. Elija editar la acción **Instancias de pila de AWS CloudFormation )** en su canalización. En **Deployment target Regiones de AWS**, elimine el `us-east-2` valor que se ingresó al crear la acción.

1. Guarde los cambios. Elija **Publicar modificación** para ejecutar su canalización.

1. Abra su acción en CloudFormation. Selecciona la pestaña de **StackSet información**. En la **StackSet descripción**, compruebe que se muestra la nueva descripción.

1. Elija la pestaña **Instancias de la pila**. En **Estado**, verifique que el estado de las instancias de la pila en us-east-2 sea `OUTDATED`.