튜토리얼: EC2 Fleet이 Interruptible Capacity Reservations에 인스턴스를 시작하도록 구성하기

튜토리얼: EC2 Fleet이 Interruptible Capacity Reservations에 인스턴스를 시작하도록 구성하기

이 튜토리얼은 EC2 Fleet이 Interruptible Capacity Reservations에 인스턴스를 시작하도록 하기 위해 수행해야 하는 단계를 안내해요. 이 절에서 시작 템플릿 생성, EC2 Fleet 구성, 시작·결과 확인을 차근차근 해볼게요.

출처: 문서

본문

이 튜토리얼은 EC2 Fleet이 Interruptible Capacity Reservations에 인스턴스를 시작하도록 하기 위해 수행해야 하는 단계를 안내해요.

Interruptible Capacity Reservations는 AWS 조직 내의 On-Demand Capacity Reservation 소유자가 내게 빌려준 여유 용량을 나타내요. 이 예약은 용량 소유자가 2분 중단 알림과 함께 언제든 용량을 되찾을 수 있고 그 후 EC2가 인스턴스를 종료하므로, 중단 가능한(interruptible) 워크로드에 적합해요. Interruptible Capacity Reservations에 대한 자세한 내용은 Interruptible Capacity Reservations를 참고하세요.

EC2 Fleet 요청의 대상 용량(target capacity)은 대상으로 지정하는 Interruptible Capacity Reservation의 사용 가능한 용량보다 작거나 같아야 해요. 대상 용량 요청이 Interruptible Capacity Reservation의 사용 가능한 용량을 초과하면 EC2 Fleet은 시작할 수 있는 만큼 인스턴스를 시작하고 시작된 인스턴스를 API 응답에 보고해요.

Interruptible Capacity Reservation에서 실행되는 인스턴스는 수동으로 중지하거나 종료하거나, 용량 소유자가 용량을 되찾을 때까지 계속 실행돼요. 용량 소유자가 용량을 되찾으면 Amazon EC2가 인스턴스를 종료하기 2분 전에 Amazon EventBridge 알림을 보내요.

고려 사항

  • Interruptible Capacity Reservations에 인스턴스를 시작하는 것은 instant 유형의 EC2 Fleet 요청만 지원돼요.
  • DefaultTargetCapacityType을 reserved-capacity로 설정하면서 OnDemandTargetCapacity나 SpotTargetCapacity를 사용하는 것은 지원되지 않아요.
  • 여러 시작 템플릿을 지정하고 각각 다른 Interruptible Capacity Reservation을 대상으로 하면, EC2 Fleet이 일치하는 모든 예약에 걸쳐 인스턴스를 프로비저닝해요.
  • Interruptible Capacity Reservations의 경우 EC2 Fleet은 원하는 대상 용량의 나머지 부분에 대해 On-Demand Instances나 Spot Instances를 시작하는 것으로 폴백하지 않아요.

권한 확인

EC2 Fleet을 만들기 전에 필요한 권한이 있는 IAM 역할이 있는지 확인하세요. 자세한 내용은 EC2 Fleet prerequisites을 참고하세요.

Interruptible Capacity Reservation에 인스턴스를 시작하려면 다음 단계를 수행해야 해요.

1단계: 시작 템플릿 만들기

create-launch-template 명령으로 대상으로 지정할 Interruptible Capacity Reservation을 지정하는 시작 템플릿을 만듭니다. 시작 템플릿에서 MarketType을 interruptible-capacity-reservation으로 설정하고 Interruptible Capacity Reservation의 CapacityReservationId를 지정하세요.

시작 템플릿 구성 예시:

{
  "LaunchTemplateName": "interruptible-cr-launch-template",
  "LaunchTemplateData": {
    "InstanceType": "m5.large",
    "ImageId": "ami-0abcdef1234567890",
    "CapacityReservationSpecification": {
      "CapacityReservationTarget": {
        "CapacityReservationId": "cr-0123456789abcdef0"
      }
    },
    "InstanceMarketOptions": {
      "MarketType": "interruptible-capacity-reservation"
    }
  }
}

