

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á.

# Amazon Elastic Container Service e referência de ação de implantação CodeDeploy azul-verde
<a name="action-reference-ECSbluegreen"></a>

Você pode configurar um pipeline AWS CodePipeline que implanta aplicativos de contêiner usando uma blue/green implantação. Em uma blue/green implantação, você pode iniciar uma nova versão do seu aplicativo junto com a versão antiga e testar a nova versão antes de redirecionar o tráfego para ela. Você também poderá monitorar o processo de implantação e realizar uma reversão rapidamente se houver algum problema.

O pipeline concluído detecta alterações em suas imagens ou arquivo de definição de tarefas e o usa CodeDeploy para rotear e implantar tráfego em um cluster e balanceador de carga do Amazon ECS. CodeDeploy cria um novo ouvinte em seu balanceador de carga que pode direcionar sua nova tarefa por meio de uma porta especial. Você também pode configurar o pipeline para usar um local de origem, como um CodeCommit repositório, onde sua definição de tarefa do Amazon ECS é armazenada.

Antes de criar seu pipeline, você já deve ter criado os recursos do Amazon ECS, os recursos, o CodeDeploy balanceador de carga e o grupo-alvo. Você já deve ter marcado e armazenado a imagem em seu repositório de imagens e carregado a definição da tarefa e o AppSpec arquivo em seu repositório de arquivos.

**nota**  
Este tópico descreve a ação de implantação do Amazon ECS para CodeDeploy azul/verde para. CodePipeline Para obter informações de referência sobre as ações de implantação padrão do Amazon ECS em CodePipeline, consulte[Referência da ação de implantação do Amazon Elastic Container Service](action-reference-ECS.md).

