AWS App Runner 가용성 변경 - AWS App Runner

AWS App Runner 는 2026년 4월 30일부터 신규 고객에게 더 이상 공개되지 않습니다. App Runner를 사용하려면 해당 날짜 이전에 가입하세요. 기존 고객은 정상적으로 서비스를 계속 이용할 수 있습니다. 자세한 내용은 AWS App Runner 가용성 변경을 참조하세요.

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

AWS App Runner 가용성 변경

신중한 고려 끝에 2026년 4월 30일부터 신규 고객을 AWS App Runner 응대하기로 결정했습니다. 기존 AWS App Runner 고객은 새로운 리소스 및 서비스 생성을 포함하여 서비스를 정상적으로 계속 사용할 수 있습니다. AWS 는 보안 및 가용성에 계속 투자 AWS App Runner하지만 새로운 기능을 도입할 계획은 없습니다.

마이그레이션할 때 Amazon Elastic Container Service(Amazon ECS) Express 모드를 탐색하는 것이 좋습니다 AWS App Runner. Amazon ECS Express 모드는 App Runner의 운영 단순성을 유지하면서 더 광범위한 Amazon ECS 기능 세트에 대한 액세스를 제공합니다. 단일 API 호출을 통해 컨테이너 이미지와 두 개의 IAM 역할을 제공하고 Amazon ECS는 Fargate의 ECS 서비스, Application Load Balancer, Auto Scaling 및 네트워킹을 포함하여 AWS 계정에 전체 애플리케이션 스택을 프로비저닝합니다. Application Load Balancer Amazon ECS Express 모드 사용에 대한 추가 요금은 없습니다. 애플리케이션을 실행하기 위해 생성된 기본 AWS 리소스에 대해서만 비용을 지불합니다.

이 가이드에서는 기존 App Runner 서비스를 ECS Express Mode로 마이그레이션하고 DNS 라우팅을 사용하여 트래픽을 점진적으로 이동하는 방법을 설명합니다.

마이그레이션 개요

이 가이드에서는 DNS 가중치 기반 라우팅과 함께 블루/그린 배포 접근 방식을 사용하여 App Runner에서 ECS Express 모드로 트래픽을 마이그레이션합니다. 두 서비스 모두 마이그레이션 중에 동시에 실행됩니다. Amazon Route 53(또는 DNS 공급자)를 사용하여 App Runner 서비스에서 ECS Express Mode 서비스로 트래픽을 점진적으로 전환합니다. 작은 비율부터 시작하여 시간이 지남에 따라 증가합니다. 이 접근 방식을 사용하면 가동 중지 시간을 최소화하고 문제가 발생할 경우 DNS 가중치를 조정하여 롤백할 수 있습니다.

일반적인 마이그레이션에는 다음 단계가 포함됩니다.

  1. 기존 App Runner 서비스의 구성 검토

  2. 동일한 컨테이너 이미지를 사용하여 ECS Express Mode 서비스 생성

  3. 사용자 지정 도메인을 사용하는 경우 ECS Express Mode 서비스에 대해 동일한 사용자 지정 도메인 구성

  4. DNS 라우팅을 사용하여 App Runner에서 ECS Express 모드로 트래픽 전환

  5. 마이그레이션을 완료하고 더 이상 필요하지 않은 경우 App Runner 서비스를 삭제합니다.

사전 조건

시작하기 전에 다음이 있는지 확인합니다.

  • Amazon ECS, Amazon AWS App Runner Route 53 및 Application Load Balancer 리소스를 생성하고 관리할 수 있는 적절한 AWS Identity and Access Management 권한이 있는 AWS 계정

  • AWS CLI AWS 계정의 자격 증명으로 설치 및 구성됨

  • ECS Express Mode에 배포하기 위해 Amazon Elastic Container Registry(또는 다른 컨테이너 레지스트리)에 저장된 컨테이너 이미지

  • ECS Express Mode에 필요한 IAM 역할: ecsTaskExecutionRole Amazon ECS 작업 실행ecsInfrastructureRoleForExpressServices ECS Express Mode 인프라 프로비저닝