출력 예시:

{
  "LaunchTemplate": {
    "LaunchTemplateId": "lt-0123456789example",
    "LaunchTemplateName": "interruptible-cr-launch-template",
    "CreateTime": "2026-03-12T10:00:00.000Z",
    "CreatedBy": "arn:aws:iam::123456789012:user/Admin",
    "DefaultVersionNumber": 1,
    "LatestVersionNumber": 1
  }
}

자세한 내용은 Create an Amazon EC2 launch template을 참고하세요.

2단계: EC2 Fleet 구성하기

시작 템플릿과 대상 용량을 지정하는 EC2 Fleet용 구성 파일을 만듭니다. 다음 구성은 1단계에서 만든 interruptible-cr-launch-template 시작 템플릿을 사용해요.

DefaultTargetCapacityType을 reserved-capacity로 사용할 때는 ReservedCapacityOptions를 ReservationType을 interruptible-capacity-reservation으로 설정해 지정해야 해요.

config.json이라는 파일을 다음 내용으로 만듭니다:

{
  "LaunchTemplateConfigs": [
    {
      "LaunchTemplateSpecification": {
        "LaunchTemplateName": "interruptible-cr-launch-template",
        "Version": "1"
      },
      "Overrides": [
        {
          "InstanceType": "m5.large",
          "AvailabilityZone": "us-east-1a"
        }
      ]
    }
  ],
  "TargetCapacitySpecification": {
    "TotalTargetCapacity": 10,
    "DefaultTargetCapacityType": "reserved-capacity"
  },
  "ReservedCapacityOptions": {
    "ReservationType": ["interruptible-capacity-reservation"]
  },
  "Type": "instant"
}

주요 구성 매개 변수:

매개 변수 설명
DefaultTargetCapacityType reserved-capacity로 설정해 인스턴스를 예약 용량에 시작해야 함을 나타내요.
ReservedCapacityOptions 예약 용량의 유형을 지정해요. Interruptible Capacity Reservations의 경우 ReservationType을 ["interruptible-capacity-reservation"]으로 설정해요.
Type instant로 설정해야 해요. Interruptible Capacity Reservations는 instant 플릿만 지원돼요.

3단계: 플릿 시작 및 결과 확인

create-fleet 명령으로 플릿을 만듭니다.

aws ec2 create-fleet \
--cli-input-json file://config.json

앞의 구성을 사용해 instant 플릿을 만들면 EC2 Fleet이 대상 용량을 충족하기 위해 Interruptible Capacity Reservation에 인스턴스 10개를 시작해요.

참고

플릿이 전체 대상 용량을 충족하지 못하면 응답에 시작된 인스턴스와 충족되지 않은 용량에 대한 오류가 포함돼요.

출력 예시:

{
  "FleetId": "fleet-12345678-1234-1234-1234-123456789012",
  "Instances": [
    {
      "LaunchTemplateAndOverrides": {
        "LaunchTemplateSpecification": {
          "LaunchTemplateId": "lt-0123456789example",
          "Version": "1"
        },
        "Overrides": {
          "InstanceType": "m5.large",
          "AvailabilityZone": "us-east-1a"
        }
      },
      "Lifecycle": "interruptible-capacity-reservation",
      "InstanceIds": [
        "i-0123456789example1",
        "i-0123456789example2",
        "i-0123456789example3",
        "i-0123456789example4",
        "i-0123456789example5",
        "i-0123456789example6",
        "i-0123456789example7",
        "i-0123456789example8",
        "i-0123456789example9",
        "i-0123456789example0"
      ],
      "InstanceType": "m5.large",
      "Platform": "Linux/UNIX"
    }
  ],
  "Errors": []
}

자세한 내용은 Create an EC2 Fleet을 참고하세요.

정리하기

더 이상 요금이 발생하지 않도록, 인스턴스가 더 이상 필요 없어지면 종료하세요. 참고로 EC2는 용량 소유자가 용량을 되찾을 때 Interruptible Capacity Reservation에 시작된 인스턴스도 자동으로 종료해요.

관련 리소스

더 알아보기