

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Referência de ação do Amazon EC2
<a name="action-reference-EC2Deploy"></a>

Você usa uma ação `EC2` do Amazon EC2 para implantar o código do aplicativo à frota de implantação. A frota de implantação pode consistir em instâncias do Amazon EC2 Linux ou nós gerenciados pelo Linux SSM. As instâncias devem ter o atendente do SSM instalado.

**nota**  
Esta ação oferece suporte somente para tipos de instância do Linux. O tamanho máximo da frota compatível é de 500 instâncias.

A ação escolherá várias instâncias com base em um máximo especificado. As instâncias com falha das instâncias anteriores serão escolhidas primeiro. A ação vai ignorar a implantação em determinadas instâncias se a instância já tiver recebido a implantação do mesmo artefato de entrada, como um caso no qual a ação falhou anteriormente.

**nota**  
Essa ação só é compatível para pipelines tipo V2.

**Topics**
+ [Tipo de ação](#action-reference-EC2Deploy-type)
+ [Parâmetros de configuração](#action-reference-EC2Deploy-parameters)
+ [Input artifacts (Artefatos de entrada)](#action-reference-EC2Deploy-input)
+ [Artefatos de saída](#action-reference-EC2Deploy-output)
+ [Permissões de política do perfil de serviço para a ação de implantação do EC2](#action-reference-EC2Deploy-permissions-action)
+ [Implantar referência do arquivo de especificação](#action-reference-EC2Deploy-spec-reference)
+ [Declaração de ação](#action-reference-EC2Deploy-example)
+ [Declaração de ação com exemplo de especificação Implantar](#action-reference-EC2Deploy-example-spec)
+ [Consulte também](#action-reference-EC2Deploy-links)

## Tipo de ação
<a name="action-reference-EC2Deploy-type"></a>
+ Categoria: `Deploy`
+ Proprietário: `AWS`
+ Fornecedor: `EC2`
+ Versão: `1`

## Parâmetros de configuração
<a name="action-reference-EC2Deploy-parameters"></a>

**InstanceTagKey**  
Obrigatório: Sim  
A chave de tag das instâncias que você criou no Amazon EC2, como `Name`.

**InstanceTagValue**  
Obrigatório: não  
O valor de tag das instâncias criadas por você no Amazon EC2, como `my-instances`.  
Quando esse valor não for especificado, todas as instâncias com **InstanceTagKey**serão correspondidas.

**InstanceType**  
Obrigatório: Sim  
O tipo de instâncias ou nós SSM criados no Amazon EC2. Os valores válidos são `EC2` e `SSM_MANAGED_NODE`.  
Você já deve ter criado, marcado e instalado o atendente SSM em todas as instâncias.  
Ao criar a instância, você cria ou usa uma função de instância do EC2 existente. Para evitar `Access Denied` erros, você deve adicionar permissões de bucket do S3 à função da instância para conceder permissões de instância ao bucket de CodePipeline artefatos. Crie uma função padrão ou atualize a função existente com a permissão `s3:GetObject` limitada ao bucket de artefato da região do pipeline.

**TargetDirectory**  
Obrigatório: sim (se o script for especificado)  
O diretório a ser usado na instância do Amazon EC2 para executar scripts.

**DeploySpec**  
Obrigatório: sim (se a especificação da implantação for especificada)  
O arquivo a ser usado para configurar eventos de instalação e ciclo de vida da implantação. Para ver descrições do campo de especificação e informações, consulte [Implantar referência do arquivo de especificação](#action-reference-EC2Deploy-spec-reference). Para exibir uma configuração de ação com o arquivo de especificação de implantação especificado, consulte o exemplo em [Declaração de ação com exemplo de especificação Implantar](#action-reference-EC2Deploy-example-spec).

**MaxBatch**  
Obrigatório: não  
O número máximo de instâncias permitidas para implantação em paralelo.

**MaxError**  
Obrigatório: não  
O número máximo de erros de instância permitidos durante a implantação.

**TargetGroupNameList**  
Obrigatório: não  
A lista de nomes do grupo de destino para implantação. Você já deve ter criado os grupos de destino.  
Os grupos de destino oferecem um conjunto de instâncias para processar solicitações específicas. Se o grupo de destino for especificado, as instâncias serão removidas do grupo de destino antes da implantação e readicionadas ao grupo de destino depois da implantação.

**PreScript**  
Obrigatório: não  
O script a ser executado antes da fase Implantar da ação.

**PostScript**  
Obrigatório: Sim  
O script a ser executado depois da fase Implantar da ação.

A imagem a seguir mostra um exemplo da página **Editar** da ação na qual **Usar configurações de ação** é escolhida.

![\[A página Editar ação de um novo pipeline com a ação EC2 Deploy especificando o uso da configuração da ação\]](http://docs.aws.amazon.com/pt_br/codepipeline/latest/userguide/images/ec2deploy-action.png)


A imagem a seguir mostra um exemplo da página **Editar** para a ação em que **Usar um DeploySpec arquivo** é escolhido.

![\[A página Editar ação de um novo pipeline com a opção de ação EC2 Implantar para usar um arquivo de especificação\]](http://docs.aws.amazon.com/pt_br/codepipeline/latest/userguide/images/ec2deploy-action-spec.png)


## Input artifacts (Artefatos de entrada)
<a name="action-reference-EC2Deploy-input"></a>
+ **Número de artefatos:** `1`
+ **Descrição:** os arquivos fornecidos, se houver, para oferecer suporte às ações de script durante a implantação.

## Artefatos de saída
<a name="action-reference-EC2Deploy-output"></a>
+ **Número de artefatos:** `0` 
+ **Descrição:** os artefatos de saída não se aplicam a esse tipo de ação.

## Permissões de política do perfil de serviço para a ação de implantação do EC2
<a name="action-reference-EC2Deploy-permissions-action"></a>

Ao CodePipeline executar a ação, a função CodePipeline de serviço exige as seguintes permissões, com escopo adequado para acesso com menos privilégios.

------
#### [ 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"
            ]
        }
    ]
}
```

------

### Grupos de registros para seu pipeline em CloudWatch registros
<a name="action-reference-EC2Deploy-logs"></a>

Ao CodePipeline executar a ação, CodePipeline cria um grupo de registros usando o nome do pipeline da seguinte forma. Isso permite reduzir as permissões para os recursos de log usando o nome do pipeline.

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

As seguintes permissões do registro em log estão incluídas nas atualizações acima para o perfil de serviço.
+ registros: CreateLogGroup
+ registros: CreateLogStream
+ registros: PutLogEvents

Para visualizar logs no console usando a página de diálogo de detalhes da ação, a permissão para visualizar logs deve ser adicionada ao perfil do console. Para ter mais informações, consulte o exemplo de política de permissões do console em [Permissões necessárias para visualizar registros computacionais no console](security-iam-permissions-console-logs.md).

### Permissões da política de função de serviço para CloudWatch registros
<a name="w2aac56c13c21c11"></a>

Ao CodePipeline executar a ação, CodePipeline cria um grupo de registros usando o nome do pipeline da seguinte forma. Isso permite reduzir as permissões para os recursos de log usando o nome do pipeline.

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

Para visualizar logs no console usando a página de diálogo de detalhes da ação, a permissão para visualizar logs deve ser adicionada ao perfil do console. Para ter mais informações, consulte o exemplo de política de permissões do console em [Permissões necessárias para visualizar registros computacionais no console](security-iam-permissions-console-logs.md).

## Implantar referência do arquivo de especificação
<a name="action-reference-EC2Deploy-spec-reference"></a>

Ao CodePipeline executar a ação, você pode especificar um arquivo de especificação para configurar a implantação em suas instâncias. O arquivo de especificação da implantação especifica o que instalar e quais hooks de evento do ciclo de vida executar em resposta a eventos do ciclo de vida da implantação. O arquivo de especificação da implantação é formatado sempre em YAML. O arquivo de especificação da implantação é usado para:
+ Mapear os arquivos de origem na sua revisão de aplicativo para os respectivos destinos na instância.
+ Especificar permissões personalizadas para arquivos implantados.
+ Especificar scripts a serem executados em cada instância, em vários estágios do processo de implantação.

O arquivo de especificação de implantação oferece suporte a parâmetros de configuração de implantação específicos suportados pelo CodeDeploy AppSpec arquivo. Você pode usar seu AppSpec arquivo existente diretamente e quaisquer parâmetros não suportados serão ignorados. Para obter mais informações sobre o AppSpec arquivo em CodeDeploy, consulte a referência do arquivo de especificação do aplicativo no *Guia [CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file.html)do usuário*.

Os parâmetros de implantação do arquivo são especificados da seguinte forma: 
+ `files`: o arquivo de especificação da implantação designa `source:` e `destination:` para os arquivos de implantação. 
+ `scripts`: os eventos com script para a implantação. Dois eventos são compatíveis: `BeforeDeploy` e `AfterDeploy`.
+ `hooks`: os ganchos do ciclo de vida do evento. Os seguintes hooks são compatíveis: `ApplicationStop`, `BeforeInstall`, `AfterInstall`, `ApplicationStart` e `ValidateService`.
**nota**  
O parâmetro hooks está disponível para AppSpec compatibilidade com CodeDeploy e só está disponível na versão 0.0 (AppSpec formato). Para este formato, CodePipeline realizará um mapeamento de melhor esforço dos eventos.

O espaçamento YAML correto deve ser usado no arquivo de especificação. Do contrário, um erro não será lançado se os locais e o número de espaços em um arquivo de especificação da implantação não estiverem corretos. Para obter mais informações sobre espaçamento, consulte a especificação [YAML](http://www.yaml.org/).

Um arquivo de especificação da implantação de exemplo está abaixo. 

```
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 exibir uma configuração de ação com o arquivo de especificação de implantação especificado, consulte o exemplo em [Declaração de ação com exemplo de especificação Implantar](#action-reference-EC2Deploy-example-spec).

## Declaração de ação
<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"
        }
    ]
},
```

------

## Declaração de ação com exemplo de especificação Implantar
<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"
        }
    ]
},
```

------

## Consulte também
<a name="action-reference-EC2Deploy-links"></a>

Os recursos relacionados a seguir podem ajudar você à medida que trabalha com esta ação.
+  [Tutorial: Implante em instâncias do Amazon EC2 com CodePipeline](tutorials-ec2-deploy.md): este tutorial apresenta a você a criação de instâncias do EC2 nas quais implantará um arquivo de script, além da criação do pipeline usando a ação do EC2.
+ [A ação Implantar do EC2 falha com uma mensagem de erro `No such file`](troubleshooting.md#troubleshooting-ec2-deploy): este tópico descreve a solução de problemas dos erros de arquivo não encontrado com a ação do EC2.