**Topics**
+ [Tipo de ação](#action-reference-ECSbluegreen-type)
+ [Parâmetros de configuração](#action-reference-ECSbluegreen-config)
+ [Input artifacts (Artefatos de entrada)](#action-reference-ECSbluegreen-input)
+ [Artefatos de saída](#action-reference-ECSbluegreen-output)
+ [Permissões do perfil de serviço: ação `CodeDeployToECS`](#edit-role-codedeploy-ecs)
+ [Declaração de ação](#action-reference-ECSbluegreen-example)
+ [Consulte também](#action-reference-ECSbluegreen-links)

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

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

**ApplicationName**  
Obrigatório: Sim  
O nome do aplicativo em CodeDeploy. Antes de criar seu pipeline, você já deve ter criado o aplicativo em CodeDeploy.

**DeploymentGroupName**  
Obrigatório: Sim  
O grupo de implantação especificado para os conjuntos de tarefas do Amazon ECS que você criou para seu CodeDeploy aplicativo. Antes de criar seu pipeline, você já deve ter criado o grupo de implantação em CodeDeploy.

**TaskDefinitionTemplateArtifact**  
Obrigatório: Sim  
O nome do artefato de entrada que fornece o arquivo de definição de tarefa para a ação de implantação. Geralmente, esse é o nome do artefato de saída da ação de origem. Quando você usa o console, o nome padrão do artefato de saída da ação de origem é `SourceArtifact`.

**AppSpecTemplateArtifact**  
Obrigatório: Sim  
O nome do artefato de entrada que fornece o AppSpec arquivo para a ação de implantação. Esse valor é atualizado quando o pipeline é executado. Geralmente, esse é o nome do artefato de saída da ação de origem. Quando você usa o console, o nome padrão do artefato de saída da ação de origem é `SourceArtifact`. Para `TaskDefinition` no AppSpec arquivo, você pode manter o texto do `<TASK_DEFINITION>` espaço reservado conforme mostrado [aqui](tutorials-ecs-ecr-codedeploy.md#tutorials-ecs-ecr-codedeploy-taskdefinition).

**AppSpecTemplatePath**  
Obrigatório: não  
O nome do AppSpec arquivo armazenado no local do arquivo de origem do pipeline, como o CodeCommit repositório do pipeline. O nome de arquivo padrão é `appspec.yaml`. Se o AppSpec arquivo tiver o mesmo nome e estiver armazenado no nível raiz do repositório de arquivos, você não precisará fornecer o nome do arquivo. Se o caminho não for o padrão, insira o caminho e o nome do arquivo.

**TaskDefinitionTemplatePath**  
Obrigatório: não  
O nome do arquivo da definição da tarefa armazenada no local de origem do arquivo do pipeline, como o CodeCommit repositório do pipeline. O nome de arquivo padrão é `taskdef.json`. Se o arquivo de definição tiver o mesmo nome e estiver armazenado no nível raiz do repositório de arquivos, você não precisará fornecer o nome do arquivo. Se o caminho não for o padrão, insira o caminho e o nome do arquivo.

**Imagem <Number>ArtifactName**  
Obrigatório: não  
O nome do artefato de entrada que fornece a imagem para a ação de implantação. Geralmente, esse é o artefato de saída do repositório de imagens, como a saída da ação de origem do Amazon ECR.  
Os valores disponíveis para `<Number>` vão de 1 a 4.

**Imagem <Number>ContainerName**  
Obrigatório: não  
O nome da imagem disponível no repositório de imagens; por exemplo, o repositório de origem do Amazon ECR.  
Os valores disponíveis para `<Number>` vão de 1 a 4.

## Input artifacts (Artefatos de entrada)
<a name="action-reference-ECSbluegreen-input"></a>
+ **Número de artefatos:** `1 to 5`
+ **Descrição:** a `CodeDeployToECS` ação primeiro procura o arquivo de definição da tarefa e o AppSpec arquivo no repositório de arquivos de origem, depois procura a imagem no repositório de imagens, depois gera dinamicamente uma nova revisão da definição da tarefa e, por fim, executa os AppSpec comandos para implantar o conjunto de tarefas e o contêiner no cluster.

  A ação `CodeDeployToECS` procura um arquivo `imageDetail.json` que mapeie o URI de imagem para a imagem. Quando você confirmar uma alteração no repositório de imagens do Amazon ECR, a ação de origem do ECR do pipeline criará um arquivo `imageDetail.json` para essa confirmação. Você também pode adicionar manualmente um arquivo `imageDetail.json` para um pipeline em que a ação não seja automatizada. Para mais informações sobre o arquivo `imageDetail.json`, consulte [Arquivo ImageDetail.json para ações de implantação do Amazon ECS blue/green](file-reference.md#file-reference-ecs-bluegreen).

  A ação `CodeDeployToECS` gera dinamicamente uma nova revisão da definição de tarefa. Nessa fase, essa ação substitui os espaços reservados no arquivo de definição de tarefa pelo URI de imagem recuperado nos arquivos imageDetail.json. Por exemplo, se você definir *IMAGE1\$1NAME* como ContainerName parâmetro Image1, deverá especificar o espaço reservado *< IMAGE1 \$1NAME>* como o valor do campo de imagem em seu arquivo de definição de tarefa. Nesse caso, a ação do CodeDeployTo ECS substitui o espaço reservado *< IMAGE1 \$1NAME>* no URI de imagem real recuperado de ImageDetail.json no artefato que você especifica como Image1. ArtifactName

  Para atualizações de definição de tarefas, o CodeDeploy `AppSpec.yaml` arquivo contém a `TaskDefinition` propriedade. 

  ```
  TaskDefinition: <TASK_DEFINITION>
  ```

  Essa propriedade será atualizada pela ação `CodeDeployToECS` depois que a nova definição de tarefa for criada.

  Para o valor do campo `TaskDefinition`, o texto do espaço reservado deve ser <TASK\$1DEFINITION>. A ação `CodeDeployToECS` substitui esse espaço reservado pelo ARN real da definição de tarefa gerada dinamicamente.

## Artefatos de saída
<a name="action-reference-ECSbluegreen-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 do perfil de serviço: ação `CodeDeployToECS`
<a name="edit-role-codedeploy-ecs"></a>

Para a `CodeDeployToECS` ação (ação blue/green deployments), the following are the minimum permissions needed to create pipelines with a CodeDeploy to Amazon ECS blue/green de implantação).

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowCodeDeployDeploymentActions",
            "Action": [
                "codedeploy:CreateDeployment",
                "codedeploy:GetDeployment"
            ],
            "Resource": [
                "arn:aws:codedeploy:*:111122223333:deploymentgroup:[[ApplicationName]]/*"
            ],
            "Effect": "Allow"
        },
        {
            "Sid": "AllowCodeDeployApplicationActions",
            "Action": [
                "codedeploy:GetApplication",
                "codedeploy:GetApplicationRevision",
                "codedeploy:RegisterApplicationRevision"
            ],
            "Resource": [
                "arn:aws:codedeploy:*:111122223333:application:[[ApplicationName]]",
                "arn:aws:codedeploy:*:111122223333:application:[[ApplicationName]]/*"
            ],
            "Effect": "Allow"
        },
        {
            "Sid": "AllowCodeDeployDeploymentConfigAccess",
            "Action": [
                "codedeploy:GetDeploymentConfig"
            ],
            "Resource": [
                "arn:aws:codedeploy:*:111122223333:deploymentconfig:*"
            ],
            "Effect": "Allow"
        },
        {
            "Sid": "AllowECSRegisterTaskDefinition",
            "Action": [
                "ecs:RegisterTaskDefinition"
            ],
            "Resource": [
                "*"
            ],
            "Effect": "Allow"
        },
        {
            "Sid": "AllowPassRoleToECS",
            "Effect": "Allow",
            "Action": "iam:PassRole",
            "Resource": [
                "arn:aws:iam::111122223333:role/[[PassRoles]]"
            ],
            "Condition": {
                "StringEquals": {
                    "iam:PassedToService": [
                        "ecs.amazonaws.com",
                        "ecs-tasks.amazonaws.com"
                    ]
                }
            }
        }
    ]
}
```

------

Você pode aceitar o uso da autorização para atribuição de tags no Amazon ECS. Ao aceitar, você deve conceder as seguintes permissões: `ecs:TagResource`. Para obter mais informações sobre como aceitar e determinar se a permissão será necessária e a autorização de tag será aplicada, consulte o [Cronograma de autorização para atribuição de tags](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-account-settings.html#tag-resources-timeline) no Guia do desenvolvedor do Amazon Elastic Container Service.

Você também deve adicionar as permissões `iam:PassRole` para usar os perfis do IAM para tarefas. Para obter mais informações, consulte [Perfil do IAM para execução de tarefas do Amazon ECS](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html) e [Perfis do IAM para tarefas](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html).

Você também pode adicionar `ecs-tasks.amazonaws.com` à lista de serviços na condição `iam:PassedToService`, conforme mostrado no exemplo acima.

## Declaração de ação
<a name="action-reference-ECSbluegreen-example"></a>

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

```
Name: Deploy
Actions:
  - Name: Deploy
    ActionTypeId:
      Category: Deploy
      Owner: AWS
      Provider: CodeDeployToECS
      Version: '1'
    RunOrder: 1
    Configuration:
      AppSpecTemplateArtifact: SourceArtifact
      ApplicationName: ecs-cd-application
      DeploymentGroupName: ecs-deployment-group
      Image1ArtifactName: MyImage
      Image1ContainerName: IMAGE1_NAME
      TaskDefinitionTemplatePath: taskdef.json
      AppSpecTemplatePath: appspec.yaml
      TaskDefinitionTemplateArtifact: SourceArtifact
    OutputArtifacts: []
    InputArtifacts:
      - Name: SourceArtifact
      - Name: MyImage
    Region: us-west-2
    Namespace: DeployVariables
```

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

```
{
    "Name": "Deploy",
    "Actions": [
        {
            "Name": "Deploy",
            "ActionTypeId": {
                "Category": "Deploy",
                "Owner": "AWS",
                "Provider": "CodeDeployToECS",
                "Version": "1"
            },
            "RunOrder": 1,
            "Configuration": {
                "AppSpecTemplateArtifact": "SourceArtifact",
                "ApplicationName": "ecs-cd-application",
                "DeploymentGroupName": "ecs-deployment-group",
                "Image1ArtifactName": "MyImage",
                "Image1ContainerName": "IMAGE1_NAME",
                "TaskDefinitionTemplatePath": "taskdef.json",
                "AppSpecTemplatePath": "appspec.yaml",
                "TaskDefinitionTemplateArtifact": "SourceArtifact"
            },
            "OutputArtifacts": [],
            "InputArtifacts": [
                {
                    "Name": "SourceArtifact"
                },
                {
                    "Name": "MyImage"
                }
            ],
            "Region": "us-west-2",
            "Namespace": "DeployVariables"
        }
    ]
}
```

------

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

Os recursos relacionados a seguir podem ajudar você à medida que trabalha com esta ação.
+ [Tutorial: Crie um pipeline com uma fonte e ECS-to-CodeDeploy implantação do Amazon ECR](tutorials-ecs-ecr-codedeploy.md)— Este tutorial orienta você na criação dos recursos CodeDeploy e dos recursos do Amazon ECS necessários para uma blue/green implantação. O tutorial mostra como enviar por push uma imagem do Docker para o Amazon ECR e criar uma definição de tarefa do Amazon ECS que lista o nome da imagem do Docker, o nome do contêiner, o nome do serviço do Amazon ECS e a configuração do balanceador de carga. Em seguida, o tutorial orienta você na criação do AppSpec arquivo e do pipeline para sua implantação.
**nota**  
Este tópico e tutorial descrevem a ação CodeDeploy/ECS azul/verde para. CodePipeline Para obter informações sobre as ações padrão do ECS em CodePipeline, consulte [Tutorial: Implantação contínua com CodePipeline](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-cd-pipeline.html).
+ *AWS CodeDeploy Guia do usuário* — Para obter informações sobre como usar o balanceador de carga, o ouvinte de produção, os grupos-alvo e seu aplicativo Amazon ECS em uma blue/green implantação, consulte [Tutorial: Implantar um serviço do Amazon](https://docs.aws.amazon.com/codedeploy/latest/userguide/tutorial-ecs-deployment.html) ECS. Essas informações de referência no *Guia do AWS CodeDeploy usuário* fornecem uma visão geral das implantações azul/verde com o Amazon ECS e. AWS CodeDeploy
+ *Guia do desenvolvedor do Amazon Elastic Container Service*: para obter informações sobre como trabalhar com imagens e contêineres do Docker, serviços e clusters do ECS e conjuntos de tarefas do ECS, consulte [O que é o Amazon ECS?](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/)