CodeCommit AWS와 AWS를 사용하여 여러 AWS CodePipeline 계정에 CI/CD 파이프라인을 배포할 수 있습니다. - AWS 권장 가이드

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

CodeCommit AWS와 AWS를 사용하여 여러 AWS CodePipeline 계정에 CI/CD 파이프라인을 배포할 수 있습니다.

작성자: Kirankumar Chandrashekar(AWS)

환경: PoC 또는 파일럿

기술: DevOps

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

AWS 서비스: AWS CodeCommit, AWS CodePipeline

요약

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

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

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

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

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

사전 조건 및 제한 사항

사전 조건

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

  • AWS Command Line Interface(AWS CLI), 설치구성됨

아키텍처

기술 스택

  • AWS CodeBuild

  • AWS CodeCommit

  • AWS CodePipeline

  • 아마존 EventBridge

  • AWS Identity and Access Management(IAM)

  • AWS KMS

  • AWS Organizations

  • Amazon S3

도구

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

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

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

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

  • AWS Identity and Access Management(IAM) – IAM을 통해 AWS 서비스와 리소스에 대한 액세스를 안전하게 관리할 수 있습니다. 

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

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

에픽

작업설명필요한 기술

CodeCommit 리포지토리 생성.

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

DevOps 엔지니어

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

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

DevOps 엔지니어

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

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

클라우드 관리자

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

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

클라우드 관리자

AWS KMS 키를 생성합니다.

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

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

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

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

클라우드 관리자

S3 버킷을 생성합니다.

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

클라우드 관리자

CodePipeline 스테이지에 필요한 모든 AWS 리소스를 생성합니다.

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

클라우드 관리자

IAM 역할을 생성합니다.

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

클라우드 관리자

에서 CodePipeline 파이프라인을 생성하십시오.

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

클라우드 관리자

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

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

클라우드 관리자

관련 리소스

DevOps AWS 계정에서 리소스 생성

다른 AWS 계정에서 리소스 생성 

기타 리소스