

# Amazon ECS 서비스 업데이트
<a name="update-service-console-v2"></a>

서비스를 생성한 후 태스크 수 등의 서비스 파라미터를 업데이트해야 하는 경우가 있습니다.

Amazon ECS 회로 차단기가 사용되는 서비스를 업데이트할 때 Amazon ECS에서는 서비스 배포 및 서비스 개정이 생성됩니다. 이러한 리소스를 통해 서비스 기록에 대한 자세한 내용을 볼 수 있습니다. 자세한 내용은 [Amazon ECS 서비스 배포를 사용하여 서비스 기록 보기](service-deployment.md) 섹션을 참조하세요.

## 사전 조건
<a name="update-service-prerequisites"></a>

서비스를 업데이트하기 전에 배포 유형에 대해 변경할 수 있는 서비스 파라미터를 확인합니다. 변경 가능한 파라미터의 전체 목록은 [Amazon ECS 서비스 파라미터 업데이트](update-service-parameters.md) 섹션을 참조하세요.

## 절차
<a name="update-service-procedure"></a>

------
#### [ Console ]

1. [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2)에서 콘솔을 엽니다.

1. **클러스터(Clusters)** 페이지에서 클러스터를 선택합니다.

1. 클러스터 세부 정보 페이지의 **서비스** 섹션에서 서비스 옆의 확인란을 선택하고 **업데이트**를 선택합니다.

1. 서비스에서 새 배포를 시작하도록 하려면 **Force new deployment**(새 배포 적용)를 선택합니다.

1. **작업 정의**에서 사용할 작업 정의 패밀리 및 개정을 선택합니다.
**중요**  
콘솔은 선택한 작업 정의 패밀리 및 개정이 정의된 컴퓨팅 구성과 호환되는지 검증합니다. 경고 메시지가 나타나면 작업 정의 호환성과 컴퓨팅 구성이 모두 선택되어 있는지 확인합니다.

1. **복제본(Replica)**을 선택하는 경우, **원하는 태스크(Desired tasks)**에 서비스에서 시작하고 유지할 태스크 개수를 입력합니다.

1. **복제본**을 선택한 경우 Amazon ECS에서 가용 영역 전체의 태스크 분산이 모니터링되고 불균형이 있으면 재분산되도록 하려면 **가용 영역 서비스 리밸런싱**에서 **가용 영역 서비스 리밸런싱**을 선택합니다.

1. **최소 실행 작업(Min running tasks)**의 경우, 배포 시 `RUNNING` 상태를 유지해야 하는 서비스 내 작업 수에 대한 하한을 원하는 작업 수의 백분율(가장 가까운 정수로 올림)로 입력합니다. 자세한 내용은 [배포 구성](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service_definition_parameters.html#sd-deploymentconfiguration)을 참조하세요.

1. **최대 실행 작업(Max running tasks)**의 경우, 배포 시 `RUNNING` 또는 `PENDING` 상태가 허용되는 서비스 내 작업 수에 대한 상한을 원하는 작업 수의 백분율(가장 가까운 정수로 내림)로 입력합니다.

1. 서비스에 대한 태스크 배포 방법을 구성하려면 **배포 옵션**을 확장한 후 옵션을 구성하세요.

   1. **배포 컨트롤러 유형**에서 서비스 배포 컨트롤러를 지정하세요. Amazon ECS 콘솔은 `ECS`와 같은 컨트롤러 유형을 지원합니다.

   1. **배포 전략**에서 Amazon ECS가 새 버전의 서비스를 배포하는 데 사용하는 전략을 선택하세요.

   1. **배포 전략**의 선택 항목에 따라 다음을 수행하세요.    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/ko_kr/AmazonECS/latest/developerguide/update-service-console-v2.html)

   1. 수명 주기 단계에서 Lambda 함수를 실행하려면 **배포 수명 주기 후크** 아래 각 고유한 Lambda 함수에 대해 다음을 수행하세요.

      1. **추가**를 선택합니다.

         실행하려는 모든 고유 함수에 대해 반복하세요.

      1. **Lambda 함수**에서 함수 이름을 입력하세요.

      1. **역할**에서 블루/그린 권한이 있는 사전 요구 사항에서 생성한 역할을 선택하세요.

         자세한 내용은 [Amazon ECS 블루/그린 배포에서 Lambda 함수에 필요한 권한](blue-green-permissions.md) 섹션을 참조하세요.

      1. **수명 주기 단계**에서 Lambda 함수가 실행되는 단계를 선택하세요.

      1.  (선택 사항) **후크 세부 정보**에 후크에 대한 정보를 제공하는 키 값 페어를 입력하세요.

