쿠키 기본 설정 선택

당사는 사이트와 서비스를 제공하는 데 필요한 필수 쿠키 및 유사한 도구를 사용합니다. 고객이 사이트를 어떻게 사용하는지 파악하고 개선할 수 있도록 성능 쿠키를 사용해 익명의 통계를 수집합니다. 필수 쿠키는 비활성화할 수 없지만 '사용자 지정' 또는 ‘거부’를 클릭하여 성능 쿠키를 거부할 수 있습니다.

사용자가 동의하는 경우 AWS와 승인된 제3자도 쿠키를 사용하여 유용한 사이트 기능을 제공하고, 사용자의 기본 설정을 기억하고, 관련 광고를 비롯한 관련 콘텐츠를 표시합니다. 필수가 아닌 모든 쿠키를 수락하거나 거부하려면 ‘수락’ 또는 ‘거부’를 클릭하세요. 더 자세한 내용을 선택하려면 ‘사용자 정의’를 클릭하세요.

GitHub Actions를 사용하여 AWS CDK Python 애플리케이션에 대한 Amazon CodeGuru 리뷰 자동화 - 권장 가이드

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

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

GitHub Actions를 사용하여 AWS CDK Python 애플리케이션에 대한 Amazon CodeGuru 리뷰 자동화

작성자: Vanitha Dontireddy(AWS) 및 Sarat Chandra Pothula(AWS)

요약

이 패턴은 GitHub Actions를 통해 오케스트레이션된 AWS Cloud Development Kit (AWS CDK) Python 애플리케이션에 대한 Amazon CodeGuru 자동 코드 검토의 통합을 보여줍니다. 이 솔루션은 AWS CDK Python에 정의된 서버리스 아키텍처를 배포합니다. 이 접근 방식은 개발 파이프라인 내에서 전문가 코드 분석을 자동화하여 AWS CDK Python 프로젝트에 대해 다음을 수행할 수 있습니다.

  • 코드 품질을 개선합니다.

  • 워크플로를 간소화합니다.

  • 서버리스 컴퓨팅의 이점을 극대화합니다.

사전 조건 및 제한 사항

사전 조건 

  • 활성. AWS 계정

  • AWS Command Line Interface (AWS CLI) 버전 2.9.11 이상, 설치구성됨.

  • 활성 GitHub 계정 및 읽기 및 쓰기 워크플로 권한이 있고 GitHub Actions에서 풀 요청(PR)을 생성하여 PR 워크플로가 올바르게 작동하는지 확인하는 GitHub 리포지토리입니다.

  • 에 솔루션을 배포하기 위한 GitHub 작업의 OpenID Connect(OIDC) 역할입니다 AWS 계정. 역할을 생성하려면 AWS CDK 구문을 사용합니다.

제한 사항

아키텍처

다음 다이어그램은이 솔루션의 아키텍처를 보여줍니다.

GitHub Actions를 사용하여 AWS CDK Python 애플리케이션에 대한 CodeGuru 코드 검토를 통합하는 워크플로입니다.

다이어그램에 표시된 것처럼 개발자가 검토를 위해 풀 요청(PR)을 생성하면 GitHub 작업은 다음 단계를 트리거합니다.

  1. IAM 역할 가정 - 파이프라인은 GitHub 보안 암호에 지정된 IAM 역할을 사용하여 배포 작업을 수행합니다.

  2. 코드 분석

    • CodeGuru Reviewer는 Amazon S3 버킷에 저장된 코드를 분석합니다. 결함을 식별하고 수정 및 최적화에 대한 권장 사항을 제공합니다.

    • CodeGuru Security는 정책 위반 및 취약성을 검사합니다.

  3. 조사 결과 검토

    • 파이프라인은 콘솔 출력에서 조사 결과 대시보드에 대한 링크를 인쇄합니다.

    • 중요한 결과가 감지되면 파이프라인이 즉시 실패합니다.

    • 심각도가 높거나 정상이거나 낮은 결과의 경우 파이프라인은 다음 단계로 계속됩니다.

  4. PR 승인

    • 검토자는 PR을 수동으로 승인해야 합니다.

    • PR이 거부되면 파이프라인이 실패하고 추가 배포 단계를 중지합니다.

  5. CDK 배포 - PR 승인 시 CDK 배포 프로세스가 시작됩니다. 다음 AWS 서비스 및 리소스를 설정합니다.

    • CodeGuru Profiler

    • AWS Lambda 함수

    • Amazon Simple Queue Service(Amazon SQS) 대기열

  6. 프로파일링 데이터 생성 - CodeGuru Profiler에 대한 충분한 프로파일링 데이터를 생성하려면:

    • 파이프라인은 주기적으로 Amazon SQS 대기열로 메시지를 전송하여 Lambda 함수를 여러 번 호출합니다.

