CodeDeploy를 사용하여 재배포 및 배포 롤백 - AWS CodeDeploy

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

CodeDeploy를 사용하여 재배포 및 배포 롤백

CodeDeploy는 이전에 배포된 애플리케이션의 개정 버전을 새 배포로 다시 배포하여 롤백합니다. 이러한 롤백 배포는 기술적으로 이전 배포의 복원된 버전이 아닌 새 배포 ID를 사용하는 새로운 배포입니다.

배포는 자동 또는 수동으로 롤백할 수 있습니다.

자동 롤백

배포에 실패하거나 지정한 모니터링 임계값이 충족될 때 자동으로 롤백하도록 배포 그룹 또는 배포를 구성할 수 있습니다. 이 경우 마지막으로 알려진 정상 버전의 애플리케이션 개정 버전이 배포됩니다. 애플리케이션을 만들거나 배포 그룹을 만들거나 업데이트할 때 자동 롤백을 구성합니다.

새 배포를 만들 때 배포 그룹에 지정된 자동 롤백 구성을 재정의하도록 선택할 수도 있습니다.

참고

배포가 자동으로 롤백될 때마다 Amazon Simple Notification Service를 사용하여 알림을 받을 수 있습니다. 자세한 내용은 섹션을 참조하세요Monitoring Deployments with Amazon SNS Event Notifications

자동 롤백을 구성하는 방법에 대한 자세한 내용은 배포 그룹에 대한 고급 옵션 구성 단원을 참조하세요.

수동 롤백

자동 롤백을 설정하지 않은 경우 이전에 배포된 애플리케이션 개정 버전을 사용하는 새 배포를 만들고 개정 버전을 다시 배포하는 단계에 따라 배포를 수동으로 롤백할 수 있습니다. 이 작업은 애플리케이션이 알 수 없는 상태가 된 경우에 수행할 수 있습니다. 문제 해결에 많은 시간을 소비하는 대신 애플리케이션을 알려진 작업 상태로 다시 배포할 수 있습니다. 자세한 내용은 섹션을 참조하세요CodeDeploy에서 배포 만들기

참고

배포 그룹에서 인스턴스를 제거해도 CodeDeploy는 해당 인스턴스에 이미 설치되어 있을 수 있는 항목을 제거하지 않습니다.

롤백 및 재배포 워크플로

자동 롤백이 시작되거나 재배포 또는 수동 롤백을 수동으로 시작할 때 CodeDeploy는 먼저 각 참여 인스턴스에서 마지막으로 성공적으로 설치된 모든 파일을 제거하려고 시도합니다. CodeDeploy는 정리 파일을 확인하여 이 작업을 수행합니다.

/opt/codedeploy-agent/deployment-root/deployment-instructions/deployment-group-ID-cleanup 파일(Amazon Linux, Ubuntu Server 및 RHEL 인스턴스의 경우)

C:\ProgramData\Amazon\CodeDeploy\deployment-instructions\deployment-group-ID-cleanup 파일(Windows Server 인스턴스의 경우)

존재하는 경우 CodeDeploy 는 새 배포를 시작하기 전에 정리 파일을 사용하여 나열된 모든 파일을 인스턴스에서 제거합니다.

예를 들어, 처음 두 개의 텍스트 파일과 두 개의 스크립트 파일이 이미 Windows Server를 실행하는 Amazon EC2 인스턴스에 배포되었으며, 이 스크립트는 배포 수명 주기 이벤트 동안 두 개의 텍스트 파일을 더 만들었습니다.

c:\temp\a.txt (previously deployed by CodeDeploy) c:\temp\b.txt (previously deployed by CodeDeploy) c:\temp\c.bat (previously deployed by CodeDeploy) c:\temp\d.bat (previously deployed by CodeDeploy) c:\temp\e.txt (previously created by c.bat) c:\temp\f.txt (previously created by d.bat)

정리 파일에는 처음 두 개의 텍스트 파일과 두 개의 스크립트 파일만 나열됩니다.

c:\temp\a.txt c:\temp\b.txt c:\temp\c.bat c:\temp\d.bat

새 배포 전에 CodeDeploy는 처음 두 개의 텍스트 파일과 두 개의 스크립트 파일만 제거하고 마지막 두 개의 텍스트 파일은 그대로 둡니다.

c:\temp\a.txt will be removed c:\temp\b.txt will be removed c:\temp\c.bat will be removed c:\temp\d.bat will be removed c:\temp\e.txt will remain c:\temp\f.txt will remain