마이그레이션 중에 기존 사용자 지정 도메인을 보존하려면 다음 사항도 필요합니다.

  • Amazon Route 53 또는 타사 도메인 등록 대행자를 app.example.com사용하여와 같이 제어하는 등록된 도메인 이름

  • 사용자 지정 도메인과 일치하는 AWS Certificate Manager (ACM)의 SSL/TLS 인증서입니다. 리소스를 배포하는 AWS 리전 동일한에서 퍼블릭 ACM 인증서를 요청합니다. App Runner와 Amazon ECS Express 모드 모두 사용자 지정 도메인을 사용하여 HTTPS 액세스를 활성화하려면 ACM 인증서가 필요합니다.

시작하기 전 준비 사항

  • 컨테이너 이미지 요구 사항 - ECS Express Mode는 컨테이너 이미지를 배포합니다. App Runner 서비스가 소스 코드에서 배포된 경우 먼저 컨테이너 이미지를 생성하고 Amazon Elastic Container Registry와 같은 레지스트리로 푸시하는 빌드 단계를 추가합니다. 그런 다음 해당 이미지를 ECS Express Mode에 배포합니다. 소스 기반 배포 마이그레이션에 대한 소스 기반 배포 마이그레이션 자세한 내용은 섹션을 참조하세요.

  • 도메인 동작 - App Runner 서비스가와 같은 사용자 지정 도메인을 이미 사용하는 app.example.com경우 마이그레이션 중에 동일한 호스트 이름을 재사용하고 DNS를 업데이트하여 App Runner와 ECS Express 모드 간에 트래픽을 점진적으로 이동할 수 있습니다.

    App Runner 서비스가 기본 App Runner 서비스 URL만 사용하는 경우 ECS Express Mode 서비스에는 다른 엔드포인트가 있습니다. 이 경우 점진적 트래픽 시프팅에 사용할 수 있는 공유 호스트 이름이 없습니다. ECS Express Mode 서비스를 생성하고 검증한 다음 새 엔드포인트를 사용하도록 클라이언트 또는 DNS를 업데이트해야 합니다.

마이그레이션 연습

다음 다이어그램은 Route 53을 사용하여 App Runner 서비스와 ECS Express Mode 서비스 간에 DNS 레코드를 이동하는 마이그레이션의 작동 방식을 보여줍니다.

두 서비스 간의 점진적 트래픽 이동을 위해 Route 53 가중치 기반 라우팅을 사용하여 App Runner에서 ECS Express 모드로 마이그레이션하는 것을 보여주는 아키텍처 다이어그램입니다.

1단계: 기존 App Runner 구성 검토

App Runner 콘솔에서 기존 서비스를 검토하고 이월하려는 값을 기록해 둡니다. 최소한 다음 사항에 유의하세요.

  • 컨테이너 이미지

  • 애플리케이션 포트

  • 환경 변수

  • 구성된 경우 사용자 지정 도메인 이름

  • 구성된 경우 사용자 지정 도메인과 연결된 ACM 인증서

새 서비스로 전달하려는 다른 런타임 설정을 검토할 수도 있습니다.

사용자 지정 도메인 세부 정보는 섹션을 참조하세요App Runner 서비스의 사용자 지정 도메인 이름 관리.

2단계: ECS Express Mode 서비스 생성

App Runner 서비스에서 사용하는 것과 동일한 컨테이너 이미지를 사용하여 ECS Express Mode 서비스를 생성합니다. AWS Management Console 또는를 사용하여 서비스를 생성할 수 있습니다AWS CLI.

CLI 명령 예제:

aws ecs create-express-gateway-service \ --execution-role-arn arn:aws:iam::123456789012:role/ecsTaskExecutionRole \ --infrastructure-role-arn arn:aws:iam::123456789012:role/ecsInfrastructureRoleForExpressServices \ --primary-container '{ "image": "123456789012.dkr.ecr.us-east-1.amazonaws.com/my-app:latest", "containerPort": 8080, "environment": [{ "name": "ENV_VAR_NAME", "value": "value" }] }' \ --service-name "my-application" \ --health-check-path "/" \ --scaling-target '{"minTaskCount":1,"maxTaskCount":4}' \ --monitor-resources

