AWS CodeCommit
Version control: 시간이 지남에 따라 코드에 발생하는 다양한 변경 사항을 이해하고 롤백 할 수 있는 기능
- AWS CodeCommit은 프라이빗 Git 리포지토리를 호스팅하는 안전하고 확장성이 뛰어난 관리형 소스 제어 서비스이다. GitLab 및 GitHub의 대안이다.
Security
Authentication
Authorization
: IAM 정책을 이용해서 사용자와 특정 리포지토리에 대한 역할 권한 관리
Encryption
Cross-account Access
: SSH 키 또는 자격 증명을 다른 사용자와 공유해서는 안 된다.
- 대신 계정에 IAM 역할을 생성해서 STS 또는 AssumeRoleAPI를 이용하여 CodeCommit 리포지토리에 액세스하도록 한다.
AWS CodePipeline
: 외부 도구에서도 소스나 도커 이미지를 가져올 수 있다.
Troubleshooting
: AWS에서 API를 사용하여 복잡한 인프라를 배포하는 데 사용된다.
CodeBuild
- Source
- Build instructions: buildspec.yml
- CodePipeline은 CodeBuild의 기존 프로젝트 빌드도 불러올 수 있다.
- AWS CodeBuild는 소스 코드를 컴파일하고 테스트를 실행하며 배포 준비가 된 소프트웨어 패키지를 생성하는 완전관리형 CI(지속적 통합) 서비스이다. Jenkins의 대안
- CodeBuild 컨테이너는 실행이 끝나면 삭제된다(성공 또는 실패). 실행 중이더라도 SSH로 연결할 수 없다.
- CodeBuild는 모든 명령을 실행할 수 있으므로 이를 사용하여 static 웹 사이트 구축 및 static 웹 파일을 S3 버킷에 복사하는 등의 명령을 실행할 수 있다.
- VPC에서 빌드 컨테이너를 실행하도록 CodeBuild를 구성하여 데이터베이스, 내부 로드 밸런서 등과 같은 VPC의 프라이빗 리소스에 액세스할 수 있다.
buildspec.yml
- 무조건 코드의 루트에 위치한다.
- env: 환경 변수를 정의할 수 있다.
- phases: codebuild의 역할을 정의한다.
- artifacts: 어떤 파일을 추출하고 S3에 보낼지 정한다.
- cache: 어떤 파일을의 종속성을 S3에 캐시 저장하면 이후의 빌드 속도를 높일 수 있을지 결정한다.
Local Build
: 로그를 넘는 심각한 문제 해결이 필요한 경우, 데스크돕에서 codebuild를 로컬로 실행할 수 있다.
Inside VPC
CodeDeploy
: 애플리케이션을 시간이 지남에 따라 많은 인스턴스에 자동으로 배포한다.
- 이곳의 EC2 인스턴스들은 elastic beanstalk에 의해 관리되지 않는다.
- AWS CodeDeploy는 EC2, Fargate, Lambda 및 온프레미스 서버와 같은 다양한 컴퓨팅 서비스에 대한 소프트웨어 배포를 자동화하는 완전 관리형 배포 서비스이다. 인플레이스 또는 블루/그린 배포와 같이 실행하려는 전략을 정의할 수 있다.
Steps To Make it Work
- EC2 인스턴스와 온프레미스 서버는 CodeDDeploy Agent를 실행해야 한다.
Primary Components
- Application
- Compute Platform
- Deployment Configuration
- Deployment Group
- Deployment Type
- IAM Instance Profile
- Applilcation Revision
- Service Role
- Target Revision
appspec.yml
- files
- hooks
- ValidateService: 인스턴스에 서비스가 올바르게 배포되었는지 확인하는 용도
Deployment Configuration
Configurations
One At A Time
Half At A Time
All At Once
Custom
Failures
In-Place Deployment
Blue-Green Deployment
Deployment to EC2
Deploy to an ASG
In-Place Deployment
Blue-Green Deployment
Redeploy & Rollbacks
- 자동으로 롤백하는 방법(CloudWatch)
- 수동으로 롤백하는 방법
- 롤백을 하면 CodeDeploy는 마지막으로 감지한 성공한 리비전을 새로 배포하는데 이전으로 돌아가진 않는다.(새로운 배포를 할 때 가장 나중에 성공한 배포를 사용한다)
Troubleshooting
- Deployment Error: "InvalidSiignatureException": EC2 인스턴스를 AWS와 동기화된 올바른 시간 서버에 연결되도록 한다.
AWS CodeStar
: 모든 서비스를 그룹화하는 통합 솔루션
AWS CodeArtifact
: 개발자와 CodeBuild가 모두 클라우드 내 CodeArtifact에서 바로 종속성을 검색할 수 있다.
EventBridge Integration
: CodeArtifact 변경사항이 AWS의 다운스트림엣 일부 항목을 트리거
Resource Policy
: 다른 계정이나 해당 계정의 사용자와 역할이 CodeArtifact에 액세스하도록 권한을 부여하려면 리소스 정책을 사용한다.
- 패키지 읽기 권한의 부여는 리소스 정책이 없으면 할 수 없다.
Upstream Repositories
- 리포지토리당 업스트림 리포지토리는 최대 10개를 보유할 수 있다. 즉, 리포지토리 트리를 검색햇 올바른 종속성을 찾을 수 있다.
- 리포지토리를 정의할 때는 외부 연결이라는 것을 가질 수 있고 리포지토리당 하나만 있을 수 있다.
External Connection
Retention
Domain
- Deduplicated Storage
- Fast Copying
- Easy Sharinng Across Repositories and Teams
- Apply Poicy Across Multiple Repositories
Amazon CodeGuru
: 머신러닝 기반의 서비스
- 자동화된 코드 검토
- 애플리케이션 성능 권장 사항
Amazon CodeGuru Profiler
: 애플리케이션이 프로덕션 또는 사전 프로덕션 중일 때 애플리케이션의 런타임을 이해하도록 한다.
- 코드 비효율성을 식별 및 삭제하고 애플리케이션 성능을 향상시킨다.
Agent Configuration
- MaxStackDepth
- MemoryUsageLimitPercent
- MinimumTimeForReportingInMilliseconds
- ReportingIntervallnMilliseconds
- SamplingIntervallnMilliseconds: 샘플을 프로파일링하는 데 사용되는 샘플링 간격으로 이 값을 낮게 설정하면 더 많은 샘플링을 얻게 된다.
AWS Cloud9
: IDE가 클라우드에 있는 경우 인터넷으로 Cloud9에 연결할 수 있기만 하면 세계 어느 곳에서나 프로젝트를 작업할 수 있다.(클라우드 기반 코드 편집기)