Referência da ação Commands - AWS CodePipeline

Referência da ação Commands

A ação Commands permite que você execute comandos de shell em uma instância de computação virtual. Ao executar a ação, os comandos especificados na configuração dela são executados em um contêiner separado. Todos os artefatos especificados como artefatos de entrada para uma ação do CodeBuild estão disponíveis dentro do contêiner que executa os comandos. Essa ação permite especificar comandos sem precisar criar um projeto do CodeBuild. Para ter mais informações, consulte ActionDeclaration e OutputArtifact na Referência de API do AWS CodePipeline.

Importante

Essa ação usa a computação do CodeBuild gerenciada pelo CodePipeline para executar comandos em um ambiente de compilação. A execução da ação Comandos incorrerá em cobranças separadas no AWS CodeBuild.

nota

A ação Comandos só está disponível para pipelines do tipo V2.

Considerações para a ação Commands

As seguintes considerações se aplicam à ação Commands.

  • A ação de comandos usa recursos do CodeBuild semelhantes à ação do CodeBuild, ao mesmo tempo em que permite comandos de ambiente de shell em uma instância de computação virtual sem a necessidade de associar ou criar um projeto de compilação.

    nota

    A execução da ação Comandos incorrerá em cobranças separadas no AWS CodeBuild.

  • Como a ação Commands no CodePipeline usa recursos do CodeBuild, as compilações executadas pela ação serão atribuídas aos limites de compilação da conta no CodeBuild. As compilações executadas pela ação Commands serão contabilizadas nos limites de compilações simultâneas, conforme configurado para essa conta.

  • O tempo limite para compilações com a ação Commands é de 55 minutos, com base nas compilações do CodeBuild.

  • A instância de computação usa um ambiente de compilação isolado no CodeBuild.

    nota

    Como o ambiente de compilação isolado é usado no nível da conta, uma instância pode ser reutilizada para outra execução de pipeline.

  • Todos os formatos são compatíveis, exceto os formatos de várias linhas. Você deve usar o formato de linha única ao inserir comandos.

  • A ação de comandos é compatível com ações entre contas. Para adicionar uma ação de comandos entre contas, adicione actionRoleArn da conta de destino na declaração de ação.

  • Para essa ação, o CodePipeline assumirá o perfil de serviço do pipeline e usará esse perfil para permitir o acesso aos recursos no runtime. É recomendável configurar o perfil de serviço para que as permissões sejam reduzidas ao nível da ação.

  • As permissões adicionadas ao perfil de serviço do CodePipeline estão detalhadas em Adicionar permissões ao perfil de serviço do CodePipeline.

  • A permissão necessária para visualizar logs no console está detalhada em Permissões necessárias para visualizar logs de computação no console do CodePipeline.

  • Ao contrário de outras ações no CodePipeline, os campos da configuração da ação não são definidos diretamente dentro dela, mas sim fora da configuração.

Permissões de política de perfil de serviço

Quando o CodePipeline executa a ação, o CodePipeline cria um grupo de logs usando o nome do pipeline conforme mostrado a seguir. Isso permite reduzir as permissões para os recursos de log usando o nome do pipeline.

/aws/codepipeline/MyPipelineName

Caso utilize um perfil de serviço já existente, será preciso incluir as permissões a seguir ao perfil de serviço para habilitar o uso da ação Commands.

  • logs:CreateLogGroup

  • logs:CreateLogStream

  • logs:PutLogEvents

Na declaração de política do perfil de serviço, reduza as permissões até o nível do pipeline, conforme mostrado no exemplo a seguir.

{ "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:*:YOUR_AWS_ACCOUNT_ID:log-group:/aws/codepipeline/YOUR_PIPELINE_NAME", "arn:aws:logs:*:YOUR_AWS_ACCOUNT_ID:log-group:/aws/codepipeline/YOUR_PIPELINE_NAME:*" ] }

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 logs de computação no console do CodePipeline.

Tipo de ação

  • Categoria: Compute

  • Proprietário: AWS

  • Fornecedor: Commands

  • Versão: 1

Parâmetros de configuração

Comandos

Obrigatório: Sim

Você pode fornecer comandos de shell para a ação Commands ser executada. No console, os comandos são inseridos em linhas separadas. Na CLI, os comandos são inseridos como strings separadas.

nota

Os formatos de várias linhas não são compatíveis e resultarão em uma mensagem de erro. O formato de linha única deve ser usado para inserir comandos no campo Comandos.

Importante

Os valores EnvironmentType e ComputeType coincidem com os do CodeBuild. Damos suporte a um subconjunto dos tipos disponíveis. Para obter mais informações, consulte Tipos de computação de ambiente de compilação.

EnvironmentType

Obrigatório: Não

A imagem do sistema operacional para o ambiente de compilação que dá suporte à ação Comandos. Estes são valores válidos para ambientes de compilação:

  • LINUX_CONTAINER

  • WINDOWS_SERVER_2022_CONTAINER

A seleção de EnvironmentType acabará permitindo o tipo de computação desse sistema operacional no campo ComputeType. Para obter mais informações sobre os tipos de computação do CodeBuild disponíveis para essa ação, consulte a referência Modos e tipos de computação do ambiente de compilação no Guia do usuário do CodeBuild.

nota

Se não for especificado, a computação assumirá como padrão o seguinte para o ambiente de compilação:

  • Tipo de computação: BUILD_GENERAL1_SMALL

  • Tipo de ambiente: LINUX_CONTAINER

ComputeType

Obrigatório: Não

Com base na seleção de EnvironmentType, o tipo de computação pode ser fornecido. A seguir estão os valores disponíveis para computação; no entanto, as opções disponíveis podem variar de acordo com o sistema operacional.

  • BUILD_GENERAL1_SMALL

  • BUILD_GENERAL1_MEDIUM

  • BUILD_GENERAL1_LARGE