이미지, 포트, 환경 변수 및 조정 값을 App Runner 서비스의 값으로 바꿉니다.

이 명령은 Fargate의 ECS 서비스, 대상 그룹 및 상태 확인이 포함된 Application Load Balancer, 자동 조정 정책, 보안 그룹 및 네트워킹 구성, 기본 URL을 포함하여 AWS 계정에 전체 애플리케이션 스택을 프로비저닝합니다.

프로비저닝에는 일반적으로 3~5분이 걸립니다. Amazon ECS 콘솔의 리소스 탭에서 진행 상황을 추적할 수 있습니다.

완료되면 콘솔에 표시된 기본 URL을 사용하여 ECS Express Mode 서비스를 테스트합니다. 트래픽 전환을 진행하기 전에 애플리케이션이 올바르게 작동하는지 확인합니다.

3단계: ECS Express 모드에 대한 사용자 지정 도메인 구성

App Runner 서비스가 사용자 지정 도메인을 사용하는 경우 트래픽을 이동하기 전에 ECS Express Mode 서비스에 대해 동일한 사용자 지정 도메인을 구성합니다. 이 단계에서는 도메인에 대한 트래픽을 수락하고 HTTPS에 ACM 인증서를 사용하도록 ECS Express Mode 서비스에 대해 생성된 Application Load Balancer를 구성합니다.

  • Application Load Balancer 리스너 규칙에 사용자 지정 도메인을 호스트 헤더 조건으로 추가합니다. App Runner 서비스와 연결한 것과 동일한 도메인 이름을 사용합니다(예: app.example.com). 이렇게 하면 Application Load Balancer에 도메인에서 ECS Express Mode 대상 그룹으로 트래픽을 라우팅하도록 지시합니다.

  • Application Load Balancer HTTPS 리스너에 SSL 인증서를 추가합니다. 1단계에서 기록한 ACM 인증서를 HTTPS 리스너에 추가합니다.

자세한 지침은 Amazon ECS 개발자 안내서서비스에 사용자 지정 도메인 추가를 참조하세요.

다음 이미지는 Application Load Balancer 리스너 규칙에서 호스트 헤더 조건을 구성하는 예를 보여줍니다.

ECS Express Mode 서비스 엔드포인트 및 사용자 지정 도메인에 대해 구성된 호스트 헤더 조건이 있는 Application Load Balancer 리스너 규칙을 보여주는 콘솔 스크린샷입니다.

4단계: Route 53 가중치 기반 라우팅을 사용하여 트래픽 이동

App Runner 서비스가 이미 사용자 지정 도메인을 사용하는 경우 Route 53 가중치 기반 라우팅을 사용하여 트래픽을 ECS Express Mode 서비스로 점진적으로 이동할 수 있습니다. 가중치 기반 라우팅을 사용하면 동일한 호스트 이름의 트래픽을 여러 엔드포인트로 라우팅할 수 있습니다. 각 엔드포인트는 자체 가중치가 있는 별도의 DNS 레코드로 정의되며 Route 53는 해당 가중치에 따라 요청을 분산합니다.

참고

이 가이드에서는 Route 53를 예로 사용합니다. 다른 DNS 공급자를 사용하는 경우 공급자의 트래픽 관리 기능을 사용하여 동등한 DNS를 변경합니다.

기존 App Runner 레코드를 가중치 기반 레코드로 변환합니다.

  1. Route 53 콘솔을 엽니다.

  2. 호스팅 영역을 선택한 다음 도메인의 호스팅 영역을 선택합니다.

  3. 현재 App Runner를 가리키는 호스트 이름의 기존 레코드(예: app.example.com)를 찾습니다.

  4. 레코드를 편집하고 라우팅 정책을 가중치 적용으로 변경합니다.

  5. 가중치를 로 설정합니다100(이렇게 하면 모든 초기 트래픽이 App Runner로 전달됩니다).

  6. 레코드 ID에와 같은 설명 식별자를 입력합니다app-runner-service.

  7. 변경 사항 저장을 선택합니다.

