Referência de EC2 ação da Amazon - AWS CodePipeline

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 EC2 ação da Amazon

Você usa uma EC2 EC2 ação da Amazon para implantar o código do aplicativo em sua frota de implantação. Sua frota de implantação pode consistir em instâncias Amazon EC2 Linux ou nós gerenciados pelo Linux SSM. Suas instâncias devem ter o agente SSM instalado.

nota

Essa ação é compatível somente com tipos de instância Linux. O tamanho máximo da frota suportado é 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 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 em que a ação falhou anteriormente.

nota

Essa ação só é compatível com pipelines do tipo V2.

Tipo de ação

  • Categoria: Deploy

  • Proprietário: AWS

  • Fornecedor: EC2

  • Versão: 1

Parâmetros de configuração

InstanceTagKey

Obrigatório: Sim

A chave de tag das instâncias que você criou na Amazon EC2, comoName.

InstanceTagValue

Obrigatório: Não

O valor da tag das instâncias que você criou na Amazon EC2, comomy-instances.

Quando esse valor não for especificado, todas as instâncias com InstanceTagKeyserão correspondidas.

InstanceType

Obrigatório: Sim

O tipo de instâncias ou nós SSM criados na Amazon EC2. Os valores válidos são EC2 e SSM_MANAGED_NODE.

Você já deve ter criado, marcado e instalado o agente SSM em todas as instâncias.

nota

Ao criar a instância, você cria ou usa uma função de EC2 instância 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 sua função existente com a s3:GetObject permissão limitada ao compartimento de artefatos da região do seu pipeline.

TargetDirectory

Obrigatório: Sim (se o script for especificado)

O diretório a ser usado na sua EC2 instância da Amazon para executar scripts.

DeploySpec

Obrigatório: Sim (se a especificação de implantação for especificada)

O arquivo a ser usado para configurar eventos de implantação, instalação e ciclo de vida. Para obter informações e descrições dos campos de especificação de implantação, consulteImplantar referência de arquivo de especificação. Para visualizar uma configuração de ação com o arquivo de especificação de implantação especificado, veja o exemplo emDeclaração de ação com exemplo de especificação Deploy.

MaxBatch

Obrigatório: Não

O número máximo de instâncias permitidas para implantação paralela.

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 de grupos-alvo para implantação. Você já deve ter criado os grupos-alvo.

Os grupos-alvo fornecem 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 adicionadas novamente ao grupo de destino após a implantação.

PreScript

Obrigatório: Não

O script a ser executado antes da fase de implantação da ação.

PostScript

Obrigatório: Sim

O script a ser executado após a fase de implantação da ação.

A imagem a seguir mostra um exemplo da página Editar para a ação em que 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

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

Input artifacts (Artefatos de entrada)

  • Número de artefatos: 1

  • Descrição: os arquivos fornecidos, se houver, para dar suporte às ações do script durante a implantação.

Artefatos de saída

  • Número de artefatos: 0

  • Descrição: os artefatos de saída não se aplicam a esse tipo de ação.

Permissões da política de função de serviço para a ação de EC2 implantação

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

{ "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:{{region}}:{{AccountId}}:log-group:/aws/codepipeline/{{pipelineName}}:*" ] }, { "Sid": "StatementForElasticloadbalancing", "Effect": "Allow", "Action": [ "elasticloadbalancing:DeregisterTargets", "elasticloadbalancing:RegisterTargets" ], "Resource": [ "arn:aws:elasticloadbalancing:{{region}}:{{AccountId}}:targetgroup/[[targetGroupName]]/*" ] }, { "Sid": "StatementForSsmOnTaggedInstances", "Effect": "Allow", "Action": [ "ssm:SendCommand" ], "Resource": [ "arn:aws:ec2:{{region}}:{{AccountId}}:instance/*" ], "Condition": { "StringEquals": { "aws:ResourceTag/{{tagKey}}": "{{tagValue}}" } } }, { "Sid": "StatementForSsmApprovedDocuments", "Effect": "Allow", "Action": [ "ssm:SendCommand" ], "Resource": [ "arn:aws:ssm:{{region}}::document/AWS-RunPowerShellScript", "arn:aws:ssm:{{region}}::document/AWS-RunShellScript" ] } ] }

Grupos de registros para seu pipeline em CloudWatch registros

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 para registro estão incluídas nas atualizações acima para a função de serviço.

  • troncos: CreateLogGroup

  • troncos: CreateLogStream

  • troncos: 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 CodePipeline .

Permissões da política de função de serviço para CloudWatch registros

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

Implantar referência de arquivo de especificação

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 de implantação especifica o que instalar e quais ganchos de eventos do ciclo de vida devem ser executados em resposta aos eventos do ciclo de vida da implantação. O arquivo de especificação de implantação é sempre formatado em YAML. O arquivo de especificação de 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 CodeDeploydo usuário.

Os parâmetros de implantação do arquivo são especificados da seguinte forma.

  • files- O arquivo de especificação de implantação designa o source: e destination: para os arquivos de implantação.

  • scripts- Os eventos programados para a implantação. Dois eventos são apoiados: BeforeDeploy AfterDeploy e.

  • hooks- O ciclo de vida dos ganchos do evento. Os seguintes ganchos são suportados: ApplicationStopBeforeInstall,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; caso contrário, ocorrerá um erro se os locais e o número de espaços em um arquivo de especificação de implantação não estiverem corretos. Para obter mais informações sobre espaçamento, consulte a especificação YAML.

Um exemplo de arquivo de especificação de implantação 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 visualizar uma configuração de ação com o arquivo de especificação de implantação especificado, veja o exemplo emDeclaração de ação com exemplo de especificação Deploy.

Declaração de ação

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 Deploy

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" } ] },

Os recursos relacionados a seguir podem ajudar você à medida que trabalha com esta ação.