도구

AWS 서비스

  • AWS Cloud Development Kit (AWS CDK)는 코드로 AWS 클라우드 인프라를 정의하고 프로비저닝하는 데 도움이 되는 소프트웨어 개발 프레임워크입니다.

  • CDK Toolkit은 AWS CDK 앱과 상호 작용하는 데 도움이 되는 명령줄 클라우드 개발 키트입니다.

  • Amazon CodeGuru Profiler는 라이브 애플리케이션에서 런타임 성능 데이터를 수집하고 애플리케이션 성능을 미세 조정하는 데 도움이 되는 권장 사항을 제공합니다.

  • Amazon CodeGuru Reviewer는 프로그램 분석 및 기계 학습을 사용하여 개발자가 찾기 어려운 잠재적 결함을 감지합니다. 그런 다음 CodeGuru Profiler는 Java 및 Python 코드를 개선하기 위한 제안을 제공합니다.

  • Amazon CodeGuru Security는 기계 학습을 사용하여 보안 정책 위반 및 취약성을 감지하는 정적 애플리케이션 보안 도구입니다. 보안 위험을 해결하기 위한 제안을 제공하고 애플리케이션의 보안 상태를 추적할 수 있도록 지표를 생성합니다.

  • AWS Identity and Access Management (IAM)는 AWS 리소스에 대한 액세스를 인증하고 사용할 수 있는 권한을 부여받은 사용자를 제어하여 리소스에 대한 액세스를 안전하게 관리하는 데 도움이 됩니다.

  • AWS Lambda는 서버를 프로비저닝하거나 관리할 필요 없이 코드를 실행하는 데 도움이 되는 컴퓨팅 서비스입니다. 필요할 때만 코드를 실행하며 자동으로 확장이 가능하므로 사용한 컴퓨팅 시간만큼만 비용을 지불합니다.

  • Amazon Simple Queue Service(Amazon SQS)는 내구력 있고 가용성이 뛰어난 보안 호스팅 대기열을 제공하며 이를 통해 분산 소프트웨어 시스템과 구성 요소를 통합 및 분리할 수 있습니다.

  • Amazon Simple Storage Service(S3)는 원하는 양의 데이터를 저장, 보호 및 검색하는 데 도움이 되는 클라우드 기반 객체 스토리지 서비스입니다.

기타 도구

  • GitHub Actions는 GitHub 리포지토리와 긴밀하게 통합된 지속적 통합 및 지속적 전송(CI/CD) 플랫폼입니다. GitHub 작업을 사용하여 빌드, 테스트 및 배포 파이프라인을 자동화할 수 있습니다.

코드 리포지토리

이 패턴의 코드는 GitHub amazon-codeguru-suite-cdk-python 리포지토리에서 사용할 수 있습니다.

모범 사례

에픽

작업설명필요한 기술

AWS 자격 증명을 설정합니다.

스택을 배포하는 AWS 계정 및 AWS 리전 를 정의하는 변수를 내보내려면 다음 명령을 실행합니다.

export CDK_DEFAULT_ACCOUNT=<12-digit AWS account number>
export CDK_DEFAULT_REGION=<AWS Region>

의 AWS 자격 증명은 환경 변수를 통해 AWS CDK 제공됩니다.

AWS DevOps, DevOps 엔지니어

리포지토리를 복제합니다.

로컬 시스템에서 리포지토리를 복제하려면 다음 명령을 실행합니다.

git clone https://github.com/aws-samples/amazon-codeguru-suite-cdk-python.git
AWS DevOps, DevOps 엔지니어

CDK 도구 키트를 설치합니다.

CDK 도구 키트가 설치되었는지 확인하고 버전을 확인하려면 다음 명령을 실행합니다. 

cdk --version

CDK Toolkit 버전이 2.27.0 이전인 경우 다음 명령을 입력하여 버전 2.27.0으로 업데이트합니다.

npm install -g aws-cdk@2.27.0

CDK Toolkit이 설치되지 않은 경우 다음 명령을 실행하여 설치합니다.

npm install -g aws-cdk@2.27.0 --force
AWS DevOps, DevOps 엔지니어

필요한 종속 항목을 설치합니다.

필요한 프로젝트 종속성을 설치하려면 다음 명령을 실행합니다.

python -m pip install --upgrade pip pip install -r requirements.txt
AWS DevOps, DevOps 엔지니어

CDK 환경을 부트스트랩합니다.

AWS CDK 환경을 부트스트랩하려면 다음 명령을 실행합니다.

npm install npm run cdk bootstrap "aws://${ACCOUNT_NUMBER}/${AWS_REGION}"

환경을 성공적으로 부트스트랩한 후에는 다음 출력이 표시되어야 합니다.