ECS Express 모드에 대한 가중치 기반 레코드 생성:

  1. 동일한 호스팅 영역에 새 레코드를 생성합니다.

  2. 동일한 레코드 이름을 사용합니다(예: app.example.com).

  3. 동일한 레코드 유형을 사용합니다.

  4. 라우팅 정책을 가중치 적용으로 설정합니다.

  5. 트래픽 라우팅 대상에서 Application 및 Classic Load Balancer에 대한 별칭을 선택합니다.

  6. 드롭다운에서 ECS Express Mode Application Load Balancer를 선택합니다.

  7. 가중치를 로 설정합니다0(무게를 명시적으로 늘릴 때까지 ECS Express Mode로 트래픽 흐름 없음).

  8. 레코드 ID에와 같은 설명 식별자를 입력합니다ecs-express-service.

  9. 레코드 생성을 선택합니다.

트래픽을 점진적으로 전환합니다.

DNS 레코드가 구성되면 App Runner 가중치를 비례적으로 줄이면서 ECS Express Mode 가중치를 늘려 트래픽 이동을 시작합니다. 권장 접근 방식:

  • ECS Express 모드를 10으로 설정/App Runner를 90으로 설정

  • 서비스가 요청을 성공적으로 처리하는지 모니터링하고 검증합니다.

  • 25/75로 증가

  • 50/50으로 증가

  • 75/25로 증가

  • 100/0에 완료

각 단계에서 추가 트래픽을 이동하기 전에 애플리케이션을 테스트합니다. 언제든지 문제가 발생하면 가중치를 이전 값으로 다시 조정하여 롤백합니다.

중요

검증 기간(예: 24~48시간) 동안 App Runner 서비스를 계속 실행하여 DNS 변경 사항이 전역적으로 전파되었는지 확인하고 필요한 경우 롤백 옵션을 제공합니다. 문제가 발생하면 Route 53 가중치를 App Runner로 빠르게 되돌릴 수 있습니다.

5단계: 마이그레이션 완료

ECS Express Mode 서비스가 프로덕션 트래픽을 올바르게 처리하고 검증 기간이 경과했는지 확인한 후 마이그레이션을 완료합니다.

  • Route 53에서 App Runner를 가리키는 가중치 기반 레코드를 제거합니다(또는 가중치를 0으로 설정).

  • App Runner 서비스에서 사용자 지정 도메인 연결을 제거합니다.

App Runner 서비스를 삭제합니다.

aws apprunner delete-service --service-arn your-app-runner-service-arn

또한 더 이상 필요하지 않은 리소스는 모두 제거하는 것이 좋습니다.

  • App Runner에 대한 Route 53 가중치 기반 라우팅 레코드

  • Amazon Elastic Container Registry의 미사용 컨테이너 이미지

  • 더 이상 필요하지 않은 경우 App Runner용으로 특별히 생성된 IAM 역할

참고

서비스가 프로덕션 환경에서 실행 중인 경우 ECS Express Mode 서비스, Application Load Balancer 또는 관련 리소스를 삭제하지 마십시오.

소스 기반 배포 마이그레이션

기존 App Runner 서비스가 컨테이너 이미지가 아닌 소스 코드에서 배포된 경우 ECS Express Mode에 배포하기 전에 컨테이너화 단계를 추가해야 합니다. App Runner와 달리 ECS Express 모드에는 컨테이너 이미지가 필요합니다. 그러나 Amazon ECS Deploy Express Service GitHub Action과 함께 GitHub Actions와 같은 CI/CD 도구를 사용하여 App Runner의 자동 배포 환경을 복제할 수 있습니다. GitHub

마이그레이션 워크플로에는 세 단계가 있습니다.

  1. Dockerfile을 사용하여 컨테이너 이미지 빌드

  2. Amazon Elastic Container Registry와 같은 컨테이너 레지스트리에 이미지 푸시

  3. ECS Express 모드에 이미지 배포

다음 다이어그램은 GitHub 작업을 사용하여이 워크플로가 작동하는 방식을 보여줍니다.

