

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.

# Referencia de la acción de Amazon EC2
<a name="action-reference-EC2Deploy"></a>

Una acción `EC2` de Amazon EC2 se utiliza para implementar el código de aplicación en su flota de implementación. Su flota de implementación puede estar formada por instancias de Linux de Amazon EC2 o nodos de Linux administrados en SSM. Las instancias deben tener instalado SSM Agent.

**nota**  
Esta acción admite solo tipos de instancias de Linux. El tamaño de flota máximo admitido son 500 instancias.

La acción seleccionará un número de instancias en función de un número máximo especificado. Se elegirán primero las instancias anteriores que hayan fallado. La acción omitirá la implementación en determinadas instancias en caso de que la instancia ya haya recibido la implementación del mismo artefacto de entrada, como en el caso de que la acción hubiese fallado anteriormente.

**nota**  
Esta acción solo se admite para canalizaciones de tipo V2.

**Topics**
+ [Tipo de acción](#action-reference-EC2Deploy-type)
+ [Parámetros de configuración](#action-reference-EC2Deploy-parameters)
+ [Artefactos de entrada](#action-reference-EC2Deploy-input)
+ [Artefactos de salida](#action-reference-EC2Deploy-output)
+ [Permisos de la política de rol de servicio para la acción de implementación de EC2](#action-reference-EC2Deploy-permissions-action)
+ [Referencia del archivo de especificaciones de implementación](#action-reference-EC2Deploy-spec-reference)
+ [Declaración de acciones](#action-reference-EC2Deploy-example)
+ [Ejemplo de declaración de acción con especificaciones de implementación](#action-reference-EC2Deploy-example-spec)
+ [Véase también](#action-reference-EC2Deploy-links)

## Tipo de acción
<a name="action-reference-EC2Deploy-type"></a>
+ Categoría: `Deploy`
+ Propietario: `AWS`
+ Proveedor: `EC2`
+ Versión: `1` 

## Parámetros de configuración
<a name="action-reference-EC2Deploy-parameters"></a>

**InstanceTagKey**  
Obligatorio: sí  
La clave de etiqueta de las instancias que creó en Amazon EC2, como `Name`.

**InstanceTagValue**  
Obligatorio: no  
El valor de etiqueta de las instancias que creó en Amazon EC2, como `my-instances`.  
Si no se especifica este valor, se **InstanceTagKey**compararán todas las instancias con.

**InstanceType**  
Obligatorio: sí  
El tipo de instancias o nodos de SSM creados en Amazon EC2. Los valores válidos son `EC2` y `SSM_MANAGED_NODE`.  
Debe haber creado, etiquetado e instalado SSM Agent en todas las instancias.  
Al crear la instancia, se crea un rol de instancia de EC2 o se utiliza uno 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.

**TargetDirectory**  
Obligatorio: sí (en caso de que se especifique script)  
El directorio que se debe usar en la instancia de Amazon EC2 para ejecutar scripts.

**DeploySpec**  
Obligatorio: sí (en caso de que se definan especificaciones de implementación)  
El archivo que se utilizará para configurar los eventos de instalación y ciclo de vida de la implementación. Para obtener información y las descripciones de los campos de especificaciones de implementación, consulte [Referencia del archivo de especificaciones de implementación](#action-reference-EC2Deploy-spec-reference). Para ver la configuración de una acción con el archivo de especificaciones de implementación indicado, consulte el ejemplo de [Ejemplo de declaración de acción con especificaciones de implementación](#action-reference-EC2Deploy-example-spec).

**MaxBatch**  
Obligatorio: no  
El número máximo de instancias que se permite implementar en paralelo.

**MaxError**  
Obligatorio: no  
El número máximo de errores de instancia permitidos durante la implementación.

**TargetGroupNameList**  
Obligatorio: no  
La lista de nombres de grupos de destino para la implementación. Los grupos de destino deben estar ya creados.  
Los grupos de destino proporcionan un conjunto de instancias para procesar solicitudes específicas. Si se especifica el grupo de destino, las instancias se eliminarán del grupo de destino antes de la implementación y se volverán a agregar al grupo de destino después de la implementación.

**PreScript**  
Obligatorio: no  
El script que se ejecutará antes de la fase de implementación de la acción.

**PostScript**  
Obligatorio: sí  
El script que se ejecutará después de la fase de implementación de la acción.

La siguiente imagen muestra un ejemplo de la página **Editar** de la acción en la que se elige **Usar la configuración de la acción**.

![\[La página Editar acciones para una nueva canalización, donde la acción EC2 Implementar especifica el uso de la configuración de la acción\]](http://docs.aws.amazon.com/es_es/codepipeline/latest/userguide/images/ec2deploy-action.png)


La siguiente imagen muestra un ejemplo de la página de **edición** de la acción en la que se selecciona **Usar un DeploySpec archivo**.

![\[Página de edición de acciones para una nueva canalización con la opción EC2 Implementar acción para usar un archivo de especificaciones\]](http://docs.aws.amazon.com/es_es/codepipeline/latest/userguide/images/ec2deploy-action-spec.png)


## Artefactos de entrada
<a name="action-reference-EC2Deploy-input"></a>
+ **Número de artefactos:** `1`
+ **Descripción:** los archivos proporcionados (en caso de haberlos) para respaldar las acciones del script durante la implementación.

## Artefactos de salida
<a name="action-reference-EC2Deploy-output"></a>
+ **Número de artefactos:** `0` 
+ **Descripción:** los artefactos de salida no se aplican a este tipo de acción.

## Permisos de la política de rol de servicio para la acción de implementación de EC2
<a name="action-reference-EC2Deploy-permissions-action"></a>

Cuando CodePipeline se ejecuta la acción, el rol de CodePipeline servicio requiere los siguientes permisos, con el alcance adecuado para acceder con los mínimos privilegios.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "StatementWithAllResource",
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances",
                "elasticloadbalancing:DescribeTargetGroupAttributes",
                "elasticloadbalancing:DescribeTargetGroups",
                "elasticloadbalancing:DescribeTargetHealth",
                "ssm:CancelCommand",
                "ssm:DescribeInstanceInformation",
                "ssm:ListCommandInvocations"
            ],
            "Resource": [
                "*"
            ]
        },
        {
            "Sid": "StatementForLogs",
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": [
                "arn:aws:logs:us-east-1:111122223333:log-group:/aws/codepipeline/{{pipelineName}}:*"
            ]
        },
        {
            "Sid": "StatementForElasticloadbalancing",
            "Effect": "Allow",
            "Action": [
                "elasticloadbalancing:DeregisterTargets",
                "elasticloadbalancing:RegisterTargets"
            ],
            "Resource": [
                "arn:aws:elasticloadbalancing:us-east-1:111122223333:targetgroup/[[targetGroupName]]/*"
            ]
        },
        {
            "Sid": "StatementForSsmOnTaggedInstances",
            "Effect": "Allow",
            "Action": [
                "ssm:SendCommand"
            ],
            "Resource": [
                "arn:aws:ec2:us-east-1:111122223333:instance/*"
            ],
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/{{tagKey}}": "{{tagValue}}"
                }
            }
        },
        {
            "Sid": "StatementForSsmApprovedDocuments",
            "Effect": "Allow",
            "Action": [
                "ssm:SendCommand"
            ],
            "Resource": [
                "arn:aws:ssm:us-east-1::document/AWS-RunPowerShellScript",
                "arn:aws:ssm:us-east-1::document/AWS-RunShellScript"
            ]
        }
    ]
}
```

------

### Registra los grupos de tu canalización en CloudWatch registros
<a name="action-reference-EC2Deploy-logs"></a>

Cuando CodePipeline se ejecuta la acción, CodePipeline crea un grupo de registros con el nombre de la canalización, tal como se indica a continuación. Esto permite reducir los permisos para registrar los recursos mediante el nombre de la canalización.

```
/aws/codepipeline/MyPipelineName
```

Los siguientes permisos de registro se incluyen en las actualizaciones anteriores para el rol de servicio.
+ registros: CreateLogGroup
+ registros: CreateLogStream
+ registros: PutLogEvents

Para ver los registros en la consola mediante la página del cuadro de diálogo de detalles de la acción, se debe agregar el permiso para ver los registros al rol de la consola. Para obtener más información, consulte el ejemplo de política de permisos para consolas en [Permisos necesarios para ver los registros de procesamiento en la consola](security-iam-permissions-console-logs.md).

### Permisos de política de roles de servicio para CloudWatch registros
<a name="w2aac56c13c21c11"></a>

Cuando CodePipeline se ejecuta la acción, CodePipeline crea un grupo de registros con el nombre de la canalización, tal como se indica a continuación. Esto permite reducir los permisos para registrar los recursos mediante el nombre de la canalización.

```
/aws/codepipeline/MyPipelineName
```

Para ver los registros en la consola mediante la página del cuadro de diálogo de detalles de la acción, se debe agregar el permiso para ver los registros al rol de la consola. Para obtener más información, consulte el ejemplo de política de permisos para consolas en [Permisos necesarios para ver los registros de procesamiento en la consola](security-iam-permissions-console-logs.md).

## Referencia del archivo de especificaciones de implementación
<a name="action-reference-EC2Deploy-spec-reference"></a>

Cuando CodePipeline se ejecute la acción, puede especificar un archivo de especificaciones para configurar la implementación en sus instancias. El archivo de especificaciones de implementación especifica qué se debe instalar y qué enlaces de eventos del ciclo de vida se deben ejecutar como respuesta a los eventos del ciclo de vida de implementación. El archivo de especificaciones de implementación siempre tiene formato YAML. El archivo de especificaciones de implementación se utiliza para:
+ Asignar los archivos de origen de la revisión de la aplicación a sus destinos en la instancia.
+ Especificar permisos personalizados para los archivos implementados.
+ Especificar los scripts que se van a ejecutar en cada instancia en las distintas fases del proceso de implementación.

El archivo de especificaciones de despliegue admite parámetros de configuración de despliegue específicos compatibles CodeDeploy con el AppSpec archivo. Puede usar el AppSpec archivo existente directamente y se ignorarán los parámetros no admitidos. Para obtener más información sobre el AppSpec archivo CodeDeploy, consulte la referencia al archivo de especificaciones de la aplicación en la *Guía del [CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file.html)usuario*.

Los parámetros de implementación del archivo se especifican como se indica a continuación. 
+ `files`: el archivo de especificaciones de implementación designa los valores de `source:` y `destination:` para los archivos de implementación. 
+ `scripts`: los eventos incluidos en los scripts para la implementación. Se admiten dos eventos: `BeforeDeploy` y `AfterDeploy`.
+ `hooks`: los enlaces de ciclo de vida del evento. Se admiten los siguientes enlaces: `ApplicationStop`, `BeforeInstall`, `AfterInstall`, `ApplicationStart` y `ValidateService`.
**nota**  
El parámetro hooks es AppSpec compatible con la versión 0.0 (AppSpec formato) CodeDeploy y solo está disponible en ella. Para este formato, CodePipeline realizará un mapeo de los eventos al máximo.

El archivo de especificaciones debe emplear los espacios como requiere YAML. Se producirá un error si las posiciones y el número de los espacios del archivo de especificaciones de implementación no son correctos. Para obtener más información acerca del espaciado, consulte la especificación de [YAML](http://www.yaml.org/).

A continuación, se muestra un ejemplo de archivo de especificaciones de implementación. 

```
version: 0.1
files:
  - source: /index.html
    destination: /var/www/html/
scripts:
  BeforeDeploy:
    - location: scripts/install_dependencies
      timeout: 300
      runas: myuser
  AfterDeploy:
    - location: scripts/start_server
      timeout: 300
      runas: myuser
```

Para ver la configuración de una acción con el archivo de especificaciones de implementación indicado, consulte el ejemplo de [Ejemplo de declaración de acción con especificaciones de implementación](#action-reference-EC2Deploy-example-spec).

## Declaración de acciones
<a name="action-reference-EC2Deploy-example"></a>

------
#### [ YAML ]

```
name: DeployEC2
actions:
- name: EC2
  actionTypeId:
    category: Deploy
    owner: AWS
    provider: EC2
    version: '1'
  runOrder: 1
  configuration:
    InstanceTagKey: Name
    InstanceTagValue: my-instances
    InstanceType: EC2
    PostScript: "test/script.sh",
    TargetDirectory: "/home/ec2-user/deploy"
  outputArtifacts: []
  inputArtifacts:
  - name: SourceArtifact
  region: us-east-1
```

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

```
{
    "name": "DeployEC2",
    "actions": [
        {
            "name": "EC2Deploy",
            "actionTypeId": {
                "category": "Deploy",
                "owner": "AWS",
                "provider": "EC2",
                "version": "1"
            },
            "runOrder": 1,
            "configuration": {
                "InstanceTagKey": "Name",
                "InstanceTagValue": "my-instances",
                "InstanceType": "EC2",
                "PostScript": "test/script.sh",
                "TargetDirectory": "/home/ec2-user/deploy"
            },
            "outputArtifacts": [],
            "inputArtifacts": [
                {
                    "name": "SourceArtifact"
                }
            ],
            "region": "us-east-1"
        }
    ]
},
```

------

## Ejemplo de declaración de acción con especificaciones de implementación
<a name="action-reference-EC2Deploy-example-spec"></a>

------
#### [ YAML ]

```
name: DeployEC2
actions:
- name: EC2
  actionTypeId:
    category: Deploy
    owner: AWS
    provider: EC2
    version: '1'
  runOrder: 1
  configuration:
    DeploySpec: "deployspec.yaml"
    InstanceTagKey: Name
    InstanceTagValue: my-instances
    InstanceType: EC2
  outputArtifacts: []
  inputArtifacts:
  - name: SourceArtifact
  region: us-east-1
```

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

```
{
    "name": "DeployEC2",
    "actions": [
        {
            "name": "EC2Deploy",
            "actionTypeId": {
                "category": "Deploy",
                "owner": "AWS",
                "provider": "EC2",
                "version": "1"
            },
            "runOrder": 1,
            "configuration": {
                "DeploySpec": "deployspec.yaml",
                "InstanceTagKey": "Name",
                "InstanceTagValue": "my-instances",
                "InstanceType": "EC2"
            },
            "outputArtifacts": [],
            "inputArtifacts": [
                {
                    "name": "SourceArtifact"
                }
            ],
            "region": "us-east-1"
        }
    ]
},
```

------

## Véase también
<a name="action-reference-EC2Deploy-links"></a>

Los recursos relacionados siguientes pueden serle de ayuda cuando trabaje con esta acción.
+  [Tutorial: Implemente en instancias de Amazon EC2 con CodePipeline](tutorials-ec2-deploy.md). Este tutorial sirve de guía para crear instancias de EC2, donde se implementará un archivo de script, así como para crear la canalización mediante la acción de EC2.
+ [Error en la acción de implementación de EC2 con el mensaje `No such file`](troubleshooting.md#troubleshooting-ec2-deploy). En este tema, se ofrecen soluciones para los problemas relacionados con errores de archivos no encontrados con la acción de EC2.