1. Amazon ECS에서 배포 오류를 탐지 및 처리하는 방법을 구성하려면 **배포 오류 탐지(Deployment failure detection)**를 펼친 다음, 옵션을 선택합니다.

   1. 작업을 시작할 수 없을 때 배포를 중지하려면 **Use the Amazon ECS deployment circuit breaker**(Amazon ECS 배포 회로 차단기 사용)를 선택합니다.

      배포 회로 차단기가 배포를 실패한 상태로 설정했을 때 소프트웨어가 마지막으로 완료한 배포로 자동 롤백하도록 하려면 **실패 시 롤백**을 선택합니다.

   1. 애플리케이션 지표를 기반으로 배포를 중지하려면 **CloudWatch 경보 사용**을 선택합니다. 그런 다음, **CloudWatch 경보 이름**에서 경보를 선택합니다. 새 경보를 생성하려면 CloudWatch 콘솔을 이동합니다.

      CloudWatch 경보가 배포를 실패한 상태로 설정할 때 소프트웨어가 마지막으로 완료한 배포 상태로 자동 롤백하도록 하려면 **실패 시 롤백**을 선택합니다.

1. 컴퓨팅 옵션을 변경하려면 **컴퓨팅 구성**을 확장하고 다음을 수행합니다.

   1. AWS Fargate에 대한 서비스에서 **플랫폼 버전(Platform version)**에 새로운 버전을 선택합니다.

   1. 용량 공급자 전략을 사용하는 서비스의 경우 **용량 공급자 전략**에서 다음을 수행합니다.
      + 용량 공급자를 추가하려면 **더 추가**를 선택합니다. 그런 다음 **용량 공급자**에서 용량 공급자를 선택합니다.
      + 용량 공급자를 제거하려면 용량 공급자 오른쪽의 **제거**를 선택합니다.

      Auto Scaling 그룹 공급자를 사용하는 서비스는 Fargate 용량 공급자를 사용하도록 업데이트할 수 없습니다. Fargate 용량 공급자를 사용하는 서비스는 Auto Scaling 그룹 공급자를 사용하도록 업데이트할 수 없습니다.

1. (선택 사항) 서비스 오토 스케일링을 구성하려면 **서비스 오토 스케일링**을 확장한 후에 다음 파라미터를 지정합니다.트래픽 흐름에서 과거 로드 데이터를 살펴보는 예측 오토 스케일링을 사용하려면 서비스를 생성한 다음 예측 오토 스케일링을 구성합니다. 자세한 내용은 [과거 패턴을 사용하여 예측 규모 조정으로 Amazon ECS 서비스 규모 조정](predictive-auto-scaling.md) 섹션을 참조하세요.

   1. 서비스 Auto Scaling을 사용하려면 **서비스 Auto Scaling(Service auto scaling)**을 선택합니다.

   1. **작업의 최소 개수**에 서비스 Auto Scaling에서 사용할 작업 수의 하한을 입력합니다. 바람직한 수는 이 숫자 이내여야 합니다.

   1. **작업의 최대 개수**에 서비스 Auto Scaling에서 사용할 작업 수의 상한을 입력합니다. 바람직한 수는 이 숫자 이내여야 합니다.

   1. 정책 유형을 선택합니다. **규모 조정 정책 유형**에서 다음 옵션 중 하나를 선택합니다.    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/ko_kr/AmazonECS/latest/developerguide/update-service-console-v2.html)

