Ver una compilación en ejecución en el Administrador de sesiones - AWS CodeBuild

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.

Ver una compilación en ejecución en el Administrador de sesiones

EnAWS CodeBuild, puede pausar una compilación en ejecución y, a continuación, usar el Administrador deAWS Systems Manager sesiones para conectarse al contenedor de compilación y ver el estado del contenedor.

nota

Esta característica no está disponible en entornos Windows.

Requisitos previos

Para permitir que el Administrador de sesiones se utilice con la sesión de compilación, debe habilitar la conexión de sesión para la compilación. Hay dos requisitos previos:

  • CodeBuild Las imágenes seleccionadas por el estándar de Linux ya tienen el agente SSM instalado y el agente SSM ContainerMode activado.

    Si utilizas una imagen personalizada para tu compilación, haz lo siguiente:

    1. Instalar el SSM Agent de . Para obtener más información, consulte Instalación manual de SSM Agent en instancias EC2 para Linux en la Guía delAWS Systems Manager usuario. La versión de SSM Agent debe ser 3.0.1295.0 o posterior.

    2. Copia el archivo https://github.com/aws/aws-codebuild-docker-images /blob/master/ubuntu/standard/4.0/amazon-ssm-agent .json al/etc/amazon/ssm/ directorio de tu imagen. Esto habilita el modo contenedor en el agente SSM.

  • El rol CodeBuild de servicio debe tener la siguiente política de SSM:

    { "Effect": "Allow", "Action": [ "ssmmessages:CreateControlChannel", "ssmmessages:CreateDataChannel", "ssmmessages:OpenControlChannel", "ssmmessages:OpenDataChannel" ], "Resource": "*" }

    Puede hacer que la CodeBuild consola adjunte automáticamente esta política a su rol de servicio al iniciar la compilación. También puede adjuntar esta política al rol de servicio manualmente.

  • Si tiene habilitada la actividad de auditoría y registro de sesiones en las preferencias de Systems Manager, el rol de CodeBuild servicio también debe tener permisos adicionales. Los permisos son diferentes según el lugar en el que se almacenen los registros.

    CloudWatch Registros

    Si usa CloudWatch Registros para almacenar sus registros, añada el siguiente permiso a la función CodeBuild de servicio:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "logs:DescribeLogGroups", "Resource": "arn:aws:logs:<region-id>:<account-id>:log-group:*:*" }, { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "arn:aws:logs:<region-id>:<account-id>:log-group:<log-group-name>:*" } ] }
    Simple Storage Service (Amazon S3)

    Si utiliza Amazon S3 para almacenar sus registros, añada el siguiente permiso a la función CodeBuild de servicio:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetEncryptionConfiguration", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::<bucket-name>", "arn:aws:s3:::<bucket-name>/*" ] } ] }

    Para obtener más información, consulte Auditar y registrar la actividad de la sesión en la Guía delAWS Systems Manager usuario.

Pausar la compilación

Para pausar la compilación, inserte elcodebuild-breakpoint comando en cualquiera de las fases de compilación del archivo buildspec. La compilación se pausará en este punto, lo que le permitirá conectarse al contenedor de compilación y ver el contenedor en su estado actual.

Por ejemplo, añada lo siguiente a las fases de compilación de su archivo de especificaciones de compilación.

phases: pre_build: commands: - echo Entered the pre_build phase... - echo "Hello World" > /tmp/hello-world - codebuild-breakpoint

Este código crea el/tmp/hello-world archivo y, a continuación, detiene la compilación en este punto.

Comenzar la compilación

Para permitir que el Administrador de sesiones se utilice con la sesión de compilación, debe habilitar las conexiones de sesión para la compilación. Para ello, al iniciar la compilación, siga los pasos que se indican a continuación:

  1. Abra laAWS CodeBuild consola en https://console.aws.amazon.com/codesuite/codebuild/home.

  2. En el panel de navegación, elija Build projects. Elija el proyecto de construcción y, a continuación, elija Comenzar a compilar con modificaciones.

  3. Seleccione Advanced build overrides (Sustitución avanzada de compilaciones).

  4. En la sección Entorno, elija la opción Activar conexión de sesión. Si no se selecciona esta opción, se ignoran todoscodebuild-resume los comandoscodebuild-breakpoint y.

  5. En la sección Entorno, elija la opción Permitir modificar este rol de servicioAWS CodeBuild para que pueda usarse con este proyecto de compilación y permitir que la CodeBuild consola adjunte automáticamente la política de administrador de sesiones a su rol de servicio. Si ya ha agregado la política de administrador de sesiones a su rol, no necesita seleccionar esta opción.

  6. Realice los demás cambios que desee y elija Comenzar a compilar.

  7. Supervise el estado de compilación en la consola. Cuando la sesión esté disponible, el enlace Administrador deAWS sesiones aparece en la sección Estado de compilación.

Connect al contenedor de compilación

Puede conectarse al contenedor de compilación de una de las dos formas siguientes:

CodeBuild consola

En un navegador web, abra el enlace del Administrador deAWS sesiones para conectarse al contenedor de compilación. Se abre una sesión de terminal que le permite explorar y controlar el contenedor de compilación.

AWS CLI
nota

Su máquina local debe tener instalado el complemento Session Manager para este procedimiento. Para obtener más información, consulte Instalar el complemento de administrador de sesiones para laAWS CLI en la Guía delAWS Systems Manager usuario.

  1. Llama a labatch-get-builds API con el ID de compilación para obtener información sobre la compilación, incluido el identificador de destino de la sesión. El nombre de la propiedad del identificador de destino de sesión varía según el tipo de salida delaws comando. Por eso--output json se añade al comando.

    aws codebuild batch-get-builds --ids <buildID> --region <region> --output json
  2. Copia el valorsessionTarget de la propiedad. El nombre de lasessionTarget propiedad puede variar según el tipo de salida delaws comando. Por eso--output json se añade al comando en el paso anterior.

  3. Para conectarse al contenedor de compilación utilice el siguiente comando.

    aws ssm start-session --target <sessionTarget> --region <region>

Para este ejemplo, compruebe que el/tmp/hello-world archivo existe y contiene el textoHello World.

Reanudar la compilación

Cuando termine de examinar el contenedor de compilación, ejecute elcodebuild-resume comando desde la shell del contenedor.

$ codebuild-resume