Amazon ECS Express Mode 서비스 업데이트
Amazon ECS Express Mode 서비스 업데이트
Express Mode 서비스는 네트워킹, 로드 밸런싱, Application Auto Scaling에 대한 구성 가능한 옵션을 제공하고 이 서비스 전반에 걸친 변경을 오케스트레이션하여 서비스 업데이트 프로세스를 단순화합니다. 이 글에서는 Express Mode 서비스를 업데이트하는 방법을 알아봅니다.
출처: 문서
본문
Express Mode 서비스는 네트워킹, 로드 밸런싱, Application Auto Scaling에 대한 구성 가능한 옵션을 제공하고 이 서비스들 간의 변경을 오케스트레이션하여 서비스 업데이트 프로세스를 단순화합니다. Express Mode 서비스를 업데이트하여 컨테이너 이미지를 수정하고, 리소스 할당을 조정하거나 구성 설정을 변경할 수 있어요. 업데이트는 가용성을 유지하기 위해 알람 기반 롤백(alarm based rollback)이 포함된 카나리아 배포(canary deployments)로 배포됩니다.
배포 동작 (Deployment behavior)
Express Mode 서비스는 기본적으로 카나리아 배포를 사용하여 안전한 업데이트와 빠른 롤백을 보장합니다:
- 변경 사항과 함께 새 환경이 생성되고 태스크가 배포됩니다.
- 트래픽의 5%가 새 환경으로 이동됩니다.
- 3분 이내에 두 개의 데이터 포인트에서 4xx와 5xx 오류 비율의 합이 1보다 크면 알람 기반 롤백(Alarm Based Rollbacks)이 트리거됩니다.
- 상태 확인(health check)이 새 태스크가 정상인지 확인합니다.
- 3분의 베이크 타임(bake time) 후, 트래픽의 100%가 새 환경으로 이동됩니다.
- 모니터링을 위한 3분의 베이크 타임 후, 이전 태스크가 점진적으로 중지되고 교체됩니다.
자세한 내용은 Amazon ECS 카나리아 배포 문서를 참고하세요.
절차 (Procedure)
- 콘솔을 https://console.aws.amazon.com/ecs/v2 에서 엽니다.
- 탐색 창에서 Clusters를 선택합니다.
- Clusters 페이지에서 Express Mode 서비스가 포함된 클러스터의 이름을 선택합니다.
- 클러스터 세부 정보 페이지에서 Services 탭을 선택합니다.
- Express Mode 서비스를 보도록 필터를 구성합니다. Filter resource management type에서
ECS를 선택합니다. Express Mode 서비스는 이름 옆에 Express 배지가 있습니다. - Configuration 아래에서:
- Image URI에 애플리케이션에 사용할 이미지의 URI를 입력합니다. Amazon ECR 이미지를 탐색하려면 Browse ECR images를 선택하고 다음을 수행합니다:
- Private repository에서 Amazon ECR 프라이빗 저장소를 선택합니다.
- Image에서 이미지를 선택합니다. Select image by에서 이미지를 식별하는 방법을 선택합니다:
- AWS는 Image digest를 선택할 것을 권장합니다.
- 태그를 사용하려면 Image tag를 선택한 다음 태그를 선택합니다.
- 프라이빗 레지스트리를 사용하려면 Private registry를 선택합니다. 그런 다음 Secrets Manager ARN or name에 사전 요구 사항에서 만든 Secrets Manager ARN을 입력합니다.
- Task execution role에서 역할을 선택하거나 새 역할을 만들어 새로 고칩니다. 추가 권한이 필요하면 태스크 실행 역할을 업데이트할 수 있어요.
- Image URI에 애플리케이션에 사용할 이미지의 URI를 입력합니다. Amazon ECR 이미지를 탐색하려면 Browse ECR images를 선택하고 다음을 수행합니다:
- Additional configurations에서 서비스를 사용자 지정합니다.
- Container 아래에서:
- Container port에 애플리케이션이 수신하는 포트를 업데이트합니다(기본값은 80).
- Health check path에 상태 확인 경로(예:
/health)를 업데이트합니다. - Environment variables 아래에서 애플리케이션에 필요한 환경 변수의 키-값 쌍을 추가합니다:
- Key에 환경 변수 이름을 입력합니다.
- Value type에서
Environment variable또는Secret을 선택합니다. - Value or value from에 값 또는 참조를 입력합니다.
- Add environment variable을 선택하여 필요에 따라 변수를 더 추가합니다.
- Command에 Docker
CMD지시문을 재정의하는 사용자 지정 명령을 선택적으로 입력합니다. - Task role에 컨테이너에서 실행되는 애플리케이션에 권한을 부여하는 IAM 역할을 추가합니다. 이렇게 하면 애플리케이션이 AWS 서비스에 API 호출을 할 수 있어요.
- Compute 아래에서:
- CPU에 태스크의 vCPU 할당(예: 1 vCPU)을 업데이트합니다.
- Memory에 태스크의 메모리 할당(예: 2 GB)을 업데이트합니다.
- CPU architecture에서
X86_64또는ARM64를 선택합니다. AWS Graviton 기반 컴퓨트에서 태스크를 실행하려면ARM64를 선택하세요. CPU 아키텍처를 변경하면 새 배포가 시작되어 실행 중인 태스크를 교체합니다.
- Auto Scaling 아래에서:
- ECS service metric에서 스케일링할 지표(예:
ECS Service Average Memory Utilization또는Request count per target)를 선택합니다. - Target value에 스케일링 대상(예:
60또는1000)을 입력합니다. - Minimum number of tasks와 Maximum number of tasks에서 스케일링 제한을 업데이트합니다.
- ECS service metric에서 스케일링할 지표(예:
- Logs 아래에서:
- Amazon CloudWatch log group에 애플리케이션 로그의 로그 그룹 이름을 업데이트합니다. 참고: 이렇게 해도 기존 로그는 이동되지 않으며, 새 서비스 개정에서부터 로그가 기록되기 시작합니다.
- Amazon CloudWatch log stream prefix에 로그 스트림의 새 접두사를 입력합니다.
- Container 아래에서:
- Update를 선택하여 Express Mode 서비스를 업데이트합니다.
사용자 지정 태스크 정의로 업데이트 (Updating with a custom task definition)
taskDefinitionArn 파라미터를 지정하여 사용자 지정 태스크 정의로 Express Mode 서비스를 업데이트할 수 있습니다. Express Mode는 태스크 정의를 있는 그대로 사용하고 나머지 인프라 관리를 계속합니다.
이후 업데이트에서 다음 중 하나를 수행할 수 있습니다:
- 태스크 정의의 새 개정을 만들고
taskDefinitionArn을 업데이트합니다. Express Mode는 다음 서비스 배포에 새 개정을 사용합니다. - Express Mode 파라미터를 직접 업데이트합니다:
- 태스크 정의와 관련 없는 파라미터(예:
healthCheckPath,networkConfiguration,scalingTarget)의 경우 Express Mode는 태스크 정의를 수정하지 않고 변경 사항을 적용합니다. - 태스크 정의 관련 파라미터(예:
primaryContainer를 사용한 이미지, 또는cpu/memory)의 경우 Express Mode는 다른 태스크 수준 구성을 유지하면서 변경 사항이 포함된 새 관리형 태스크 정의를 만듭니다.
- 태스크 정의와 관련 없는 파라미터(예:
사용자 지정 태스크 정의로 업데이트 (Amazon ECS 콘솔)
- Amazon ECS 콘솔을 열고 Express Mode 서비스로 이동합니다.
- Update service 옆의 드롭다운 화살표를 선택한 다음 Update with custom task definition을 선택합니다.
- Task definition family에서 기존 태스크 정의 패밀리를 선택합니다. 새 태스크 정의를 만들려면 Task definitions 링크를 선택합니다.
- Task definition revision에서 사용할 개정을 선택하거나 비워 두어 최신 개정을 사용합니다.
- (선택 사항) Additional configurations를 확장하여 상태 확인 경로, 네트워킹 또는 오토 스케일링 설정을 업데이트합니다.
- Update를 선택합니다.
다음 AWS CLI 명령은 사용자 지정 태스크 정의로 Express Mode 서비스를 업데이트합니다:
aws ecs update-express-gateway-service \
--service-arn arn:aws:ecs:us-west-2:123456789012:service/default/my-service \
--task-definition-arn arn:aws:ecs:us-west-2:123456789012:task-definition/my-td:4
참고: CloudFormation을 사용하면서 Express Mode 서비스에
taskDefinitionArn을 처음 추가한다면 먼저 스택을 한 번 재배포하세요. 이렇게 하면 롤백 호환성이 보장됩니다.
더 알아보기 (Learn more)
- Express Mode 카나리아 배포 및 Express Mode 소개에 대한 자세한 내용은 AWS 개발자 가이드의 관련 문서를 참고하세요.