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.
Tópicos
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
actionRoleArnda 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
Commandsser 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.
- 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
PLAINTEXTouSECRETS_MANAGER. Se o valor forSECRETS_MANAGER, forneça a referência do Secrets no valorEnvironmentVariable. Se não especificado, assumirá como padrãoPLAINTEXT.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_MANAGERsó é 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:
Declaração de ação (exemplo)
Consulte também
Os recursos relacionados a seguir podem ajudar você à medida que trabalha com esta ação.
-
Tutorial: Criar um pipeline que executa comandos com computação (tipo V2): este tutorial fornece um exemplo de pipeline com a ação Commands.