

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: Implemente en instancias de Amazon EC2 con CodePipeline
<a name="tutorials-ec2-deploy"></a>

Este tutorial le ayuda a crear una acción de despliegue CodePipeline que despliegue el código en las instancias que haya configurado en Amazon EC2.

**nota**  
Como parte de la creación de una canalización en la consola, para los artefactos se utilizará un depósito de artefactos de CodePipeline S3. (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.

**nota**  
La acción de implementación de `EC2` solo está disponible para canalizaciones de tipo V2.

## Requisitos previos
<a name="tutorials-ec2-deploy-prereqs"></a>

Para poder usar este tutorial para crear su propia canalización de implementación continua debe tener instalados algunos recursos. Esto es lo que necesita para empezar:

**nota**  
Todos estos recursos deben crearse en la misma región. AWS 
+ Un repositorio de control de código fuente (se utiliza en este tutorial GitHub) donde agregará un `script.sh` archivo de muestra.
+ Debe usar un rol de CodePipeline servicio existente que se haya actualizado con los permisos para esta acción. Para actualizar su rol de servicio, consulte [Permisos de la política de rol de servicio para la acción de implementación de EC2](action-reference-EC2Deploy.md#action-reference-EC2Deploy-permissions-action).

Una vez satisfechos estos requisitos previos, puede continuar con el tutorial y crear su canalización de implementación continua.

## Paso 1: creación de instancias de Amazon EC2 en Linux
<a name="tutorials-ec2-deploy-instances"></a>

En este paso, va a crear las instancias de Amazon EC2 en las que va a implementar una aplicación de ejemplo. Como parte de este proceso, cree un rol de instancia en IAM si aún no ha creado un rol de instancia en la región en la que desea crear los recursos.

**Para crear un rol de instancia**

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

1. En el panel de la consola, elija **Roles**.

1. Elija **Crear rol**.

1. En **Seleccionar el tipo de entidad de confianza**, seleccione **Servicio de AWS**. En **Elegir un caso de uso**, seleccione **EC2**. En **Select your use case (Seleccionar su caso de uso)**, elija **EC2**. Elija **Siguiente**.

1. Busque y seleccione la política denominada **`AmazonSSMManagedEC2InstanceDefaultPolicy`**. 

1. Busque y seleccione la política denominada **`AmazonSSMManagedInstanceCore`**. Elija **Siguiente: Etiquetas**.

1. Elija **Siguiente: Revisar**. Escriba el nombre del rol (por ejemplo, **EC2InstanceRole**).
**nota**  
Anote el nombre del rol para utilizarlo en el siguiente paso. Tendrá que elegir este rol cuando cree la instancia.
**nota**  
Agregará permisos a este rol para permitir el acceso al bucket de artefactos de S3 para su canalización una vez creada la canalización.

   Elija **Crear rol**.

**Para lanzar las instancias**

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

1. En la barra de navegación lateral, elija **Instancias** y seleccione **Lanzar instancias** en la parte superior de la página.

1. En **Name (Nombre)**, escriba **MyInstances**. Esto asigna a la instancia una **clave** de etiqueta **Name** y un **valor** de etiqueta **MyInstances**. 

1. En **Imágenes de aplicaciones y sistemas operativos (Amazon Machine Image)**, busque la opción AMI de **Amazon Linux** con el AWS logotipo y asegúrese de que esté seleccionada. (Esta AMI se describe como AMI de Amazon Linux 2 (HVM) y se denomina "Free tier eligible" (Apta para capa gratuita).)

1. En **Tipo de instancia**, elija el tipo `t2.micro` apto para la capa gratuita como configuración de hardware de la instancia.

1. En **Par de claves (inicio de sesión)**, seleccione un par de claves o cree uno. 

1. En **Configuración de red**, asegúrese de que el estado sea **Habilitar**.

1. Amplíe **Advanced details** (Detalles avanzados). En **Perfil de instancia de IAM**, elija el rol de IAM que creó en el procedimiento anterior (por ejemplo, **EC2InstanceRole**).
**nota**  
No deje el rol de instancia en blanco, ya que esto crea un rol predeterminado y no selecciona el rol que ha creado.

1. En **Resumen**, en **Número de instancias**, especifique `2`.

1. Seleccione **Iniciar instancia**. 

1. Puede ver el estado del lanzamiento en la página **Instances**. Al lanzar una instancia, su estado inicial es `pending`. Una vez iniciada la instancia, el estado cambia a `running` y recibe un nombre de DNS público. (Si la columna **Public DNS** no se muestra, haga clic en el icono **Show/Hide** y después seleccione **Public DNS**.)

## Paso 2: agregación de los permisos del bucket de artefactos al rol de instancia de EC2
<a name="tutorials-ec2-deploy-role-s3"></a>

Debe actualizar el rol de instancia de EC2 que creó para su instancia a fin de que pueda acceder al bucket de artefactos de su canalización. 

**nota**  
Al crear la instancia, se crea o se utiliza un rol de instancia de EC2 existente. Para evitar `Access Denied` errores, debes añadir permisos de bucket de S3 a la función de instancia para conceder a la instancia permisos de acceso al bucket de CodePipeline artefactos. Cree un rol predeterminado o actualice el rol actual con el permiso `s3:GetObject` limitado al bucket de artefactos correspondiente a la región de su canalización.

1. Navega hasta tu canalización en la CodePipeline consola. Seleccione **Configuración**. Vea el nombre y la ubicación del almacén de artefactos de una canalización existente. Anote el nombre de recurso de Amazon (ARN) del bucket de artefactos y cópielo.

1. Vaya a la consola de IAM y elija **Roles (Roles)**. Elija el rol de instancia que creó en el paso 1 de este tutorial.

1. En la pestaña **Permisos**, elija **Añadir política en línea**.

1. Agregue el siguiente JSON al documento de política y sustituya el valor del campo `Resource` por el ARN del bucket.

   ```
   {
       "Effect": "Allow",
       "Principal": "*",
       "Action": "s3:GetObject",
       "Resource": "arn:aws:s3:::BucketName"
   }
   ```

1. Elija **Actualizar**.

## Paso 3: agregación del archivo de script al repositorio
<a name="tutorials-ec2-deploy-file"></a>

Pegue este texto de ejemplo para crear el archivo `script.sh` para el paso posterior al script de la implementación.

```
echo "Hello World!" 
```

**Para añadir un archivo `script.sh` a su repositorio de código fuente**

1. Abra un editor de texto y luego copie y pegue el archivo anterior en un nuevo archivo.

1. Confirme la operación e inserte el archivo `script.sh` en el repositorio de código fuente.

   1. Añada el archivo.

      ```
      git add .
      ```

   1. Valide el cambio con.

      ```
      git commit -m "Adding script.sh."
      ```

   1. Envíe la confirmación.

      ```
      git push
      ```

   Anote la ruta en su repositorio.

   ```
   /MyDemoRepo/test/script.sh
   ```

## Paso 4: creación de una canalización
<a name="tutorials-ec2-deploy-pipeline"></a>

Usa el CodePipeline asistente para crear las etapas de tu canalización y conectar tu repositorio de origen.

**Para crear la canalización**

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

1. En la página **Bienvenido**, **Introducción** o **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 **MyPipeline**.

1. CodePipeline proporciona tuberías de tipo V1 y V2, que difieren en características y precio. El tipo V2 es el único tipo que puede elegir en la consola. Para obtener más información, consulte [Tipos de canalización](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipeline-types-planning.html?icmpid=docs_acp_help_panel). Para obtener información sobre los precios de CodePipeline, consulte [Precios](https://aws.amazon.com/codepipeline/pricing/).

1. En **Función de servicio**, elija **Usar la función de servicio existente** y, a continuación, elija la función de CodePipeline servicio que se ha actualizado con los permisos necesarios para esta acción. Para configurar el rol CodePipeline de servicio para esta acción, consulte[Permisos de la política de rol de servicio para la acción de implementación de EC2](action-reference-EC2Deploy.md#action-reference-EC2Deploy-permissions-action).

1. En **Advanced settings (Configuración avanzada)**, deje los valores predeterminados y elija **Next (Siguiente)**.

1. En la página **Paso 3: agregar la etapa de origen**, agregue una etapa de origen:

   1. En **Proveedor de origen**, elija **GitHub (a través de GitHub la aplicación)**.

   1. En **Conexión**, seleccione una conexión existente o cree una nueva. Para crear o gestionar una conexión para la acción GitHub de origen, consulte[GitHub conexiones](connections-github.md).

   1. En **Repository name (Nombre de repositorio)**, elija el nombre de su repositorio de GitHub .

   Elija **Siguiente**.

1. En la página **Paso 4: agregación de la etapa de compilación**, seleccione **Omitir**.

1. En la página **Paso 5: agregación de la etapa de implementación**, elija **EC2**.  
![\[\]](http://docs.aws.amazon.com/es_es/codepipeline/latest/userguide/images/ec2deploy-action.png)

   1. En el **directorio de destino**, especifique el directorio de la instancia en la que desee realizar la implementación, por ejemplo, `/home/ec2-user/testhelloworld`.
**nota**  
Especifique el directorio de implementación que desea que utilice la acción en la instancia. La acción automatizará la creación del directorio especificado en la instancia como parte de la implementación.

   1. Para **PostScript**, introduzca la ruta y el nombre de archivo del script, por ejemplo`test/script.sh`.

   1. Elija **Siguiente**.

1. En la página **Step 6: Review**, revise la configuración de la canalización y elija **Create pipeline** para crear la canalización.  
![\[\]](http://docs.aws.amazon.com/es_es/codepipeline/latest/userguide/images/ec2deploy-pipeline.png)

1. Cuando la canalización se haya ejecutado correctamente, elija **Ver detalles** para consultar los registros de la acción y ver la salida de la acción de computación administrada.  
![\[\]](http://docs.aws.amazon.com/es_es/codepipeline/latest/userguide/images/ec2deploy-logs.png)  
![\[\]](http://docs.aws.amazon.com/es_es/codepipeline/latest/userguide/images/ec2deploy-logs2.png)

## Paso 5: Pon a prueba tu canalización
<a name="tutorials-ec2-deploy-test"></a>

Su canalización debe tener todo lo necesario para ejecutar una implementación AWS continua end-to-end nativa. Ahora, pruebe su funcionalidad enviando un cambio de código al repositorio de código fuente.

**Para probar la canalización**

1. Realice una modificación del código en el repositorio de código fuente configurado, valide y envíe el cambio.

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

1. Seleccione su canalización de la lista.

1. Vea el progreso en la canalización a través de sus etapas. La canalización debería completarse y la acción implementar el script en las instancias.

1. Para obtener más información sobre la solución de problemas, consulte [Error en la acción de implementación de EC2 con el mensaje `No such file`](troubleshooting.md#troubleshooting-ec2-deploy).