Referencia de la acción de Comandos - AWS CodePipeline

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Referencia de la acción de Comandos

La acción de Comandos permite ejecutar comandos del intérprete de comandos en una instancia de computación virtual. Al ejecutar la acción, los comandos especificados en la configuración de la acción se ejecutan en un contenedor independiente. Todos los artefactos que se especifican como artefactos de entrada para una CodeBuild acción están disponibles dentro del contenedor que ejecuta los comandos. Esta acción permite especificar comandos sin necesidad de crear primero un CodeBuild proyecto. Para obtener más información consulte ActionDeclaration y OutputArtifact en la Referencia de la API de AWS CodePipeline .

importante

Esta acción utiliza la CodeBuild computación CodePipeline gestionada para ejecutar comandos en un entorno de compilación. Si ejecuta la acción de Comandos, se le cobrarán cargos por separado en AWS CodeBuild.

nota

La acción Comandos solo está disponible para canalizaciones de tipo V2.

Consideraciones sobre la acción de Comandos

Las siguientes consideraciones se aplican a la acción de Comandos.

  • La acción de comandos usa CodeBuild recursos similares a los de la CodeBuild acción y, al mismo tiempo, permite ejecutar comandos de entorno de shell en una instancia de cómputo virtual sin necesidad de asociar o crear un proyecto de compilación.

    nota

    Si ejecuta la acción de Comandos, se le cobrarán cargos por separado en AWS CodeBuild.

  • Como la acción Comandos CodePipeline utiliza CodeBuild recursos, las compilaciones ejecutadas por la acción se atribuirán a los límites de compilación de tu cuenta en CodeBuild. Las compilaciones ejecutadas mediante la acción de Comandos se tendrán en cuenta para los límites de compilación simultánea configurados para esa cuenta.

  • El tiempo de espera para las compilaciones con la acción de comandos es de 55 minutos, según las CodeBuild compilaciones.

  • La instancia de procesamiento utiliza un entorno de compilación aislado en CodeBuild.

    nota

    Debido a que el entorno de compilación aislado se usa a nivel de cuenta, es posible que una instancia se reutilice para otra ejecución de canalización.

  • Se admiten todos los formatos, excepto los formatos multilínea. Debe utilizar el formato de una sola línea al introducir comandos.

  • La acción de comandos es compatible con las acciones entre cuentas. Para añadir una acción de comandos multicuenta, añádela actionRoleArn desde tu cuenta de destino en la declaración de acción.

  • Para esta acción, CodePipeline asumirá la función de servicio de canalización y la utilizará para permitir el acceso a los recursos en tiempo de ejecución. Se recomienda configurar el rol de servicio para que los permisos se limiten al nivel de acción.

  • Los permisos agregados a la función CodePipeline de servicio se detallan enAgregar permisos al rol de servicio de CodePipeline.

  • El permiso necesario para ver los registros en la consola se detalla en Permisos necesarios para ver los registros de procesamiento en la CodePipeline consola.

  • A diferencia de otras acciones en CodePipeline, no se establecen campos en la configuración de acciones; se establecen los campos de configuración de acciones fuera de la configuración de acciones.

Permisos para las políticas de roles de servicio

Cuando CodePipeline ejecuta la acción, CodePipeline crea un grupo de registros con el nombre de la canalización, tal como se indica a continuación. Esto permite reducir los permisos para registrar los recursos mediante el nombre de la canalización.

/aws/codepipeline/MyPipelineName

Si utiliza un rol de servicio existente, para utilizar la acción de Comandos tendrá que agregar los siguientes permisos para el rol de servicio.

  • registros: CreateLogGroup

  • registros: CreateLogStream

  • registros: PutLogEvents

En la declaración de las políticas de roles de servicio, limite los permisos al nivel de la canalización como se muestra en el siguiente ejemplo.

