

# 스팟 인스턴스 요청에 대한 서비스 연결 역할
<a name="service-linked-roles-spot-instance-requests"></a>

Amazon EC2는 다른 AWS 서비스를 자동으로 호출하는 데 필요한 권한에 서비스 연결 역할을 사용합니다. 서비스 연결 역할은 AWS 서비스에 직접 연결된 고유한 유형의 IAM 역할입니다. 연결된 서비스만 서비스 연결 역할을 수임할 수 있으므로 서비스 연결 역할은 AWS 서비스에 권한을 위임하는 안전한 방법을 제공합니다. 자세한 내용은 *IAM 사용 설명서*의 [서비스 연결 역할](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create-service-linked-role.html)을 참조하세요.

Amazon EC2는 **AWSServiceRoleForEC2Spot**이라는 이름의 서비스 연결 역할을 사용하여 사용자 대신 스팟 인스턴스를 시작하고 관리합니다.

## AWSServiceRoleForEC2Spot으로 부여된 권한
<a name="service-linked-role-permissions-granted-by-AWSServiceRoleForEC2Spot"></a>

Amazon EC2는 **AWSServiceRoleForEC2Spot**을 사용하여 다음 작업을 완료합니다.
+ `ec2:DescribeInstances` - 스팟 인스턴스 설명
+ `ec2:StopInstances` - 스팟 인스턴스 중지
+ `ec2:StartInstances` - 스팟 인스턴스 시작

## 서비스 연결 역할 생성
<a name="service-linked-role-creating-for-spot"></a>

대부분의 상황에서는 서비스 연결 역할을 수동으로 생성할 필요가 없습니다. 사용자가 콘솔을 사용하여 스팟 인스턴스를 처음으로 요청하면 Amazon EC2가 **AWSServiceRoleForEC2Spot** 서비스 연결 역할을 생성합니다.

Amazon EC2가 이 서비스 연결 역할을 지원하기 시작한 2017년 10월 이전에 활성 스팟 인스턴스 요청을 보유한 경우 Amazon EC2에는 사용자의 AWS 계정에 **AWSServiceRoleForEC2Spot** 역할이 이미 생성되어 있습니다. 자세한 내용은 *IAM 사용 설명서*의 [내 계정에 표시되는 새 역할](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_roles.html#troubleshoot_roles_new-role-appeared)을 참조하세요.

AWS CLI 또는 API를 사용하여 스팟 인스턴스를 요청하는 경우 먼저 이 역할이 있는지 확인해야 합니다.

**콘솔을 사용하여 **AWSServiceRoleForEC2Spot** 생성**

1. IAM 콘솔([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/))을 엽니다.

1. 탐색 창에서 **역할**을 선택합니다.

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

1. **신뢰할 수 있는 유형의 엔터티 선택** 페이지의 **EC2**에서 **EC2 - 스팟 인스턴스**를 선택한 후 **다음: 권한**을 선택합니다.

1. 다음 페이지에서 **다음:검토(Next:Review)**를 선택합니다.

1. **검토** 페이지에서 **역할 만들기**를 선택합니다.

**AWS CLI를 사용하여 **AWSServiceRoleForEC2Spot** 생성**  
다음과 같이 [create-service-linked-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-service-linked-role.html) 명령을 사용합니다.

```
aws iam create-service-linked-role --aws-service-name spot.amazonaws.com
```

스팟 인스턴스이 더 이상 필요 없으면 **AWSServiceRoleForEC2Spot** 역할을 삭제하는 것이 좋습니다. 계정에서 이 역할이 삭제된 후 스팟 인스턴스를 요청하면 Amazon EC2에서 다시 해당 역할을 생성합니다.

## 암호화된 AMI 및 EBS 스냅샷에 사용할 고객 관리형 키에 대한 액세스 권한 부여
<a name="spot-instance-service-linked-roles-access-to-cmks"></a>

스팟 인스턴스 요청에서 [암호화된 AMI](AMIEncryption.md) 또는 암호화된 Amazon EBS 스냅샷을 지정하고 암호화용 고객 관리형 키를 사용하는 경우 Amazon EC2에서 자동으로 인스턴스를 시작하려면 고객 관리형 키를 사용할 권한을 **AWSServiceRoleForEC2Spot** 역할에 부여해야 할 수 있습니다. 이렇게 하려면 다음 절차에 표시된 바와 같이 고객 관리형 키에 대한 권한 부여를 추가해야 합니다.

권한을 제공할 때 권한 부여는 키 정책을 대체합니다. 자세한 내용은 *AWS Key Management Service 개발자 가이드*의 [권한 부여 사용](https://docs.aws.amazon.com/kms/latest/developerguide/grants.html) 및 [AWS KMS의 키 정책 사용](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)을 참조하세요.

****AWSServiceRoleForEC2Spot** 역할에 고객 관리형 키를 사용할 수 있는 권한 부여**
+ [create-grant](https://docs.aws.amazon.com/cli/latest/reference/kms/create-grant.html) 명령을 사용하여 고객 관리형 키에 대한 권한 부여를 추가하고 권한 부여에 의해 허용되는 작업을 수행할 수 있는 권한이 부여된 보안 주체(**AWSServiceRoleForEC2Spot** 서비스 연결 역할)를 지정합니다. 고객 관리형 키는 `key-id` 파라미터와 고객 관리형 키의 ARN으로 지정됩니다. 보안 주체는 **AWSServiceRoleForEC2Spot** 서비스 연결 역할의 `grantee-principal` 파라미터 및 ARN에 의해 지정됩니다.

  ```
  aws kms create-grant \
      --region us-east-1 \
      --key-id arn:aws:kms:us-east-1:444455556666:key/1234abcd-12ab-34cd-56ef-1234567890ab \
      --grantee-principal arn:aws:iam::111122223333:role/aws-service-role/spot.amazonaws.com/AWSServiceRoleForEC2Spot \
      --operations "Decrypt" "Encrypt" "GenerateDataKey" "GenerateDataKeyWithoutPlaintext" "CreateGrant" "DescribeKey" "ReEncryptFrom" "ReEncryptTo"
  ```