

# Fargate용 Amazon ECS 클러스터
<a name="fargate-capacity-providers"></a>

AWS Fargate 용량 공급자의 Amazon ECS를 사용하면 Amazon ECS 작업에서 Fargate 및 Fargate Spot 용량을 모두 사용할 수 있습니다.

Fargate Spot을 사용하면 Fargate 가격 대비 할인된 요금으로 중단 방지 Amazon ECS 작업을 실행할 수 있습니다. Fargate 스팟은 여분의 컴퓨팅 용량에 대한 태스크를 실행합니다. AWS에 용량이 다시 필요한 경우 2분간 경고한 후에 작업이 중단됩니다.

Fargate 및 Fargate Spot 용량 공급자를 사용하는 작업이 중지되면 작업 상태 변경 이벤트가 Amazon EventBridge로 전송됩니다. 중지된 이유는 원인을 설명합니다. 자세한 내용은 [Amazon ECS 작업 상태 변경 이벤트](ecs_task_events.md) 섹션을 참조하세요.

클러스터에 Fargate 용량 공급자와 Auto Scaling 그룹 용량 공급자가 혼합되어 있을 수 있습니다. 그러나 용량 공급자 전략에 Fargate 또는 Auto Scaling 그룹 용량 공급자만 포함될 수 있으며 둘 다 포함될 수는 없습니다. 자세한 내용은 [Auto Scaling 그룹 용량 공급자](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cluster-auto-scaling.html#asg-capacity-providers)를 참조하세요.

용량 공급자를 사용할 때는 다음 사항을 고려해야 합니다.
+ 용량 공급자를 클러스터와 연결하려면 먼저 클러스터를 용량 공급자 전략과 연결해야 합니다.
+ 용량 공급자 전략에 최대 20개의 용량 공급자를 지정할 수 있습니다.
+ Fargate 용량 공급자를 사용하기 위해 Auto Scaling 그룹 용량 공급자를 사용하여 서비스를 업데이트할 수 없습니다. 반대의 경우도 마찬가지입니다.
+ 용량 공급자 전략에서 콘솔의 용량 공급자에 대해 `weight` 값이 지정되지 않으면 기본값 `1`을 사용합니다. API 또는 AWS CLI를 사용할 경우에 기본값은 `0`입니다.
+ 용량 공급자 전략 내에서 여러 용량 공급자가 지정된 경우 하나 이상의 용량 공급자가 0보다 큰 가중치 값을 가져야 합니다. 가중치가 0인 용량 공급자는 태스크를 배치하는 데 사용되지 않습니다. 전략에 가중치가 모두 0으로 동일한 여러 개의 용량 공급자를 지정하는 경우 용량 공급자 전략을 사용하는 `RunTask` 또는 `CreateService` 작업이 실패합니다.
+ 용량 공급자 전략에서는 하나의 용량 공급자만 정의된 base** 값을 가질 수 있습니다. base 값을 지정하지 않으면 기본값 0이 사용됩니다.
+ 클러스터에 Auto Scaling 그룹 용량 공급자와 Fargate 용량 공급자가 혼합되어 있을 수 있습니다. 그러나 용량 공급자 전략에 Auto Scaling 그룹 또는 Fargate 용량 공급자만 포함될 수 있으며 둘 다 포함될 수는 없습니다.
+ 클러스터에는 두 용량 공급자를 모두 사용하는 서비스와 독립 실행형 태스크가 혼합되어 포함될 수 있습니다. 시작 유형이 아닌 용량 공급자 전략을 사용하도록 서비스를 업데이트할 수 있습니다. 하지만 이 경우 새 배포를 강제로 실행해야 합니다.

## Fargate Spot 종료 알림
<a name="fargate-capacity-providers-termination"></a>

수요가 매우 많은 기간에는 Fargate 스팟 용량을 사용할 수 없을 수 있습니다. 이로 인해 Fargate 스팟 작업이 지연될 수 있습니다. 이러한 경우 필요한 용량을 사용할 수 있을 때까지 Amazon ECS 서비스에서 태스크 시작을 다시 시도합니다. Fargate는 스팟 용량을 온디맨드 용량으로 대체하지 않습니다.

스팟 중단으로 인해 Fargate Spot 용량을 사용하는 태스크가 중지되면 태스크가 중단되기 전에 2분 간 경고가 전송됩니다. 경고는 작업 상태 변경 이벤트로 Amazon EventBridge에 전송되고 실행 중인 작업에 SIGTERM 신호로 전송됩니다. Fargate Spot을 서비스의 일부로 사용할 경우 이 시나리오에서 서비스 스케줄러는 중단 신호를 수신하고 사용 가능한 용량이 있는 경우 Fargate Spot에 대한 추가 작업의 시작을 시도합니다. 작업이 하나뿐인 서비스는 용량을 사용할 수 있을 때까지 중단됩니다. 정상 종료에 대한 자세한 내용은 [Graceful shutdowns with ECS](https://aws.amazon.com/blogs/containers/graceful-shutdowns-with-ecs/)를 참조하세요.

작업이 중지되기 전에 컨테이너가 정상적으로 종료되도록 하려면 다음을 구성할 수 있습니다.
+ 태스크가 사용 중인 컨테이너 정의에서 `stopTimeout` 초 이하의 `120` 값을 지정할 수 있습니다. 기본 `stopTimeout` 값은 30초입니다. `stopTimeout` 값을 더 길게 지정하면 작업 상태 변경 이벤트가 수신되는 순간부터 컨테이너가 강제로 중지되는 시점 사이의 시간이 더 많이 확보됩니다. 자세한 내용은 [컨테이너 제한 시간](task_definition_parameters.md#container_definition_timeout) 섹션을 참조하세요.
+ SIGTERM 신호를 컨테이너 내에서 수신해야 정리 태스크를 수행할 수 있습니다. 이 신호를 처리하는 데 실패하면 작업은 구성된 `stopTimeout` 이후에 SIGKILL 신호를 받는 데 실패하여 데이터가 손실되거나 오류가 발생할 수 있습니다.

다음은 작업 상태 변경 이벤트의 코드 조각입니다. 이 코드 조각에는 Fargate Spot 중단에 대한 중지 사유와 중지 코드가 표시됩니다.

```
{
  "version": "0",
  "id": "9bcdac79-b31f-4d3d-9410-fbd727c29fab",
  "detail-type": "ECS Task State Change",
  "source": "aws.ecs",
  "account": "111122223333",
  "resources": [
    "arn:aws:ecs:us-east-1:111122223333:task/b99d40b3-5176-4f71-9a52-9dbd6f1cebef"
  ],
  "detail": {
    "clusterArn": "arn:aws:ecs:us-east-1:111122223333:cluster/default",
    "createdAt": "2016-12-06T16:41:05.702Z",
    "desiredStatus": "STOPPED",
    "lastStatus": "RUNNING",
    "stoppedReason": "Your Spot Task was interrupted.",
    "stopCode": "SpotInterruption",
    "taskArn": "arn:aws:ecs:us-east-1:111122223333:task/b99d40b3-5176-4f71-9a52-9dbd6fEXAMPLE",
    ...
  }
}
```

다음은 Amazon ECS 작업 상태 변경 이벤트에 대한 EventBridge 규칙을 생성하는 데 사용되는 이벤트 패턴입니다. 필요한 경우 `detail` 필드에 클러스터를 지정할 수 있습니다. 이렇게 하면 해당 클러스터에 대한 작업 상태 변경 이벤트를 수신하게 됩니다. EventBridge 규칙 생성에 대한 자세한 내용은 *Amazon EventBridge 사용 설명서*의 [Amazon EventBridge 시작하기](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-get-started.html)를 참조하세요.

```
{
    "source": [
        "aws.ecs"
    ],
    "detail-type": [
        "ECS Task State Change"
    ],
    "detail": {
        "clusterArn": [
            "arn:aws:ecs:us-west-2:111122223333:cluster/default"
        ]
    }
}
```