

# Amazon ECS 독립 실행형 작업
<a name="standalone-tasks"></a>

일부 작업을 수행한 후 중지하는 애플리케이션(예: 배치 프로세스)이 있는 경우 애플리케이션을 작업으로 실행할 수 있습니다. 작업을 일회성으로 실행하려는 경우 콘솔, AWS CLI, API 또는 SDK를 사용할 수 있습니다.

속도 기반, cron 기반 또는 일회성 일정에 따라 애플리케이션을 실행해야 하는 경우 EventBridge 스케줄러를 사용하여 예약을 생성할 수 있습니다.

## 작업 워크플로
<a name="task-workflow"></a>

Amazon ECS 작업(독립 실행형 작업 또는 Amazon ECS 서비스)을 시작하면 작업이 생성되고 처음에 `PROVISIONING` 상태로 이동합니다. Amazon ECS는 작업을 배치하기 위한 컴퓨팅 용량을 찾아야 하기 때문에 작업이 `PROVISIONING` 상태인 경우 작업과 컨테이너 모두 존재하지 않습니다.

Amazon ECS는 시작 유형 또는 용량 공급자 구성을 기반으로 작업에 적합한 컴퓨팅 용량을 선택합니다. Fargate 및 EC2 모두에서 용량 공급자와 용량 공급자 전략을 사용할 수 있습니다. Fargate를 사용하면 클러스터 용량의 프로비저닝, 구성 및 규모 조정에 대해 걱정할 필요가 없습니다. Fargate에서 작업에 필요한 모든 인프라 관리를 처리합니다. EC2의 경우, 클러스터에 Amazon EC2 인스턴스를 등록하여 클러스터 용량을 관리하거나 클러스터 오토 스케일링을 사용하여 컴퓨팅 용량 관리를 간소화할 수 있습니다. 클러스터 Auto Scaling은 클러스터 용량을 동적으로 조정하므로 사용자는 작업 실행에만 집중할 수 있습니다. Amazon ECS는 CPU와 메모리, 배치 제약 조건 및 전략과 같이 작업 정의에서 지정한 요구 사항에 따라 작업 배치 위치를 결정합니다. 자세한 내용은 [Amazon ECS가 컨테이너 인스턴스에 작업을 배치하는 방법](task-placement.md) 섹션을 참조하세요.

Managed Scaling이 활성화된 용량 공급자를 사용하는 경우 컴퓨팅 용량 부족으로 인해 시작할 수 없는 태스크는 즉시 실패하지 않고 `PROVISIONING` 상태로 이동됩니다. Amazon ECS는 작업을 배치할 용량을 찾은 후 필요한 연결(예: `awsvpc` 모드에서 작업의 탄력적 네트워크 인터페이스(ENI))을 프로비저닝합니다. Amazon ECS 컨테이너 에이전트를 사용하여 컨테이너 이미지를 가져온 다음, 컨테이너를 시작합니다. 프로비저닝이 완료되고 관련 컨테이너가 시작된 후 Amazon ECS는 작업을 `RUNNING` 상태로 이동합니다. 작업 상태에 대한 자세한 내용은 [Amazon ECS 작업 수명 주기](task-lifecycle-explanation.md) 섹션을 참조하세요.

# 애플리케이션을 Amazon ECS 태스크로 실행
<a name="standalone-task-create"></a>

AWS Management Console을 사용하여 일회성 프로세스에 대한 작업을 생성할 수 있습니다.

**독립 실행형 작업(AWS Management Console)을 생성하는 방법**

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

1. Amazon ECS 콘솔을 사용하면 클러스터 세부 정보 페이지 또는 작업 정의 개정 목록에서 독립 실행형 작업을 생성할 수 있습니다. 다음 단계를 사용하여 선택한 리소스 페이지에 따라 독립 실행형 작업을 생성합니다.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonECS/latest/developerguide/standalone-task-create.html)

1. **기존 클러스터**에 대해 클러스터를 선택합니다.

   **클러스터 생성**을 선택하여 새 클러스터에서 작업을 실행합니다.