Importante

Alguns tipos de computação não são compatíveis com determinados tipos de ambiente. Por exemplo, WINDOWS_SERVER_2022_CONTAINER não é compatível com BUILD_GENERAL1_SMALL. O uso de combinações incompatíveis causa falha na ação e gera um erro de runtime.

outputVariables

Obrigatório: Não

Especifique os nomes das variáveis do ambiente que deseja exportar. Para conferir uma referência das variáveis ​​de ambiente do CodeBuild, consulte Environment variables in build environments no Guia do usuário do CodeBuild.

Arquivos

Obrigatório: Não

Você pode fornecer arquivos que deseja exportar como artefatos de saída para a ação.

O formato compatível para arquivos é o mesmo dos padrões de arquivo do CodeBuild. Por exemplo, insira **/ para todos os arquivos. Para ter mais informações, consulte Build specification reference for CodeBuild no Guia do usuário do CodeBuild.

A página Editar ação para um novo pipeline com a ação Commands
VpcId

Obrigatório: Não

O ID da VPC dos recursos.

Sub-redes

Obrigatório: Não

As sub-redes da VPC. Este campo é necessário quando os comandos precisam se conectar a recursos em uma VPC.

SecurityGroupIds

Obrigatório: Não

Os grupos de segurança da VPC. Este campo é necessário quando os comandos precisam se conectar a recursos em uma VPC.

Este é um exemplo JSON da ação com campos de configuração mostrados para ambiente e tipo de computação, além da variável do ambiente de exemplo.

{ "name": "Commands1", "actionTypeId": { "category": "Compute", "owner": "AWS", "provider": "Commands", "version": "1" }, "inputArtifacts": [ { "name": "SourceArtifact" } ], "commands": [ "ls", "echo hello", "echo $BEDROCK_TOKEN", ], "configuration": { "EnvironmentType": "LINUX_CONTAINER", "ComputeType": "BUILD_GENERAL1_MEDIUM" }, "environmentVariables": [ { "name": "BEDROCK_TOKEN", "value": "apiTokens:bedrockToken", "type": "SECRETS_MANAGER" } ], "runOrder": 1 }

Input artifacts (Artefatos de entrada)

  • Número de artefatos: 1 to 10

Artefatos de saída

  • Número de artefatos: 0 to 1

Variáveis de ambiente

Chave

A chave em um par de variáveis do ambiente chave-valor, como BEDROCK_TOKEN.

Valor

O valor do par chave-valor, como apiTokens:bedrockToken. O valor pode ser parametrizado com variáveis de saída a partir de ações ou variáveis do pipeline.

Ao usar o tipo SECRETS_MANAGER, esse valor deve ser o nome de um segredo que você já tenha armazenado no AWS Secrets Manager.

Tipo

Especifica o tipo de uso do valor da variável de ambiente. O valor pode ser PLAINTEXT ou SECRETS_MANAGER. Se o valor for SECRETS_MANAGER, forneça a referência do Secrets no valor EnvironmentVariable. Se não especificado, assumirá como padrão PLAINTEXT.

nota

É altamente não recomendável usar variáveis de ambiente não criptografadas para armazenar valores confidenciais, especialmente credenciais da AWS. Quando você usa o console ou a AWS CLI do CodeBuild, as variáveis de ambiente não criptografadas são exibidas em texto sem formatação. Para valores confidenciais, recomendamos usar o tipo SECRETS_MANAGER.

nota

Ao inserir name, value e type na configuração das variáveis de ambiente, principalmente se a variável de ambiente contiver a sintaxe da variável de saída do CodePipeline, não ultrapasse o limite de 1000 caracteres no campo de valor da configuração. Um erro de validação será retornado quando esse limite for excedido.

Para obter um exemplo de declaração de ação mostrando uma variável de ambiente, consulte Parâmetros de configuração.

nota
  • O tipo SECRETS_MANAGER só é compatível com a ação Comandos.

  • Os segredos referenciados na ação Comandos serão editados nos logs de compilação semelhantes aos do CodeBuild. Porém, os usuários de pipeline que tiverem acesso Editar ao pipeline ainda poderão acessar esses valores secretos modificando os comandos.

  • Para usar o SecretsManager, você deve adicionar as seguintes permissões ao perfil de serviço do pipeline:

    { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "SECRET_ARN" ] }

Permissões do perfil de serviço: ação Comandos

Para suporte a Comandos, adicione o seguinte à declaração da política:

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": [ "arn:aws:iam::*:role/Service*", "arn:aws:iam::*:role/Service*" ] } ] }

Declaração de ação (exemplo)

YAML
name: Commands_action actionTypeId: category: Compute owner: AWS provider: Commands version: '1' runOrder: 1 configuration: {} commands: - ls - echo hello - 'echo pipeline Execution Id is #{codepipeline.PipelineExecutionId}' outputArtifacts: - name: BuildArtifact files: - **/ inputArtifacts: - name: SourceArtifact outputVariables: - AWS_DEFAULT_REGION region: us-east-1 namespace: compute
JSON
{ "name": "Commands_action", "actionTypeId": { "category": "Compute", "owner": "AWS", "provider": "Commands", "version": "1" }, "runOrder": 1, "configuration": {}, "commands": [ "ls", "echo hello", "echo pipeline Execution Id is #{codepipeline.PipelineExecutionId}" ], "outputArtifacts": [ { "name": "BuildArtifact", "files": [ "**/" ] } ], "inputArtifacts": [ { "name": "SourceArtifact" } ], "outputVariables": [ "AWS_DEFAULT_REGION" ], "region": "us-east-1", "namespace": "compute" }

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