1. (선택 사항) Service Connect를 사용하려면 **Turn on Service Connect**(Service Connect 켜기)를 선택하고 다음을 지정합니다.

   1. **Service Connect configuration**(Service Connect 구성)에서 클라이언트 모드를 지정합니다.
      + 서비스에서 네임스페이스의 다른 서비스에만 연결하면 되는 네트워크 클라이언트 애플리케이션을 실행하는 경우 **클라이언트 측만**을 선택합니다.
      + 서비스가 네트워크 또는 웹 서비스 애플리케이션을 실행하고 이 서비스에 대한 엔드포인트를 제공해야 하며, 네임스페이스의 다른 서비스에 연결해야 하는 경우 **Client and server**(클라이언트 및 서버)를 선택합니다.

   1. 기본 클러스터 네임스페이스가 아닌 네임스페이스를 사용하려면 **Namespace**(네임스페이스)에서 서비스 네임스페이스를 선택합니다. 이는 AWS 계정의 동일한 AWS 리전에서 별도로 생성된 네임스페이스 또는 AWS Resource Access Manager(AWS RAM)를 사용하여 계정과 공유되는 동일한 리전의 네임스페이스일 수 있습니다. 공유 AWS Cloud Map 네임스페이스에 대한 자세한 내용은 *AWS Cloud Map 개발자 안내서*의 [Cross-account AWS Cloud Map namespace sharing](https://docs.aws.amazon.com/cloud-map/latest/dg/sharing-namespaces.html)을 참조하세요.

   1. (선택 사항) 로그 구성을 지정합니다. **로그 수집 사용**을 선택합니다. 기본 옵션은 CloudWatch Logs로 컨테이너 로그를 전송합니다. 다른 로그 드라이버 옵션은 AWS FireLens를 사용하여 구성됩니다. 자세한 정보는 [Amazon ECS 로그를 AWS 서비스 또는 AWS Partner로 전송](using_firelens.md)을 참조하세요.

      다음은 각 컨테이너 로그 대상에 대한 자세한 설명입니다.
      + **Amazon CloudWatch** - CloudWatch Logs로 컨테이너 로그를 전송하도록 작업을 구성합니다. 사용자를 대신하여 CloudWatch 로그 그룹을 생성하는 기본 로그 드라이버 옵션이 제공됩니다. 다른 로그 그룹 이름을 지정하려면 드라이버 옵션 값을 변경합니다.
      + **Amazon Data Firehose** - Firehose로 컨테이너 로그를 전송하도록 작업을 구성합니다. Firehose 전송 스트림으로 로그를 전송하는 기본 로그 드라이버 옵션이 제공됩니다. 다른 전송 스트림 이름을 지정하려면 드라이버 옵션 값을 변경합니다.
      + **Amazon Kinesis Data Streams** - Kinesis Data Streams로 컨테이너 로그를 전송하도록 작업을 구성합니다. Kinesis Data Streams 스트림으로 로그를 전송하는 기본 로그 드라이버 옵션이 제공됩니다. 다른 스트림 이름을 지정하려면 드라이버 옵션 값을 변경합니다.
      + **Amazon OpenSearch Service** - OpenSearch Service 도메인으로 컨테이너 로그를 전송하도록 작업을 구성합니다. 로그 드라이버 옵션이 제공되어야 합니다.
      + **Amazon S3** - Amazon S3 버킷으로 컨테이너 로그를 전송하도록 작업을 구성합니다. 기본 로그 드라이버 옵션이 제공되지만 유효한 Amazon S3 버킷 이름을 지정해야 합니다.

   1. 액세스 로그를 활성화하려면 다음 단계를 따릅니다.

      1. **액세스 로그 구성**을 확장하세요. **형식**에서 **JSON** 또는 `TEXT`를 선택하세요.

      1. 액세스 로그에 쿼리 파라미터를 포함하려면 **쿼리 파라미터 포함**을 선택하세요.
**참고**  
액세스 로그를 비활성화하려면 **형식**에서 **없음**을 선택하세요.

1. 작업에서 배포 시 구성과 호환되는 데이터 볼륨을 사용하는 경우 **볼륨**을 확장하여 볼륨을 구성할 수 있습니다.

   볼륨 이름과 볼륨 유형은 작업 정의 개정을 생성할 때 구성되며 서비스를 업데이트할 때는 변경할 수 없습니다. 볼륨 이름과 유형을 업데이트하려면 새 작업 정의 개정을 생성하고 새 개정을 사용해 서비스를 업데이트해야 합니다.    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/ko_kr/AmazonECS/latest/developerguide/update-service-console-v2.html)

1. (선택 사항) 서비스를 식별하려면 **태그(Tags)** 섹션을 펼친 다음, 태그를 구성합니다.
   + [태그 추가] **태그 추가**를 선택하고 다음을 수행합니다.
     + **키**에서 키 이름을 입력합니다.
     + **값**에 키 값을 입력합니다.
   + [태그 제거] 태그 옆에 있는 **태그 제거**를 선택합니다.

1. **업데이트**를 선택합니다.

------
#### [ AWS CLI ]
+ `update-service`를 실행합니다. 명령 실행에 대한 자세한 내용은 AWS Command Line Interface Reference의 [update-service](https://docs.aws.amazon.com/cli/latest/reference/ecs/update-service.html)를 참조하세요.

  다음 `update-service` 예제에서는 `my-http-service` 서비스의 원하는 작업 수를 2로 업데이트합니다.

  모든 {{사용자 입력}}을 사용자의 값으로 바꿉니다.

  ```
  aws ecs update-service \
      --cluster {{MyCluster}} \
      --service {{my-http-service}} \
      --desired-count 2
  ```

------

## 다음 단계
<a name="update-service-next-steps"></a>

배포를 추적하고 Amazon ECS 회로 차단기에 사용되는 서비스에 대한 서비스 기록을 봅니다. 자세한 내용은 [Amazon ECS 서비스 배포를 사용하여 서비스 기록 보기](service-deployment.md) 섹션을 참조하세요.