컨테이너 이미지를 빌드하고, Amazon Elastic Container Registry로 푸시하고, ECS Express Mode로 배포하기 위해 GitHub Actions를 사용하여 소스 기반 App Runner 서비스를 ECS Express Mode로 마이그레이션하는 방법을 보여주는 아키텍처 다이어그램입니다.

애플리케이션 컨테이너화

애플리케이션에 아직 Dockerfile이 없는 경우 리포지토리 루트에 생성합니다. Dockerfile은 소스 코드를 컨테이너 이미지로 빌드하고 패키징하기 위한 청사진 역할을 합니다.

리포지토리 구조에는 다음이 포함되어야 합니다.

your-app/ ├── src/ # Application source code ├── Dockerfile # Container build instructions ├── package.json # Dependencies and scripts └── .github/ # GitHub configuration └── workflows/ # GitHub Actions workflows └── deploy.yml # ECS Express Mode deployment workflow

자동 배포를 위한 GitHub 작업 설정

코드 푸시 시 App Runner의 자동 배포를 복제하려면 다음을 사용하여 GitHub 작업을 구성합니다.

GitHub 작업 워크플로 예제

에서 워크플로 파일을 생성합니다.github/workflows/deploy.yml.

name: Build and Deploy to ECS on: push: branches: [ main ] env: AWS_REGION: ${{ vars.AWS_REGION }} AWS_ACCOUNT_ID: ${{ vars.AWS_ACCOUNT_ID }} ECR_REPOSITORY: ${{ vars.ECR_REPOSITORY }} ECS_SERVICE: ${{ vars.ECS_SERVICE }} ECS_CLUSTER: ${{ vars.ECS_CLUSTER }} jobs: deploy: name: Deploy runs-on: ubuntu-latest environment: production permissions: id-token: write contents: read steps: - name: Checkout uses: actions/checkout@v6 - name: Configure AWS credentials uses: aws-actions/configure-aws-credentials@v5 with: aws-region: ${{ env.AWS_REGION }} role-to-assume: arn:aws:iam::${{ env.AWS_ACCOUNT_ID }}:role/github-actions-ecs-role role-session-name: GitHubActionsECSDeployment - name: Login to Amazon ECR id: login-ecr uses: aws-actions/amazon-ecr-login@v2 - name: Get short commit hash run: echo "IMAGE_TAG=${GITHUB_SHA:0:7}" >> $GITHUB_ENV - name: Build, tag, and push image to Amazon ECR id: build-image env: ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} uses: docker/build-push-action@v6 with: context: . push: true tags: ${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:latest,${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }} - name: Deploy to ECS Express Mode uses: aws-actions/amazon-ecs-deploy-express-service@v1 env: ECR_REGISTRY: ${{ steps.login-ecr.outputs.registry }} with: service-name: ${{ env.ECS_SERVICE }} image: ${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:${{ env.IMAGE_TAG }} execution-role-arn: arn:aws:iam::${{ env.AWS_ACCOUNT_ID }}:role/ecsTaskExecutionRole infrastructure-role-arn: arn:aws:iam::${{ env.AWS_ACCOUNT_ID }}:role/ecsInfrastructureRoleForExpressServices cluster: ${{ env.ECS_CLUSTER }} container-port: 8080 environment-variables: | [ {"name": "ENV", "value": "Prod"} ] cpu: '1024' memory: '2048' health-check-path: /health min-task-count: 1 max-task-count: 4 auto-scaling-metric: AVERAGE_CPU auto-scaling-target-value: 70

코드 변경 사항을 기본 브랜치에 푸시하면 GitHub Actions는 새 컨테이너 이미지를 자동으로 빌드하고 Amazon Elastic Container Registry에 푸시한 다음 ECS Express Mode 서비스에 배포합니다. 이렇게 하면 App Runner를 사용한 자동 배포 경험이 복제됩니다.

ECS Express Mode 서비스가 실행되면 마이그레이션 연습의 3~5단계에 따라 사용자 지정 도메인을 구성하고, DNS 라우팅을 사용하여 트래픽을 이동하고, 마이그레이션을 완료합니다.

추가 리소스