새 또는 기존 Spot Fleet 요청과 해당 요청이 시작하는 인스턴스 및 볼륨 태그 지정하기
새 또는 기존 Spot Fleet 요청과 해당 요청이 시작하는 인스턴스 및 볼륨 태그 지정하기
Important
Spot Fleet은 계획된 투자가 없는 레거시 API를 사용합니다. 대신 EC2 Fleet 또는 Auto Scaling 그룹을 사용할 것을 권장합니다. 자세한 내용은 Which is the best fleet method to use?을 참고하세요.
Spot Fleet 요청과 해당 요청이 시작하는 인스턴스 및 볼륨을 분류하고 관리하는 데 도움이 되도록 사용자 지정 메타데이터로 태그를 지정할 수 있어요. Spot Fleet 요청을 만들 때나 나중에 태그를 할당할 수 있습니다. 마찬가지로 Fleet이 인스턴스와 볼륨을 시작할 때나 나중에 태그를 할당할 수 있습니다.
Fleet 요청에 태그를 지정해도 Fleet이 시작하는 인스턴스와 볼륨에는 자동으로 태그가 지정되지 않습니다. Fleet이 시작하는 인스턴스와 볼륨에 명시적으로 태그를 지정해야 합니다.
Note
On-Demand Instances에 연결된 볼륨에만 태그를 지정할 수 있어요. Spot Instances에 연결된 볼륨에는 태그를 지정할 수 없습니다.
Amazon EC2 콘솔 또는 명령줄 도구를 사용해 태그를 할당할 수 있습니다. 태그 작동 방식에 대한 자세한 내용은 Tag your Amazon EC2 resources를 참고하세요.
출처: 문서
본문
Spot Fleet 요청과 해당 요청이 시작하는 인스턴스 및 볼륨을 분류하고 관리하는 데 도움이 되도록 사용자 지정 메타데이터로 태그를 지정할 수 있습니다. Spot Fleet 요청을 만들 때나 나중에 태그를 할당할 수 있습니다. 마찬가지로 Fleet이 인스턴스와 볼륨을 시작할 때나 나중에 태그를 할당할 수 있습니다.
Fleet 요청에 태그를 지정해도 Fleet이 시작하는 인스턴스와 볼륨에는 자동으로 태그가 지정되지 않습니다. Fleet이 시작하는 인스턴스와 볼륨에 명시적으로 태그를 지정해야 합니다.
전제 조건 (Prerequisite)
리소스에 태그를 지정할 권한을 사용자에게 부여합니다. 자세한 내용은 Example: Tag resources를 참고하세요.
사용자에게 리소스 태그 지정 권한을 부여하려면
다음을 포함하는 IAM 정책을 만드세요.
ec2:CreateTags작업. 이는 사용자에게 태그를 만들 수 있는 권한을 부여합니다.ec2:RequestSpotFleet작업. 이는 사용자에게 Spot Fleet 요청을 만들 수 있는 권한을 부여합니다.- Resource에 대해
"*"를 지정해야 합니다. 이렇게 하면 사용자가 모든 리소스 유형에 태그를 지정할 수 있습니다.
{
"Version":"2012-10-17",
"Statement": [
{
"Sid": "TagSpotFleetRequest",
"Effect": "Allow",
"Action": [
"ec2:CreateTags",
"ec2:RequestSpotFleet"
],
"Resource": "*"
}
]
}
Important
spot-fleet-request리소스에는 현재 리소스 수준 권한이 지원되지 않아요. 리소스로spot-fleet-request를 지정하면 Fleet에 태그를 지정하려고 할 때 권한 없음 예외(unauthorized exception)가 발생합니다. 다음 예는 정책을 설정하지 않는 방법을 보여줍니다.
{
"Effect": "Allow",
"Action": [
"ec2:CreateTags",
"ec2:RequestSpotFleet"
],
"Resource": "arn:aws:ec2:us-east-1:111122223333:spot-fleet-request/*"
}
액세스를 제공하려면 사용자, 그룹, 역할에 권한을 추가하세요.
- 사용자가 수임할 수 있는 역할을 만듭니다. IAM User Guide의 Create a role for an IAM user 지침을 따릅니다.
- (권장하지 않음) 사용자에게 정책을 직접 연결하거나 사용자를 사용자 그룹에 추가합니다. IAM User Guide의 Adding permissions to a user (console) 지침을 따릅니다.
새 Spot Fleet과 해당 요청이 시작하는 인스턴스 및 볼륨 태그 지정하기
콘솔을 사용해 새 Spot Fleet 요청과 해당 요청이 시작하는 인스턴스 및 볼륨에 태그를 지정하려면
- Fleet을 수동으로 구성했다면 다음을 수행합니다. 태그를 추가하려면 Additional launch parameters를 펼치고 Create tag를 선택한 다음 태그의 키와 값을 입력합니다. 각 태그에 대해 반복합니다. 각 태그에 대해 Spot Fleet 요청과 인스턴스에 같은 태그를 지정할 수 있습니다. 둘 다 태그를 지정하려면 Instances와 Fleet이 모두 선택되어 있는지 확인합니다. Spot Fleet 요청에만 태그를 지정하려면 Instances를 선택 해제합니다. Fleet이 시작하는 인스턴스에만 태그를 지정하려면 Fleet을 선택 해제합니다. Fleet을 수동으로 구성할 때는 볼륨에 태그를 지정하는 옵션이 없습니다. 볼륨 태그는 On-Demand Instances에 연결된 볼륨에만 지원됩니다. Fleet을 수동으로 구성할 때는 On-Demand Instances를 지정할 수 없습니다.
- 시작 템플릿을 사용했다면 다음을 수행합니다. Fleet 요청에 태그를 추가하려면 Tags 아래에서 Create Tag를 선택하고 태그의 키와 값을 입력합니다. 각 태그에 대해 반복합니다. Fleet의 리소스에 태그를 지정하려면 시작 템플릿에 태그를 지정해야 합니다.
AWS CLI를 사용해 새 Spot Fleet 요청과 해당 요청이 시작하는 인스턴스 및 볼륨에 태그를 지정하려면
만들 때 Spot Fleet 요청에 태그를 지정하고, Fleet이 인스턴스와 볼륨을 시작할 때 태그를 지정하려면 Spot Fleet 요청 구성을 다음과 같이 구성합니다.
Spot Fleet 요청 태그:
- Spot Fleet 요청의 태그를
SpotFleetRequestConfig에 지정합니다. ResourceType에spot-fleet-request를 지정합니다. 다른 값을 지정하면 Fleet 요청이 실패합니다.Tags에 키-값 쌍을 지정합니다. 키-값 쌍을 여러 개 지정할 수 있습니다.
인스턴스 태그:
- 인스턴스의 태그를
LaunchSpecifications에 지정합니다. ResourceType에instance를 지정합니다. 다른 값을 지정하면 Fleet 요청이 실패합니다.Tags에 키-값 쌍을 지정합니다. 키-값 쌍을 여러 개 지정할 수 있습니다. 또는 Spot Fleet 요청에서 참조하는 시작 템플릿에 인스턴스의 태그를 지정할 수 있습니다.
볼륨 태그:
- Spot Fleet 요청에서 참조하는 시작 템플릿에 볼륨의 태그를 지정합니다.
LaunchSpecifications의 볼륨 태그 지정은 지원되지 않습니다.
다음 예시에서 Spot Fleet 요청에는 두 개의 태그가 지정됩니다: Key=Environment 및 Value=Production, 그리고 Key=Cost-Center 및 Value=123. Fleet이 시작하는 인스턴스에는 하나의 태그(Spot Fleet 요청의 태그 중 하나와 동일)가 지정됩니다: Key=Cost-Center 및 Value=123.
{
"SpotFleetRequestConfig": {
"AllocationStrategy": "priceCapacityOptimized",
"ExcessCapacityTerminationPolicy": "default",
"IamFleetRole": "arn:aws:iam::111122223333:role/aws-ec2-spot-fleet-tagging-role",
"LaunchSpecifications": [
{
"ImageId": "ami-0123456789EXAMPLE",
"InstanceType": "c4.large",
"TagSpecifications": [
{
"ResourceType": "instance",
"Tags": [
{
"Key": "Cost-Center",
"Value": "123"
}
]
}
]
}
],
"SpotPrice": "5",
"TargetCapacity": 2,
"TerminateInstancesWithExpiration": true,
"Type": "maintain",
"ReplaceUnhealthyInstances": true,
"InstanceInterruptionBehavior": "terminate",
"InstancePoolsToUseCount": 1,
"TagSpecifications": [
{
"ResourceType": "spot-fleet-request",
"Tags": [
{
"Key": "Environment",
"Value":"Production"
},
{
"Key": "Cost-Center",
"Value":"123"
}
]
}
]
}
}
AWS CLI를 사용해 Spot Fleet이 시작하는 인스턴스에 태그 지정하기
Fleet이 인스턴스를 시작할 때 태그를 지정하려면 Spot Fleet 요청에서 참조하는 launch template에 태그를 지정하거나, Spot Fleet 요청 구성에 태그를 다음과 같이 지정할 수 있습니다.
- 인스턴스의 태그를
LaunchSpecifications에 지정합니다. ResourceType에instance를 지정합니다. 다른 값을 지정하면 Fleet 요청이 실패합니다.Tags에 키-값 쌍을 지정합니다. 키-값 쌍을 여러 개 지정할 수 있습니다.
다음 예시에서 Fleet이 시작하는 인스턴스에는 하나의 태그가 지정됩니다: Key=Cost-Center 및 Value=123.
{
"SpotFleetRequestConfig": {
"AllocationStrategy": "priceCapacityOptimized",
"ExcessCapacityTerminationPolicy": "default",
"IamFleetRole": "arn:aws:iam::111122223333:role/aws-ec2-spot-fleet-tagging-role",
"LaunchSpecifications": [
{
"ImageId": "ami-0123456789EXAMPLE",
"InstanceType": "c4.large",
"TagSpecifications": [
{
"ResourceType": "instance",
"Tags": [
{
"Key": "Cost-Center",
"Value": "123"
}
]
}
]
}
],
"SpotPrice": "5",
"TargetCapacity": 2,
"TerminateInstancesWithExpiration": true,
"Type": "maintain",
"ReplaceUnhealthyInstances": true,
"InstanceInterruptionBehavior": "terminate",
"InstancePoolsToUseCount": 1
}
}
AWS CLI를 사용해 Spot Fleet이 시작하는 On-Demand Instances에 연결된 볼륨에 태그 지정하기
Fleet이 볼륨을 만들 때 태그를 지정하려면 Spot Fleet 요청에서 참조하는 launch template에 태그를 지정해야 합니다.
Note
볼륨 태그는 On-Demand Instances에 연결된 볼륨에만 지원돼요. Spot Instances에 연결된 볼륨에는 태그를 지정할 수 없습니다.LaunchSpecifications의 볼륨 태그 지정은 지원되지 않습니다.
기존 Spot Fleet 태그 지정하기
콘솔을 사용해 기존 Spot Fleet 요청에 태그를 지정하려면
Spot Fleet 요청을 만든 후 콘솔을 사용해 Fleet 요청에 태그를 추가할 수 있어요.
- Amazon EC2 콘솔(https://console.aws.amazon.com/ec2/)을 엽니다.
- 탐색 창에서 Spot Requests를 선택합니다.
- Spot Fleet 요청을 선택합니다.
- Tags 탭을 선택하고 Create Tag를 선택합니다.
AWS CLI를 사용해 기존 Spot Fleet 요청에 태그를 지정하려면
기존 리소스에 태그를 지정하려면 create-tags 명령을 사용할 수 있습니다. 다음 예시에서 기존 Spot Fleet 요청에 Key=purpose 및 Value=test 태그가 지정됩니다.
aws ec2 create-tags \
--resources sfr-11112222-3333-4444-5555-66666EXAMPLE \
--tags Key=purpose,Value=test
Spot Fleet 요청 태그 보기
콘솔을 사용해 Spot Fleet 요청 태그를 보려면
- Amazon EC2 콘솔(https://console.aws.amazon.com/ec2/)을 엽니다.
- 탐색 창에서 Spot Requests를 선택합니다.
- Spot Fleet 요청을 선택하고 Tags 탭을 선택합니다.
Spot Fleet 요청 태그를 설명하려면
지정된 리소스의 태그를 보려면 describe-tags 명령을 사용합니다. 다음 예시에서 지정된 Spot Fleet 요청의 태그를 설명합니다.
aws ec2 describe-tags \
--filters "Name=resource-id,Values=sfr-11112222-3333-4444-5555-66666EXAMPLE"
{
"Tags": [
{
"Key": "Environment",
"ResourceId": "sfr-11112222-3333-4444-5555-66666EXAMPLE",
"ResourceType": "spot-fleet-request",
"Value": "Production"
},
{
"Key": "Another key",
"ResourceId": "sfr-11112222-3333-4444-5555-66666EXAMPLE",
"ResourceType": "spot-fleet-request",
"Value": "Another value"
}
]
}
Spot Fleet 요청을 설명해 Spot Fleet 요청의 태그를 볼 수도 있습니다.
지정된 Spot Fleet 요청의 구성(여기에는 Fleet 요청에 대해 지정된 모든 태그가 포함됨)을 보려면 describe-spot-fleet-requests 명령을 사용합니다.
aws ec2 describe-spot-fleet-requests \
--spot-fleet-request-ids sfr-11112222-3333-4444-5555-66666EXAMPLE
{
"SpotFleetRequestConfigs": [
{
"ActivityStatus": "fulfilled",
"CreateTime": "2020-02-13T02:49:19.709Z",
"SpotFleetRequestConfig": {
"AllocationStrategy": "capacityOptimized",
"OnDemandAllocationStrategy": "lowestPrice",
"ExcessCapacityTerminationPolicy": "Default",
"FulfilledCapacity": 2.0,
"OnDemandFulfilledCapacity": 0.0,
"IamFleetRole": "arn:aws:iam::111122223333:role/aws-ec2-spot-fleet-tagging-role",
"LaunchSpecifications": [
{
"ImageId": "ami-0123456789EXAMPLE",
"InstanceType": "c4.large"
}
],
"TargetCapacity": 2,
"OnDemandTargetCapacity": 0,
"Type": "maintain",
"ReplaceUnhealthyInstances": false,
"InstanceInterruptionBehavior": "terminate"
},
"SpotFleetRequestId": "sfr-11112222-3333-4444-5555-66666EXAMPLE",
"SpotFleetRequestState": "active",
"Tags": [
{
"Key": "Environment",
"Value": "Production"
},
{
"Key": "Another key",
"Value": "Another value"
}
]
}
]
}