⏳ Bootstrapping environment aws://{account}/{region}... ✅ Environment aws://{account}/{region} bootstrapped
AWS DevOps, DevOps 엔지니어

환경을 설정합니다

작업설명필요한 기술

AWS 자격 증명을 설정합니다.

스택을 배포하는 AWS 계정 및 AWS 리전 를 정의하는 변수를 내보내려면 다음 명령을 실행합니다.

export CDK_DEFAULT_ACCOUNT=<12-digit AWS account number>
export CDK_DEFAULT_REGION=<AWS Region>

의 AWS 자격 증명은 환경 변수를 통해 AWS CDK 제공됩니다.

AWS DevOps, DevOps 엔지니어

리포지토리를 복제합니다.

로컬 시스템에서 리포지토리를 복제하려면 다음 명령을 실행합니다.

git clone https://github.com/aws-samples/amazon-codeguru-suite-cdk-python.git
AWS DevOps, DevOps 엔지니어

CDK 도구 키트를 설치합니다.

CDK 도구 키트가 설치되었는지 확인하고 버전을 확인하려면 다음 명령을 실행합니다. 

cdk --version

CDK Toolkit 버전이 2.27.0 이전인 경우 다음 명령을 입력하여 버전 2.27.0으로 업데이트합니다.

npm install -g aws-cdk@2.27.0

CDK Toolkit이 설치되지 않은 경우 다음 명령을 실행하여 설치합니다.

npm install -g aws-cdk@2.27.0 --force
AWS DevOps, DevOps 엔지니어

필요한 종속 항목을 설치합니다.

필요한 프로젝트 종속성을 설치하려면 다음 명령을 실행합니다.

python -m pip install --upgrade pip pip install -r requirements.txt
AWS DevOps, DevOps 엔지니어

CDK 환경을 부트스트랩합니다.

AWS CDK 환경을 부트스트랩하려면 다음 명령을 실행합니다.

npm install npm run cdk bootstrap "aws://${ACCOUNT_NUMBER}/${AWS_REGION}"

환경을 성공적으로 부트스트랩한 후에는 다음 출력이 표시되어야 합니다.

⏳ Bootstrapping environment aws://{account}/{region}... ✅ Environment aws://{account}/{region} bootstrapped
AWS DevOps, DevOps 엔지니어
작업설명필요한 기술

AWS CDK 앱을 동기화합니다.

AWS CDK 앱을 합성하려면 다음 명령을 실행합니다.

cdk synth

이 명령에 대한 자세한 내용은 AWS CDK 설명서의 cdk 합성을 참조하세요.

AWS DevOps, DevOps 엔지니어

리소스를 배포합니다.

리소스를 배포하려면 다음 명령을 실행합니다.

cdk deploy --require-approval never
참고

--require-approval never 플래그는 CDK가 모든 변경 사항을 자동으로 승인하고 실행함을 의미합니다. 여기에는 CDK가 일반적으로 수동 검토가 필요한 것으로 플래그를 지정하는 변경 사항(예: IAM 정책 변경 또는 리소스 제거)이 포함됩니다. 프로덕션 환경에서 --require-approval never 플래그를 사용하기 전에 CDK 코드 및 CI/CD 파이프라인이 잘 테스트되고 안전한지 확인합니다.

AWS DevOps, DevOps 엔지니어

CDK 앱 배포

작업설명필요한 기술

AWS CDK 앱을 동기화합니다.

AWS CDK 앱을 합성하려면 다음 명령을 실행합니다.

cdk synth

이 명령에 대한 자세한 내용은 AWS CDK 설명서의 cdk 합성을 참조하세요.

AWS DevOps, DevOps 엔지니어

리소스를 배포합니다.

리소스를 배포하려면 다음 명령을 실행합니다.

cdk deploy --require-approval never
참고

--require-approval never 플래그는 CDK가 모든 변경 사항을 자동으로 승인하고 실행함을 의미합니다. 여기에는 CDK가 일반적으로 수동 검토가 필요한 것으로 플래그를 지정하는 변경 사항(예: IAM 정책 변경 또는 리소스 제거)이 포함됩니다. 프로덕션 환경에서 --require-approval never 플래그를 사용하기 전에 CDK 코드 및 CI/CD 파이프라인이 잘 테스트되고 안전한지 확인합니다.

AWS DevOps, DevOps 엔지니어
작업설명필요한 기술

GitHub에서 필요한 보안 암호를 생성합니다.

GitHub Actions 워크플로가 리포지토리 코드에 민감한 정보를 노출하지 않고 AWS 리소스에 안전하게 액세스할 수 있도록 하려면 보안 암호를 생성합니다. GitHub에서 ROLE_TO_ASSUME, CodeGuruReviewArtifactBucketName및에 대한 보안 암호를 생성하려면 GitHub 작업 설명서의 리포지토리에 대한 보안 암호 생성의 지침을 AWS_ACCOUNT_ID따릅니다.

