Session Manager에서 실행 중인 빌드 보기 - AWS CodeBuild

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Session Manager에서 실행 중인 빌드 보기

AWS CodeBuild에서는 실행 중인 빌드를 일시 중지한 다음 AWS Systems Manager 세션 관리자를 사용하여 빌드 컨테이너에 연결하고 컨테이너의 상태를 볼 수 있습니다.

참고

이 기능은 Windows 환경에서는 제공되지 않습니다.

사전 조건

Session Manager를 빌드 세션과 함께 사용할 수 있게 하려면 빌드의 세션 연결을 활성화해야 합니다. 다음과 같은 두 가지 사전 요구 사항이 있습니다.

  • CodeBuild Linux 표준 큐레이션 이미지에는 이미 SSM 에이전트가 설치되어 있고 에이전트가 활성화되어 있습니다SSM. ContainerMode

    빌드에 사용자 지정 이미지를 사용하는 경우 다음을 수행하세요.

    1. SSM에이전트를 설치합니다. 자세한 내용은 AWS Systems Manager 사용 설명서의 Linux용 EC2 인스턴스에 SSM 에이전트 수동 설치를 참조하십시오. SSM에이전트 버전은 3.0.1295.0 이상이어야 합니다.

    2. https://github.com/aws/aws-codebuild-docker-images/blob/master/ubuntu/standard/5.0/ .json amazon-ssm-agent 파일을 이미지의 디렉터리로 복사합니다. /etc/amazon/ssm/ 그러면 에이전트에서 컨테이너 모드가 활성화됩니다. SSM

    참고

    이 기능이 예상대로 작동하려면 사용자 지정 이미지를 업데이트한 SSM 에이전트 대부분이 필요합니다.

  • CodeBuild 서비스 역할에는 다음 SSM 정책이 있어야 합니다.

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

    빌드를 시작할 때 CodeBuild 콘솔이 이 정책을 서비스 역할에 자동으로 연결하도록 할 수 있습니다. 또는 이 정책을 서비스 역할에 수동으로 연결할 수도 있습니다.

  • Systems Manager 기본 설정에서 감사 및 로깅 세션 활동을 활성화한 경우 CodeBuild 서비스 역할에도 추가 권한이 있어야 합니다. 권한은 로그가 저장되는 위치에 따라 다릅니다.

    CloudWatch 로그

    CloudWatch 로그를 사용하여 로그를 저장하는 경우 CodeBuild 서비스 역할에 다음 권한을 추가하십시오.

    { "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>:*" } ] }
    Amazon S3

    Amazon S3를 사용하여 로그를 저장하는 경우 CodeBuild 서비스 역할에 다음 권한을 추가하십시오.

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

    자세한 내용은AWS Systems Manager 사용 설명서의 세션 활동 감사 및 로깅을 참조하세요.

빌드 일시 중지

빌드를 일시 중지하려면 buildspec 파일의 모든 빌드 단계에 codebuild-breakpoint 명령을 삽입합니다. 이 시점에서 빌드가 일시 중지되므로 빌드 컨테이너에 연결하여 컨테이너를 현재 상태로 볼 수 있습니다.

예를 들어, buildspec 파일의 빌드 단계에 다음을 추가합니다.

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

이 코드는 /tmp/hello-world 파일을 생성한 다음, 이 시점에서 빌드를 일시 중지합니다.

빌드를 시작합니다.

Session Manager를 빌드 세션과 함께 사용할 수 있게 하려면 빌드의 세션 연결을 활성화해야 합니다. 이렇게 하려면 빌드를 시작할 때 다음 절차를 따르세요.

  1. AWS CodeBuild https://console.aws.amazon.com/codesuite/코드빌드/홈에서 콘솔을 엽니다.

  2. 탐색 창에서 프로젝트 빌드를 선택합니다. 빌드 프로젝트를 선택한 다음, 재정의로 빌드 시작을 선택합니다.

  3. Advanced build overrides(고급 빌드 재정의)를 선택합니다.

  4. 환경 섹션에서 세션 연결 활성화 옵션을 선택합니다. 이 옵션을 선택하지 않으면 codebuild-breakpointcodebuild-resume 명령이 모두 무시됩니다.

  5. 다른 사항을 원하는 대로 변경하고 빌드 시작을 선택합니다.

  6. 콘솔에서 빌드 상태를 모니터링합니다. 세션을 사용할 수 있게 되면 빌드 상태 섹션에 AWS Session Manager 링크가 나타납니다.

빌드 컨테이너에 연결

다음 두 방법 중 하나로 빌드 컨테이너에 연결할 수 있습니다.

CodeBuild 콘솔

웹 브라우저에서 AWS Session Manager 링크를 열어 빌드 컨테이너에 연결합니다. 빌드 컨테이너를 탐색하고 제어할 수 있는 터미널 세션이 열립니다.

AWS CLI
참고

이 절차를 수행하려면 로컬 컴퓨터에 Session Manager 플러그인이 설치되어 있어야 합니다. 자세한 내용은 AWS Systems Manager 사용 설명서의 세션 관리자 플러그인 설치를 참조하십시오. AWS CLI

  1. 빌드 ID로 batch-get-builds API를 호출하여 세션 대상 식별자를 비롯한 빌드 관련 정보를 가져옵니다. 세션 대상 식별자 속성 이름은 aws 명령의 출력 유형에 따라 달라집니다. 바로 이 때문에 --output json이 명령에 추가된 것입니다.

    aws codebuild batch-get-builds --ids <buildID> --region <region> --output json
  2. sessionTarget 속성 값을 복사합니다. sessionTarget 속성 이름은 aws 명령의 출력 유형에 따라 달라질 수 있습니다. 바로 이 때문에 --output json이 이전 단계의 명령에 추가된 것입니다.

  3. 다음 명령을 사용하여 빌드 컨테이너에 연결합니다.

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

이 예제에서는 /tmp/hello-world 파일이 존재하고 텍스트 Hello World가 포함되어 있는지 확인하세요.

빌드 재개

빌드 컨테이너 검사를 마친 후 컨테이너 쉘에서 codebuild-resume 명령을 실행합니다.

$ codebuild-resume