AWS CodeCommit 및 AWS CodePipeline 를 사용하여 여러 AWS 계정에 CI/CD 파이프라인 배포 - AWS 권장 가이드

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

AWS CodeCommit 및 AWS CodePipeline 를 사용하여 여러 AWS 계정에 CI/CD 파이프라인 배포

작성자: Kirankumar Chandrashekar(AWS) 및 Abdal Garuba(AWS)

환경: PoC 또는 파일럿

기술: DevOps

워크로드: 기타 모든 워크로드

AWS 서비스: AWS CodeCommit; AWS CodePipeline

요약

알림: AWS CodeCommit 는 더 이상 신규 고객에게 제공되지 않습니다. 의 기존 고객은 평소와 같이 서비스를 계속 사용할 AWS CodeCommit 수 있습니다. 자세히 알아보기

이 패턴은 DevOps, 개발자, 스테이징 및 프로덕션 워크플로에 대한 별도의 Amazon Web Services() 계정에서 애플리케이션 코드 워크로드에 대한 지속적 통합 및 지속적 전송(CI/CDAWS) 파이프라인을 배포하는 방법을 보여줍니다.

여러 AWS 계정 전략을 사용하여 높은 수준의 리소스 또는 보안 격리를 제공하고, 비용을 최적화하고, 프로덕션 워크플로를 분리할 수 있습니다.

애플리케이션의 코드는 이러한 모든 개별 AWS 계정에서 동일하게 유지되며 DevOps 계정에서 호스팅하는 중앙 AWS CodeCommit 리포지토리에서 유지됩니다. 개발자, 스테이징 및 프로덕션 계정에는 이 CodeCommit 리포지토리에 별도의 Git 브랜치가 있습니다.

예를 들어 코드가 중앙 CodeCommit 리포지토리의 개발자 Git 브랜치에 커밋되면 DevOps 계정 EventBridge 의 Amazon은 리포지토리 변경 사항을 EventBridge 개발자 계정에 알립니다. 개발자 계정에서 AWS CodePipeline 소스 단계가 InProgress 상태가 됩니다. 소스 단계는 중앙 CodeCommit 리포지토리의 개발자 Git 브랜치에서 구성되며 DevOps 계정에 대한 서비스 역할을 CodePipeline 수임합니다.

개발자 브랜치의 CodeCommit 리포지토리 콘텐츠는 Amazon Simple Storage Service(Amazon S3) 버킷의 아티팩트 스토어에 업로드되고 AWS Key Management Service(AWS KMS) 키로 암호화됩니다. 소스 단계의 상태가 Succeeded에서 로 변경되면 CodePipeline코드가 파이프라인 실행의 다음 단계로 전환됩니다.

사전 조건 및 제한 사항

사전 조건 

  • 각 필수 환경(DevOps, 개발자, 스테이징 및 프로덕션)의 기존 AWS 계정. 이러한 계정은 AWS Organizations 에서 호스팅할 수 있습니다.

  • AWS 명령줄 인터페이스(AWS CLI), 설치구성됨.

아키텍처

별도의 AWS 계정에 애플리케이션 코드 워크로드에 대한 CI/CD 파이프라인을 배포하는 워크플로입니다.

기술 스택

  • AWS CodeBuild

  • AWS CodeCommit

  • AWS CodePipeline

  • Amazon EventBridge

  • AWS 자격 증명 및 액세스 관리(IAM)

  • AWS KMS

  • AWS 조직

  • Amazon S3

도구

  • AWS CodeBuild CodeBuild 는 소스 코드를 컴파일하고, 테스트를 실행하고, 배포할 준비가 된 소프트웨어 패키지를 생성하는 완전 관리형 지속적 통합 서비스입니다. 

  • AWS CodeCommit –보안 Git 기반 리포지토리 CodeCommit 를 호스팅하는 완전 관리형 소스 제어 서비스입니다.

  • AWS CodePipeline –빠르고 안정적인 애플리케이션 및 인프라 업데이트를 위해 릴리스 파이프라인을 자동화하는 데 도움이 되는 완전 관리형 연속 전송 서비스 CodePipeline 입니다. 

  • Amazon EventBridge – 애플리케이션을 다양한 소스의 데이터와 연결하기 위한 서버리스 이벤트 버스 서비스 EventBridge 입니다.

  • AWS 자격 증명 및 액세스 관리(IAM) - AWS 서비스 및 리소스에 대한 액세스를 안전하게 관리하는 데 IAM 도움이 됩니다. 

  • AWS KMS - AWS Key Management Service(AWS KMS)를 사용하면 암호화 키를 생성 및 관리하고 다양한 AWS 서비스와 애플리케이션에서 암호화 키의 사용을 제어할 수 있습니다.

  • Amazon S3 – Amazon Simple Storage Service(S3)는 인터넷 스토리지 서비스입니다.