변수에 대한 자세한 내용은 다음과 같습니다.

  • AWS_ACCOUNT_ID - 파이프라인이 실행되는 AWS 계정 ID입니다.

  • CodeGuruReviewArtifactBucketName - CodeGuru Reviewer 아티팩트가 저장되는 S3 버킷의 이름입니다. 이 패턴은 버킷 이름를 사용합니다codeguru-reviewer-build-artifacts-<ACCOUNT_ID>-<REGION>.

  • AWS_REGION - 리소스가 AWS 리전 있는 위치입니다.

  • ROLE_TO_ASSUME - 파이프라인이 수임하는 IAM 역할의 이름입니다. 이 패턴은 역할 이름를 사용합니다githubActionsDeployRole.

AWS DevOps, DevOps 엔지니어

GitHub 개인 액세스 토큰을 생성합니다.

GitHub 작업 워크플로가 GitHub를 인증하고 상호 작용할 수 있는 안전한 방법을 설정하려면 다음을 수행합니다.

  1. 리포지토리에 대한 읽기 및 쓰기 액세스 권한이 있는 GitHub 개인 액세스 토큰을 생성하려면 GitHub 설명서의 개인 액세스 토큰 관리의 지침을 따르세요.

  2. 이 토큰을 GitHub 작업의 리포지토리 보안 암호로 저장하려면 GitHub 작업 설명서의 리포지토리 보안 암호 생성의 지침을 따르세요.

AWS DevOps, DevOps 엔지니어

GitHub 보안 암호 및 개인 액세스 토큰 생성

작업설명필요한 기술

GitHub에서 필요한 보안 암호를 생성합니다.

GitHub Actions 워크플로가 리포지토리 코드에 민감한 정보를 노출하지 않고 AWS 리소스에 안전하게 액세스할 수 있도록 하려면 보안 암호를 생성합니다. GitHub에서 ROLE_TO_ASSUME, CodeGuruReviewArtifactBucketName및에 대한 보안 암호를 생성하려면 GitHub 작업 설명서의 리포지토리에 대한 보안 암호 생성의 지침을 AWS_ACCOUNT_ID따릅니다.

변수에 대한 자세한 내용은 다음과 같습니다.

  • AWS_ACCOUNT_ID - 파이프라인이 실행되는 AWS 계정 ID입니다.

  • CodeGuruReviewArtifactBucketName - CodeGuru Reviewer 아티팩트가 저장되는 S3 버킷의 이름입니다. 이 패턴은 버킷 이름를 사용합니다codeguru-reviewer-build-artifacts-<ACCOUNT_ID>-<REGION>.

  • AWS_REGION - 리소스가 AWS 리전 있는 위치입니다.

  • ROLE_TO_ASSUME - 파이프라인이 수임하는 IAM 역할의 이름입니다. 이 패턴은 역할 이름를 사용합니다githubActionsDeployRole.

AWS DevOps, DevOps 엔지니어

GitHub 개인 액세스 토큰을 생성합니다.

GitHub 작업 워크플로가 GitHub를 인증하고 상호 작용할 수 있는 안전한 방법을 설정하려면 다음을 수행합니다.

  1. 리포지토리에 대한 읽기 및 쓰기 액세스 권한이 있는 GitHub 개인 액세스 토큰을 생성하려면 GitHub 설명서의 개인 액세스 토큰 관리의 지침을 따르세요.

  2. 이 토큰을 GitHub 작업의 리포지토리 보안 암호로 저장하려면 GitHub 작업 설명서의 리포지토리 보안 암호 생성의 지침을 따르세요.

AWS DevOps, DevOps 엔지니어
작업설명필요한 기술

리소스를 정리하십시오.

AWS CDK Python 앱을 정리하려면 다음 명령을 실행합니다.

cdk destroy --all
DevOps 엔지니어

정리

작업설명필요한 기술

리소스를 정리하십시오.

AWS CDK Python 앱을 정리하려면 다음 명령을 실행합니다.

cdk destroy --all
DevOps 엔지니어

문제 해결

문제Solution

대시보드 조사 결과에 대한 링크를 표시합니다.

CI/CD 파이프라인 중에 조사 결과를 인쇄할 수 있는 방법은 없습니다. 대신이 패턴은 GitHub 작업을 대체 방법으로 사용하여 결과를 처리하고 표시합니다.

관련 리소스

AWS resources

GitHub 설명서

프라이버시사이트 이용 약관쿠키 기본 설정
© 2025, Amazon Web Services, Inc. 또는 계열사. All rights reserved.