이 프로세스의 일부로 CodeDeploy는 수동 또는 자동 롤백 여부에 관계없이 후속 재배포 중에 이전 배포의 스크립트에서 수행한 작업을 되돌리거나 조정하지 않습니다. 예를 들어, c.batd.bat 파일에 e.txtf.txt 파일을 재생성하지 않는 로직이 포함되어 있는 경우 이들이 이미 존재한다면 CodeDeploy가 후속 배포에서 c.batd.bat을(를) 실행할 때마다 e.txtf.txt의 이전 버전이 그대로 남아 있게 됩니다. 새 버전을 생성하기 전에 항상 e.txtf.txt의 이전 버전을 확인하여 삭제하는 로직을 c.batd.bat에 추가할 수 있습니다.

기존 컨텐츠의 롤백 동작

배포 프로세스의 일부로 CodeDeploy 에이전트는 가장 최근 배포에 의해 설치된 모든 파일을 각 인스턴스에서 제거합니다. 이전 배포의 일부가 아닌 파일이 대상 배포 위치에 표시되는 경우 다음 배포 중에 CodeDeploy에서 수행할 작업을 선택할 수 있습니다.

  • 배포 실패 — 오류가 보고되고 배포 상태가 실패로 변경됩니다.

  • 컨텐츠 덮어쓰기 — 애플리케이션 개정 버전의 파일 버전이 인스턴스에 이미 있는 버전을 대체합니다.

  • 콘텐츠 유지 — 대상 위치의 파일이 유지되고 애플리케이션 개정 버전의 버전이 인스턴스에 복사되지 않습니다.

배포를 생성할 때 이 동작을 선택할 수 있습니다. 콘솔에서 배포를 생성하는 경우 EC2/온프레미스 컴퓨팅 플랫폼의 배포 생성(콘솔) 단원을 참조하세요. AWS CLI에서 배포를 생성하는 경우 EC2/온프레미스 컴퓨팅 플랫폼의 배포 생성(CLI) 단원을 참조하세요.

애플리케이션 개정 패키지에 추가하지 않고 다음 배포의 일부로 포함하려는 파일을 보관하도록 선택할 수 있습니다. 예를 들어 배포에 필요하지만 애플리케이션 개정 버전 번들에 추가되지 않은 파일을 인스턴스에 직접 업로드할 수 있습니다. 또는 애플리케이션이 이미 프로덕션 환경에 있지만 CodeDeploy를 사용하여 처음으로 배포하려는 경우 인스턴스에 파일을 업로드할 수 있습니다.

배포 실패로 인해 가장 최근에 성공적으로 배포된 애플리케이션 개정 버전이 다시 배포되는 롤백의 경우 마지막으로 성공한 배포에 대한 콘텐츠 처리 옵션이 롤백 배포에 적용됩니다.

그러나 실패한 배포가 파일을 보존하는 대신 덮어쓰도록 구성된 경우 롤백 중에 예기치 않은 결과가 발생할 수 있습니다. 특히, 보존해야 할 파일이 실패한 배포에 의해 제거될 수 있습니다. 롤백 배포가 실행될 때 파일이 인스턴스에 없습니다.

다음 예제에는 3가지 배포가 있습니다. 실패한 두 번째 배포 중에 덮어쓰여진(삭제된) 모든 파일은 배포 3 중에 애플리케이션 개정 버전 1이 다시 배포될 때 더 이상 사용할 수 없습니다(보존할 수 없음).

배포

애플리케이션 개정 버전

컨텐츠 덮어쓰기 옵션

배포 상태

동작 및 결과

배포 1

애플리케이션 개정 버전 1

RETAIN

성공

CodeDeploy는 이전 배포에서 배포하지 않은 대상 위치에서 파일을 검색합니다. 이러한 파일은 의도적으로 현재 배치의 일부가 될 수 있습니다. 현재 배포 패키지의 일부로 유지 및 기록됩니다.

배포 2

애플리케이션 개정 버전 2

OVERWRITE

실패

배포 프로세스 중에 CodeDeploy는 이전에 성공한 배포의 일부인 모든 파일을 삭제합니다. 여기에는 배치 1 중에 보존된 파일이 포함됩니다.

그러나 무관한 이유로 배포가 실패합니다.

배포 3

애플리케이션 개정 버전 1

RETAIN

배포 또는 배포 그룹에 대해 자동 롤백이 사용되므로 CodeDeploy는 마지막으로 알려진 정상 애플리케이션 개정 버전인 애플리케이션 개정 버전 1을 배포합니다.

그러나 배포 1에서 보존하려는 파일은 배포 2가 실패하기 전에 삭제되었으며 AWS CodeDeploy에서 검색할 수 없습니다. 애플리케이션 개정 버전 1에 필요한 경우 인스턴스에 직접 추가하거나 새 애플리케이션 개정 버전을 생성할 수 있습니다.