1. 클러스터 인프라에 태스크를 배포하는 방식을 선택합니다. **컴퓨팅 구성**에서 옵션을 선택합니다.용량 공급자 전략을 사용하려면 용량 공급자를 클러스터 수준에서 구성해야 합니다.

   용량 공급자를 사용하도록 클러스터를 구성하지 않은 경우 대신 시작 유형을 사용합니다.

   Amazon ECS 관리형 인스턴스에서 워크로드를 실행하려면 용량 공급자 전략 옵션을 사용해야 합니다.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonECS/latest/developerguide/standalone-task-create.html)

1. **배포 구성**에서 다음을 수행합니다.

   1. **작업 정의**에 작업 정의를 입력합니다.
**중요**  
콘솔은 선택 항목의 유효성을 검사하여 선택한 작업 정의 패밀리 및 개정이 정의된 컴퓨팅 구성과 호환되는지 확인합니다.

   1. **원하는 작업(Desired tasks)**에 시작할 작업 수를 입력합니다.

   1. **작업 그룹**에 작업 그룹 이름을 입력합니다.

1. 태스크 정의에서 `awsvpc` 네트워크 모드를 사용할 경우, **네트워킹(Networking)**을 펼칩니다. 다음 단계에 따라 사용자 지정 구성을 지정합니다.

   1. **VPC**에서 사용할 VPC 선택합니다.

   1. **서브넷(Subnets)**에서 태스크를 배치할 때 작업 스케줄러가 고려할 하나 이상의 서브넷을 VPC에서 선택합니다.

   1. **보안 그룹**의 경우 기존 보안 그룹을 선택하거나 새 보안 그룹을 생성할 수 있습니다. 기존 보안 그룹을 사용하려면 보안 그룹을 선택하고 다음 단계로 이동합니다. 새 보안 그룹을 만들려면 **새 보안 그룹 생성(Create a new security group)**을 선택합니다. 보안 그룹 이름 및 설명을 지정한 다음 보안 그룹에 대해 하나 이상의 인바운드 규칙을 추가해야 합니다.

   1. **퍼블릭 IP(Public IP)**에서 작업의 탄력적 네트워크 인터페이스(ENI)에 퍼블릭 IP 주소를 자동 할당할지를 선택합니다.

      AWS Fargate 작업은 퍼블릭 서브넷에서 실행될 때 퍼블릭 IP 주소가 할당될 수 있으므로 인터넷에 연결되는 경로가 있습니다. 이 필드를 사용하여 EC2 작업에 퍼블릭 IP를 할당할 수 없습니다. 자세한 내용은 [Fargate에 대한 Amazon ECS 태스크 네트워킹 옵션](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/fargate-task-networking.html) 및 [Amazon ECS 태스크에 대한 네트워크 인터페이스 할당](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking-awsvpc.html)을 참조하세요.

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

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

1. (선택 사항) 기본 외에 다른 태스크 배치 전략을 사용하는 경우 **태스크 배치(Task Placement)**를 펼치고 다음의 옵션 중에서 선택하세요.

    자세한 내용은 [Amazon ECS가 컨테이너 인스턴스에 작업을 배치하는 방법](task-placement.md) 섹션을 참조하세요.
   + **AZ Balanced Spread** - 작업을 가용 영역과 가용 영역의 컨테이너 인스턴스에 분산합니다.
   + **AZ Balanced BinPack** - 작업을 가용 영역과 가용 메모리가 최소인 컨테이너 인스턴스에 분산합니다.
   + **BinPack** - 사용 가능한 CPU 또는 메모리 최소량에 따라 태스크를 분산합니다.
   + **One Task Per Host** - 각 컨테이너 인스턴스에 서비스의 작업을 최대 1개 배치합니다.
   + **Custom** - 자체 작업 배치 전략을 정의합니다.

   **사용자 지정(Custom)**을 선택하는 경우, 태스크를 배치할 알고리즘과 태스크 배치 중에 고려할 규칙을 정의합니다.
   + **전략(Strategy)** 아래에 있는 **유형(Type)**과 **필드(Field)**의 경우, 알고리즘과 알고리즘에 사용할 엔터티를 선택합니다.

     최대 5개의 전략을 입력할 수 있습니다.
   + **제약** 아래에 있는 **유형**과 **표현식**에서 해당 제약에 사용할 규칙과 속성을 선택합니다.

     예를 들어 T2 인스턴스에 태스크를 배치하기 위한 제약을 설정할 경우, **식**에는 **attribute:ecs.instance-type =\$1 t2.\$1**를 입력합니다.

     초대 10개의 제약을 입력할 수 있습니다.