{ "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 ver los registros en la consola mediante la página del cuadro de diálogo de detalles de la acción, se debe agregar el permiso para ver los registros al rol de la consola. Para obtener más información, consulte el ejemplo de política de permisos para consolas en Permisos necesarios para ver los registros de procesamiento en la CodePipeline consola.

Tipo de acción

  • Categoría: Compute

  • Propietario: AWS

  • Proveedor: Commands

  • Versión: 1

Parámetros de configuración

Comandos

Obligatorio: sí

Puede proporcionar comandos del intérprete de comandos para que se ejecute la acción Commands. En la consola, los comandos se introducen en líneas separadas. En la CLI, los comandos se introducen como cadenas independientes.

nota

Los formatos multilínea no son compatibles y generarán un mensaje de error. Se debe utilizar el formato de una sola línea para introducir comandos en el campo Comandos.

importante

Los ComputeType valores EnvironmentType y coinciden con los de CodeBuild. Admitimos un subconjunto de los tipos disponibles. Para obtener más información, consulte Tipos de computación de entorno de compilación.

EnvironmentType

Obligatorio: no

La imagen del sistema operativo del entorno de compilación que admite la acción de comandos. Los siguientes son valores válidos para los entornos de compilación:

  • LINUX_CONTAINER

  • WINDOWS_SERVER_2022_CONTAINER

La selección de EnvironmentTypepermitirá entonces incluir en el campo el tipo de cálculo para ese sistema operativo. ComputeType Para obtener más información sobre los tipos de CodeBuild procesamiento disponibles para esta acción, consulte la referencia sobre los tipos y modos de procesamiento del entorno de compilación en la Guía del CodeBuild usuario.

nota

Si no se especifica, el proceso predeterminado es lo siguiente para el entorno de compilación:

  • Tipo de cómputo: BUILD_ _SMALL GENERAL1

  • Tipo de entorno: LINUX_CONTAINER

ComputeType

Obligatorio: no

En función de la selección EnvironmentType, se puede proporcionar el tipo de procesamiento. Los siguientes son los valores disponibles para el procesamiento; sin embargo, tenga en cuenta que las opciones disponibles pueden variar según el sistema operativo.

  • BUILD_ _SMALL GENERAL1

  • BUILD_ GENERAL1 _MEDIUM

  • CONSTRUIR_ GENERAL1 _LARGE

importante

Algunos tipos de cómputo no son compatibles con ciertos tipos de entornos. Por ejemplo, WINDOWS_SERVER_2022_CONTAINER no es compatible con BUILD_ _SMALL. GENERAL1 El uso de combinaciones incompatibles provoca un error en la acción y genera un error de tiempo de ejecución.

outputVariables

Obligatorio: no

Especifique los nombres de las variables del entorno que desee exportar. Para obtener una referencia sobre las variables de CodeBuild entorno, consulte Variables de entorno en entornos de compilación en la Guía del CodeBuild usuario.

Archivos

Obligatorio: no

Puede proporcionar los archivos que desee exportar como artefactos de salida para la acción.

El formato admitido para los archivos es el mismo que para los patrones de CodeBuild archivos. Por ejemplo, introduzca **/ para todos los archivos. Para obtener más información, consulte la referencia de especificaciones de compilación CodeBuild en la Guía del CodeBuild usuario.

La página Editar acción para una nueva canalización con la acción de Comandos
VpcId

Obligatorio: no

El ID de VPC de sus recursos.

Subredes

Obligatorio: no

Las subredes de la VPC. Este campo es necesario cuando los comandos necesitan conectarse a los recursos de una VPC.

SecurityGroupIds

Obligatorio: no

Los grupos de seguridad de la VPC. Este campo es necesario cuando los comandos necesitan conectarse a los recursos de una VPC.

El siguiente es un ejemplo en JSON de la acción con campos de configuración que se muestran para el entorno y el tipo de procesamiento, junto con un ejemplo de variable de entorno.

{ "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 }

Artefactos de entrada

  • Número de artefactos: 1 to 10

Artefactos de salida

  • Número de artefactos: 0 to 1

Variables de entorno

Clave

La clave de un par de variables de entorno clave-valor, como. BEDROCK_TOKEN

Valor

El valor del par clave-valor, por ejemplo. apiTokens:bedrockToken El valor se puede parametrizar con variables de salida de acciones de canalización o variables de canalización.

Cuando utilice el SECRETS_MANAGER tipo, este valor debe ser el nombre de un secreto que ya haya almacenado en AWS Secrets Manager.

Tipo

Especifica el tipo de uso del valor de la variable de entorno. El valor puede ser PLAINTEXT o SECRETS_MANAGER. Si el valor esSECRETS_MANAGER, indique la referencia de secretos en el EnvironmentVariable valor. Si no se especifica, toma el valor predeterminado PLAINTEXT.

nota

Se desaconseja encarecidamente el uso de variables de entorno de texto simple para almacenar valores confidenciales, especialmente AWS las credenciales. Al utilizar la CodeBuild consola o AWS CLI, las variables de entorno de texto sin formato se muestran en texto sin formato. Para valores confidenciales, se recomienda utilizar el tipo SECRETS_MANAGERen su lugar.

nota

Al introducir namevalue, y type para la configuración de las variables de entorno, especialmente si la variable de entorno contiene la sintaxis de la variable de CodePipeline salida, no supere el límite de 1000 caracteres del campo de valor de la configuración. Cuando se supera este límite, se devuelve un error de validación.

Para ver un ejemplo de declaración de acción que muestre una variable de entorno, consulte. Parámetros de configuración

nota
  • Este SECRETS_MANAGER tipo solo se admite para la acción Comandos.

  • Los secretos a los que se hace referencia en la acción de comandos se redactarán en los registros de compilación de forma similar a CodeBuild. Sin embargo, los usuarios de la canalización que tienen acceso de edición a la canalización pueden seguir accediendo a estos valores secretos modificando los comandos.

  • Para utilizarlos SecretsManager, debes añadir los siguientes permisos a tu rol de servicio de canalización:

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

Permisos del rol de servicio: acción de comandos

Para obtener compatibilidad con los comandos, añada lo siguiente a su declaración de política:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:{{region}}:{{customerAccountId}}:log-group:/aws/codepipeline/{{pipelineName}}", "arn:aws:logs:{{region}}:{{customerAccountId}}:log-group:/aws/codepipeline/{{pipelineName}}:log-stream:*" ] } ] }

Declaración de acciones (ejemplo)

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

Los recursos relacionados siguientes pueden serle de ayuda cuando trabaje con esta acción.