기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
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 구문
을 사용합니다.
제한 사항
Amazon CodeGuru Profiler는 모든 Java 가상 머신(JVM) 언어(예: Scala 및 Kotlin)와 런타임 및 Python 3.6 이상으로 작성된 애플리케이션을 지원합니다.
Amazon CodeGuru Reviewer는 Bitbucket, GitHub, GitHub Enterprise Cloud 및 GitHub Enterprise Server 소스 공급자의 Java 및 Python 코드 리포지토리와의 연결을 지원합니다. AWS CodeCommit GitHub GitHub GitHub 또한 Amazon Simple Storage Service(Amazon S3) 리포지토리는 GitHub Actions를 통해서만 지원됩니다.
지속적 통합 및 지속적 배포(CI/CD) 파이프라인 중에 결과를 인쇄하는 자동화된 방법은 없습니다. 대신이 패턴은 GitHub 작업을 대체 방법으로 사용하여 결과를 처리하고 표시합니다.
일부 AWS 서비스 는 전혀 사용할 수 없습니다 AWS 리전. 리전 가용성은 리전별 AWS 서비스를
참조하세요. 특정 엔드포인트는 서비스 엔드포인트 및 할당량을 참조하고 서비스에 대한 링크를 선택합니다.
아키텍처
다음 다이어그램은이 솔루션의 아키텍처를 보여줍니다.

다이어그램에 표시된 것처럼 개발자가 검토를 위해 풀 요청(PR)을 생성하면 GitHub 작업은 다음 단계를 트리거합니다.
IAM 역할 가정 - 파이프라인은 GitHub 보안 암호에 지정된 IAM 역할을 사용하여 배포 작업을 수행합니다.
코드 분석
CodeGuru Reviewer는 Amazon S3 버킷에 저장된 코드를 분석합니다. 결함을 식별하고 수정 및 최적화에 대한 권장 사항을 제공합니다.
CodeGuru Security는 정책 위반 및 취약성을 검사합니다.
조사 결과 검토
파이프라인은 콘솔 출력에서 조사 결과 대시보드에 대한 링크를 인쇄합니다.
중요한 결과가 감지되면 파이프라인이 즉시 실패합니다.
심각도가 높거나 정상이거나 낮은 결과의 경우 파이프라인은 다음 단계로 계속됩니다.
PR 승인
검토자는 PR을 수동으로 승인해야 합니다.
PR이 거부되면 파이프라인이 실패하고 추가 배포 단계를 중지합니다.
CDK 배포 - PR 승인 시 CDK 배포 프로세스가 시작됩니다. 다음 AWS 서비스 및 리소스를 설정합니다.
CodeGuru Profiler
AWS Lambda 함수
Amazon Simple Queue Service(Amazon SQS) 대기열
프로파일링 데이터 생성 - 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
모범 사례
GitHub Actions 워크플로에서를 사용할 때는 다음을 포함하여 IAM의 보안 모범 사례를 따르세요. AWS 서비스
리포지토리 코드에 자격 증명을 저장하지 마세요.
IAM 역할을 수임하여 임시 자격 증명을 수신하고 가능한 경우 임시 자격 증명을 사용합니다.
GitHub 작업 워크플로에 사용되는 IAM 역할에 최소 권한을 부여합니다. GitHub 작업 워크플로에서 작업을 수행하는 데 필요한 권한만 부여합니다.
GitHub 작업 워크플로에 사용되는 IAM 역할의 활동을 모니터링합니다.
사용하는 장기 자격 증명을 주기적으로 교체합니다.
에픽
작업 | 설명 | 필요한 기술 |
---|---|---|
AWS 자격 증명을 설정합니다. | 스택을 배포하는 AWS 계정 및 AWS 리전 를 정의하는 변수를 내보내려면 다음 명령을 실행합니다.
의 AWS 자격 증명은 환경 변수를 통해 AWS CDK 제공됩니다. | AWS DevOps, DevOps 엔지니어 |
리포지토리를 복제합니다. | 로컬 시스템에서 리포지토리를 복제하려면 다음 명령을 실행합니다.
| AWS DevOps, DevOps 엔지니어 |
CDK 도구 키트를 설치합니다. | CDK 도구 키트가 설치되었는지 확인하고 버전을 확인하려면 다음 명령을 실행합니다.
CDK Toolkit 버전이 2.27.0 이전인 경우 다음 명령을 입력하여 버전 2.27.0으로 업데이트합니다.
CDK Toolkit이 설치되지 않은 경우 다음 명령을 실행하여 설치합니다.
| AWS DevOps, DevOps 엔지니어 |
필요한 종속 항목을 설치합니다. | 필요한 프로젝트 종속성을 설치하려면 다음 명령을 실행합니다.
| AWS DevOps, DevOps 엔지니어 |
CDK 환경을 부트스트랩합니다. | AWS CDK 환경을 부트스트랩하려면 다음 명령을 실행합니다.
환경을 성공적으로 부트스트랩한 후에는 다음 출력이 표시되어야 합니다.
| AWS DevOps, DevOps 엔지니어 |
작업 | 설명 | 필요한 기술 |
---|---|---|
AWS CDK 앱을 동기화합니다. | AWS CDK 앱을 합성하려면 다음 명령을 실행합니다.
이 명령에 대한 자세한 내용은 AWS CDK 설명서의 cdk 합성을 참조하세요. | AWS DevOps, DevOps 엔지니어 |
리소스를 배포합니다. | 리소스를 배포하려면 다음 명령을 실행합니다.
참고
| AWS DevOps, DevOps 엔지니어 |
작업 | 설명 | 필요한 기술 |
---|---|---|
GitHub에서 필요한 보안 암호를 생성합니다. | GitHub Actions 워크플로가 리포지토리 코드에 민감한 정보를 노출하지 않고 AWS 리소스에 안전하게 액세스할 수 있도록 하려면 보안 암호를 생성합니다. GitHub에서 변수에 대한 자세한 내용은 다음과 같습니다.
| AWS DevOps, DevOps 엔지니어 |
GitHub 개인 액세스 토큰을 생성합니다. | GitHub 작업 워크플로가 GitHub를 인증하고 상호 작용할 수 있는 안전한 방법을 설정하려면 다음을 수행합니다.
| AWS DevOps, DevOps 엔지니어 |
작업 | 설명 | 필요한 기술 |
---|---|---|
리소스를 정리하십시오. | AWS CDK Python 앱을 정리하려면 다음 명령을 실행합니다.
| DevOps 엔지니어 |
문제 해결
문제 | Solution |
---|---|
대시보드 조사 결과에 대한 링크를 표시합니다. | CI/CD 파이프라인 중에 조사 결과를 인쇄할 수 있는 방법은 없습니다. 대신이 패턴은 GitHub 작업을 대체 방법으로 사용하여 결과를 처리하고 표시합니다. |
관련 리소스
AWS resources
GitHub 설명서