1. (선택 사항) 태스크 IAM 역할이나 태스크 정의에 정의된 태스크 실행 역할을 재정의할 경우, **태스크 재정의(Task overrides)**를 펼친 다음, 다음 단계를 완료하세요.

   1. **작업 역할**에서 이 작업에 대한 IAM 역할을 선택합니다. 자세한 내용은 [Amazon ECS 작업 IAM 역할](task-iam-roles.md) 섹션을 참조하세요.

      `ecs-tasks.amazonaws.com` 신뢰 관계를 가진 역할만 표시됩니다. 작업에 대한 IAM 역할을 생성하는 방법에 관한 지침은 [작업 IAM 역할 생성](task-iam-roles.md#create_task_iam_policy_and_role) 섹션을 참조하세요.

   1. **작업 실행 역할**에서 작업 실행 역할을 선택합니다. 자세한 내용은 [Amazon ECS 태스크 실행 IAM 역할](task_execution_IAM_role.md) 섹션을 참조하세요.

1. (선택 사항) 컨테이너 명령과 환경 변수를 재정의하려면 **컨테이너 재정의(Container Overrides)**를 펼친 다음, 컨테이너를 펼칩니다.
   +  작업 정의 명령 이외의 명령을 컨테이너로 보내려면 **명령 재정의**에 Docker 명령을 입력합니다.
   + 환경 변수를 추가하려면 **환경 변수 추가(Add Environment Variable)**를 선택합니다. **키(Key)**에 환경 변수의 이름을 입력합니다. **값(Value)**에 환경 값의 문자열 값을 입력합니다(큰따옴표(`" "`)로 묶지 않음).

     AWS에서 문자열을 큰따옴표(" ")로 묶고 문자열을 다음 형식으로 컨테이너에 전달합니다.

     ```
     MY_ENV_VAR="This variable contains a string."
     ```

1. (선택 사항) 태스크를 식별하려면 **태그(Tags)** 섹션을 펼친 다음, 태그를 구성합니다.

   Amazon ECS가 새로 시작한 모든 작업에 클러스터 이름과 작업 정의 태그를 자동으로 지정하려면 **Amazon ECS 관리형 태그(Turn on Amazon ECS managed tags)** 사용을 선택한 다음 **작업 정의(Task definitions)**를 선택합니다.

   태그를 추가하거나 제거합니다.
   + [태그 추가] **새로운 태그(Add tag)**를 선택하고 다음을 수행합니다.
     + **키**에서 키 이름을 입력합니다.
     + **값**에 키 값을 입력합니다.
   + [태그 제거] 태그 옆에 있는 **태그 제거**를 선택합니다.

1. **생성(Create)**을 선택합니다.

# Amazon EventBridge Scheduler를 사용하여 Amazon ECS 태스크 예약
<a name="tasks-scheduled-eventbridge-scheduler"></a>

EventBridge Scheduler는 하나의 중앙 관리형 서비스에서 작업을 생성, 실행 및 관리할 수 있는 서버리스 스케줄러입니다. 이벤트 버스 및 규칙과 관계없이 일회성 및 반복 예약 기능을 제공합니다. EventBridge 스케줄러는 고도로 사용자 지정이 가능하며, 광범위한 대상 API 작업 및 AWS 서비스를 통해 EventBridge 예약 규칙보다 향상된 확장성을 제공합니다. EventBridge 스케줄러는 EventBridge 스케줄러 콘솔에서 작업에 맞게 구성할 수 있는 다음과 같은 일정을 제공합니다.
+ 비율 기반 
+ Cron 기반

  모든 시간대에서 cron 기반 일정을 구성할 수 있습니다.
+ 일회성 일정

  모든 시간대에서 일회성 일정을 구성할 수 있습니다.

Amazon EventBridge Scheduler를 사용하여 Amazon ECS를 예약할 수 있습니다.

Amazon ECS 콘솔에서 예약된 작업을 생성할 수 있지만 현재 EventBridge 스케줄러 콘솔은 더 많은 기능을 제공합니다.

작업을 예약하려면 먼저 다음 단계를 완료해야 합니다.

1. VPC 콘솔을 사용하여 작업이 실행되는 서브넷 ID와 서브넷의 보안 그룹 ID를 가져옵니다. 자세한 내용은 *Amazon VPC 사용 설명서*의 [VPC의 서브넷](https://docs.aws.amazon.com/vpc/latest/userguide/configure-subnets.html)와 [보안 그룹을 사용하여 AWS 리소스에 대한 트래픽 제어](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-groups.html)를 참조하세요.

1. EventBridge 스케줄러 실행 역할을 구성합니다. 자세한 내용은* *Amazon EventBridge Scheduler 사용 설명서의 [Set up the execution role](https://docs.aws.amazon.com/scheduler/latest/UserGuide/setting-up.html#setting-up-execution-role)을 참조하세요.

1. 용량 공급자를 사용하여 태스크를 실행하려면 클러스터와 연결된 용량 공급자가 있어야 합니다.

**콘솔을 사용하여 새 일정을 생성하는 방법**

1. [https://console.aws.amazon.com/scheduler/home](https://console.aws.amazon.com/scheduler/home/)에서 Amazon EventBridge Scheduler 콘솔을 엽니다.

1.  **일정** 페이지에서 **일정 생성**을 선택합니다.

1.  **일정 세부 정보 지정** 페이지의 **일정 이름 및 설명** 섹션에서 다음을 수행합니다.

   1. **일정 이름**에 일정의 이름을 입력합니다. 예를 들어 **MyTestSchedule**입니다.

   1. (선택 사항) **설명**에 일정에 대한 설명을 입력합니다. 예를 들어 **TestSchedule**입니다.

   1. **일정 그룹**에서 일정 그룹을 선택합니다. 그룹이 없는 경우 **기본값**을 선택합니다. 일정 그룹을 생성하려면 **자체 일정 생성**을 선택합니다.

      일정 그룹을 사용하여 일정 그룹에 태그를 추가합니다.

1. 일정 옵션을 선택합니다.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonECS/latest/developerguide/tasks-scheduled-eventbridge-scheduler.html)

1. (선택 사항) 이전 단계에서 **반복 일정**을 선택한 경우 **기간** 섹션에서 다음을 수행합니다.

   1. **시간대**에서 시간대를 선택합니다.

   1. **시작 날짜 및 시간**에 `YYYY/MM/DD` 형식으로 유효한 날짜를 입력한 다음 24시간 `hh:mm` 형식으로 타임스탬프를 지정합니다.

   1. **종료 날짜 및 시간**에 `YYYY/MM/DD` 형식으로 유효한 날짜를 입력한 다음 24시간 `hh:mm` 형식으로 타임스탬프를 지정합니다.

1. **다음**을 선택합니다.

1. **대상 선택** 페이지에서 다음을 수행합니다.

   1. **모든 API**를 선택한 다음 검색 상자에 **ECS**를 입력합니다.

   1. **Amazon ECS**를 선택합니다.

   1. 검색 상자에 **RunTask**를 입력한 다음 **RunTask**를 선택합니다.

   1. **ECS 클러스터**에서 클러스터를 선택합니다.

   1. **ECS 작업에**서 작업에 사용할 작업 정의를 선택합니다.

   1. 클러스터 인프라에 태스크를 배포하는 방식을 선택합니다. **컴퓨팅 옵션**을 확장한 다음 다음 옵션 중 하나를 선택    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonECS/latest/developerguide/tasks-scheduled-eventbridge-scheduler.html)

   1. **서브넷**에 작업을 실행할 서브넷 ID를 입력합니다.

   1. **보안 그룹**에 서브넷의 보안 그룹 ID를 입력합니다.

   1. (선택 사항) 기본값이 아닌 작업 배치 전략을 사용하려면 **배치 제약**을 확장한 다음 제약을 입력합니다.

       자세한 내용은 [Amazon ECS가 컨테이너 인스턴스에 작업을 배치하는 방법](task-placement.md) 섹션을 참조하세요.

   1. (선택 사항) 작업을 식별하려면 **태그**에서 태그를 구성합니다.

      Amazon ECS가 새로 시작되는 모든 작업에 작업 정의 태그를 자동으로 지정하도록 하려면 **Amazon ECS 관리형 태그 활성화**를 선택합니다.

1. **다음**을 선택합니다.

1. **설정** 페이지에서 다음 작업을 수행합니다.

   1. 일정을 켜려면 **일정 상태**에서 **일정 활성화**를 토글합니다.

   1. 일정에 대한 재시도 정책을 구성하려면 **재시도 정책 및 데드-레터 큐(DLQ)**에서 다음을 수행합니다.
      + **재시도**를 토글합니다.
      + **이벤트의 최대 보존 시간**에 EventBridge 스케줄러가 처리되지 않은 이벤트를 유지해야 하는 최대 **시간**과 **분**을 입력합니다.
      + 최대 시간은 24시간입니다.
      + **최대 재시도 횟수**에는 대상이 오류를 반환할 경우 EventBridge 스케줄러가 일정을 재시도하는 최대 횟수를 입력합니다.

         최댓값은 185회입니다.

      재시도 정책을 사용하면 일정이 대상을 간접적으로 간접 호출하지 못할 경우 EventBridge 스케줄러가 일정을 다시 실행합니다. 구성된 경우 일정에 대한 최대 보존 기간과 재시도 횟수를 설정해야 합니다.

   1. EventBridge 스케줄러가 전송되지 않은 이벤트를 저장하는 위치를 선택합니다.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonECS/latest/developerguide/tasks-scheduled-eventbridge-scheduler.html)

   1. 고객 관리형 키를 사용하여 대상 입력을 암호화하려면 **암호화**에서 **암호화 설정 사용자 지정(고급)**을 선택합니다.

      이 옵션을 선택하는 경우 기존 KMS 키 ARN을 입력하거나 **AWS KMS key 생성**을 선택하여 AWS KMS 콘솔로 이동합니다. EventBridge 스케줄러가 저장 데이터를 암호화하는 방법에 대한 자세한 내용은 **Amazon EventBridge Scheduler 사용 설명서의 [Encryption at rest](https://docs.aws.amazon.com/scheduler/latest/UserGuide/encryption-rest.html)를 참조하세요.

   1. **권한**에서 **기존 역할 사용**을 선택한 다음 역할을 선택합니다.

      EventBridge 스케줄러가 새 실행 역할을 생성하도록 하려면 **이 일정에 대한 새 역할 생성**을 선택합니다. 그런 다음 **역할 이름**을 입력합니다. 이 옵션을 선택하면 EventBridge 스케줄러가 템플릿 대상에 필요한 필수 권한을 역할에 연결합니다.

1. **다음**을 선택합니다.

1.  **일정 검토 및 생성** 페이지에서 일정의 세부 정보를 검토합니다. 각 섹션에서 **편집**을 선택하여 해당 단계로 돌아가서 세부 정보를 편집합니다.

1. **일정 생성**을 선택합니다.

   **일정** 페이지에서 새 일정과 기존 일정 목록을 볼 수 있습니다. **상태** 열에서 새 일정이 **활성화됨** 상태인지 확인합니다.

## 다음 단계
<a name="eventbridge-scheduler-next-steps"></a>

EventBridge 스케줄러 콘솔 또는 AWS CLI를 사용하여 일정을 관리할 수 있습니다. 자세한 내용은 Amazon EventBridge Scheduler 사용 설명서의* *[Managing a schedule](https://docs.aws.amazon.com/scheduler/latest/UserGuide/managing-schedule.html)을 참조하세요.

# Amazon ECS 태스크 중지
<a name="standalone-task-stop"></a>

더 이상 독립 실행형 태스크를 계속 실행할 필요가 없는 경우 작업을 중지할 수 있습니다. Amazon ECS 콘솔을 사용하면 하나 이상의 작업을 쉽게 중지할 수 있습니다.

독립형 중지된 태스크는 다시 시작할 수 없습니다.

서비스를 중지하려는 경우 [콘솔을 사용하여 Amazon ECS 서비스 삭제](delete-service-v2.md) 섹션을 참조하세요.

**독립 실행형 작업을 중지하는 방법(AWS Management Console)**

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

1. 탐색 창에서 **클러스터**를 선택합니다.

1. **클러스터** 페이지에서 클러스터를 선택하여 클러스터 세부 정보 페이지로 이동합니다.

1. 클러스터 세부 정보 페이지에서 **작업** 탭을 선택합니다.

1. **시작 유형 필터링** 목록을 사용하여 시작 유형별로 작업을 필터링할 수 있습니다.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonECS/latest/developerguide/standalone-task-stop.html)