JSCODE Logo
블로그후기멘토진
회사명 : JSCODE대표 : 박재성사업자 등록번호 : 244-22-01557통신판매업 : 제 2023-인천미추홀-0381 호
학원 명칭 : 제이에스코드(JSCODE)원격학원학원설립ㆍ운영 등록번호 : 제6063호

서울특별시 구로구 경인로 20가길 11(오류동, 아델리아)

Copyright ⓒ 2025 JSCODE - 최상위 현업 개발자들의 프로그래밍 교육 All rights reserved.

이용약관개인정보처리방침
← 블로그 목록으로 돌아가기

[실습] AWS 대기 명령 services-stable

JSCODE 시니
JSCODE 시니
2026. 04. 09.
author
JSCODE 시니
category
Jenkins CI/CD
createdAt
Apr 9, 2026 12:57 PM
isPublic
isPublic
series
Jenkins를 활용한 CI/CD 입문 (with.AWS)
slug
using-aws-ecs-wait-services-stable-jenkins
type
post
updatedAt

✅ 1. AWS 대기 명령을 사용해야 하는 이유

  • 우리가 실제로 Jenkins 파일을 빌드해보면 몇초 이내에 서비스가 update 되는 것을 확인할 수 있다.
  • 하지만, 실제로 AWS에서는 서비스를 update 한 이후에 실제 프로젝트가 안정적으로 배포되기 위해서는 일정 시간(5분 이내)을 기다려야 한다.
  • 따라서 만약 우리의 Jenkins 파일에서 테스트와 같은 다음 작업이 있는 경우 바로 그 작업으로 넘어가지 않고, 충분히 대기를 시켰다가 AWS의 프로젝트가 안정적으로 배포 되면 다음 단계로 넘어가는 것이 좋다.
  • 그렇다면 어떻게 대기를 시키고, 프로젝트가 안정적으로 배포됐는지 확인할 수 있을까?
 
services-stable — AWS CLI 2.34.21 Command Reference
Use the AWS CLI 2.34.21 to run the ecs wait services-stable command.
services-stable — AWS CLI 2.34.21 Command Reference
https://docs.aws.amazon.com/cli/latest/reference/ecs/wait/services-stable.html#services-stable
notion image
  • 다음 구문을 통하여 AWS에 대기 명령을 내리고, 안정적으로 배포 될 때까지 기다릴 수 있다.
  • 다음 구문을 참고하여 코드를 추가해보자
 
pipeline { // 전역 에이전트를 사용하지 않음으로써 컨테이너 중첩 방지 agent none environment { AWS_DEFAULT_REGION = 'ap-northeast-2' AWS_ECS_CLUSTER = '클러스터명' AWS_ECS_SERVICE_PROD = '서비스명' AWS_ECS_TD_PROD = '테스크정의명' } stages { stage('Deploy to AWS') { agent { docker { image 'amazon/aws-cli' // aws-cli 이미지는 기본적으로 실행 후 바로 종료되므로 엔트리포인트 무력화 reuseNode true args "-u root --entrypoint=''" } } steps { withCredentials([usernamePassword(credentialsId: 'my-aws', passwordVariable: 'AWS_SECRET_ACCESS_KEY', usernameVariable: 'AWS_ACCESS_KEY_ID')]) { sh ''' aws --version yum install jq -y LATEST_TD_REVISION=$(aws ecs register-task-definition --cli-input-json file://aws/task-definition-prod.json | jq '.taskDefinition.revision') echo $LATEST_TD_REVISION aws ecs update-service --cluster $AWS_ECS_CLUSTER --service $AWS_ECS_SERVICE_PROD --task-definition $AWS_ECS_TD_PROD:$LATEST_TD_REVISION aws ecs wait services-stable --cluster $AWS_ECS_CLUSTER --services $AWS_ECS_SERVICE_PROD ''' } } } stage('Build') { agent { docker { image 'mcr.microsoft.com/playwright:v1.39.0-jammy' reuseNode true } } steps { sh ''' echo '빌드 시작..' node --version npm --version npm ci npm run build ''' } } } }
  • 중복되는 값들을 환경 변수값으로 추가하여 수정했으니 이 부분을 참고 할 것
  • 일반적으로 시간은 서버의 환경에 따라 다르지만 4분 정도를 기다린 후 문제가 없으면 다음 단계로 넘어감을 기억하자.
 
 
author
category
Jenkins CI/CD
createdAt
Apr 9, 2026 01:25 PM
isPublic
isPublic
series
Jenkins를 활용한 CI/CD 입문 (with.AWS)
slug
type
series-footer
updatedAt
📎
이 글은 Jenkins를 활용한 CI/CD 입문 (with.AWS) 강의의 수업 자료 중 일부입니다.