에픽

작업설명필요한 기술

CodeCommit 리포지토리를 생성합니다.

DevOps 계정의 AWS 관리 콘솔에 로그인하고 CodeCommit 콘솔을 엽니다. 리포지토리를 생성하고 개발자, 스테이징 및 프로덕션 AWS 계정에 필요한 모든 Git 브랜치를 설정합니다. 이 스토리와 다른 스토리에 대한 도움이 필요하면 “관련 리소스” 섹션을 참조하십시오.

DevOps 엔지니어

CodeCommit 리포지토리에 대한 액세스 자격 증명을 생성합니다.

IAM 콘솔에서 애플리케이션 개발자가 CodeCommit 리포지토리에서 애플리케이션의 코드 기반을 푸시하고 가져올 수 있도록 액세스 자격 증명을 생성합니다.

DevOps 엔지니어

CodePipeline 서비스 IAM 역할에 대한 역할을 생성합니다.

IAM 콘솔에서 모든 CodePipeline 서비스 IAM 역할이 중앙 CodeCommit 리포지토리에 액세스하는 데 사용할 수 있는 역할을 생성합니다.

클라우드 관리자

다른 AWS 계정에 대한 EventBridge 규칙을 설정합니다.

Amazon EventBridge 콘솔에서 개별 개발자, 스테이징 및 프로덕션 AWS 계정 EventBridge 의 관련 CodeCommit 리포지토리 변경 사항에 대한 알림을 에 보내도록 규칙을 설정합니다.

클라우드 관리자

AWS KMS 키를 생성합니다.

AWS KMS 콘솔에서 개별 개발자, 스테이징 및 프로덕션 AWS 계정 CodePipeline 에서 아티팩트를 암호화하고 해독할 수 있는 KMS 키를 생성합니다.

클라우드 관리자
작업설명필요한 기술

계정에서 DevOps AWS 이벤트를 수신 EventBridge 하도록 설정합니다.

개별 AWS 계정(개발자, 스테이징 또는 프로덕션) 중 하나에 대해 AWS Management Console에 로그인합니다. Amazon EventBridge 콘솔에서 DevOps 계정에서 CodeCommit 리포지토리 변경 이벤트를 수신 EventBridge 하도록 를 설정합니다.

클라우드 관리자

S3 버킷을 생성합니다.

Amazon S3 콘솔에서 CodePipeline 아티팩트를 저장할 S3 버킷을 생성합니다.

클라우드 관리자

CodePipeline 단계에 필요한 모든 AWS 리소스를 생성합니다.

CodePipeline 단계에 필요한 다른 모든 AWS 리소스를 생성합니다. 이러한 리소스는 CI/CD 파이프라인에서 각 AWS 계정의 역할에 따라 달라집니다.

클라우드 관리자

IAM 역할을 생성합니다.

IAM 콘솔에서 CodePipeline 서비스 IAM 역할에 대한 역할을 생성합니다. 이 서비스 역할은 CodeCommit 리포지토리에 액세스하려면 DevOps 계정의 IAM 역할을 수임할 수 있어야 합니다.

클라우드 관리자

에서 파이프라인을 생성합니다 CodePipeline.

CodePipeline 콘솔에서 파이프라인을 생성합니다. 그런 다음 개별 Git 브랜치에 대한 DevOps 계정의 CodeCommit 리포지토리를 가리키는 소스 단계를 생성합니다.

클라우드 관리자

모든 AWS 계정에 대해 단계를 반복합니다.

CI/CD 전략의 일부로 필요한 모든 AWS 계정에 대해 이 단계를 반복합니다.

클라우드 관리자

관련 리소스

계정 DevOps AWS에서 리소스 생성

다른 AWS 계정에 리소스 생성

기타 리소스