Spot Instance 요청용 서비스 연결 역할
Spot Instance 요청용 서비스 연결 역할
Amazon EC2는 당신을 대신해 다른 AWS 서비스를 호출하는 데 필요한 권한을 위해 **서비스 연결 역할(service-linked role)**을 사용해요. 서비스 연결 역할은 AWS 서비스에 직접 연결된 특별한 유형의 IAM 역할입니다. 서비스 연결 역할은 연결된 서비스만이 수임(assume)할 수 있기 때문에, AWS 서비스에 권한을 안전하게 위임하는 방법을 제공해요. 자세한 내용은 IAM 사용 설명서의 Service-linked roles 문서를 참고하세요.
출처: 문서
본문
Amazon EC2는 당신을 대신해 Spot Instances를 실행·관리하기 위해 **AWSServiceRoleForEC2Spot**이라는 이름의 서비스 연결 역할을 사용해요.
AWSServiceRoleForEC2Spot이 부여하는 권한
Amazon EC2는 다음 작업을 수행하기 위해 AWSServiceRoleForEC2Spot을 사용합니다.
- ec2:DescribeInstances – Spot Instances 설명
- ec2:StopInstances – Spot Instances 중지
- ec2:StartInstances – Spot Instances 시작
서비스 연결 역할 만들기 (Create the service-linked role)
대부분의 상황에서는 서비스 연결 역할을 수동으로 만들 필요가 없어요. Amazon EC2는 콘솔에서 처음으로 Spot Instance를 요청할 때 AWSServiceRoleForEC2Spot 서비스 연결 역할을 만듭니다.
Amazon EC2가 이 서비스 연결 역할을 지원하기 시작한 2017년 10월 이전에 활성 Spot Instance 요청이 있었다면, Amazon EC2가 AWS 계정에 AWSServiceRoleForEC2Spot 역할을 이미 만들어 두었어요. 자세한 내용은 IAM 사용 설명서의 A New Role Appeared in My Account 문서를 참고하세요.
AWS CLI나 API로 Spot Instance를 요청한다면 먼저 이 역할이 존재하는지 확인해야 해요.
콘솔로 AWSServiceRoleForEC2Spot을 만들려면
- IAM 콘솔을 엽니다. https://console.aws.amazon.com/iam/
- 탐색 창에서 Roles를 선택합니다.
- Create role을 선택합니다.
- Select type of trusted entity 페이지에서 EC2, EC2 - Spot Instances, Next: Permissions를 선택합니다.
- 다음 페이지에서 Next:Review를 선택합니다.
- Review 페이지에서 Create role을 선택합니다.
AWS CLI로 AWSServiceRoleForEC2Spot을 만들려면
다음과 같이 create-service-linked-role 명령을 사용합니다.
aws iam create-service-linked-role --aws-service-name spot.amazonaws.com
Spot Instances를 더 이상 사용할 필요가 없으면 AWSServiceRoleForEC2Spot 역할을 삭제할 것을 권장해요. 이 역할을 계정에서 삭제한 뒤에도 Spot Instances를 요청하면 Amazon EC2가 역할을 다시 만듭니다.
암호화된 AMI와 EBS 스냅샷에 사용할 고객 관리형 키 접근 권한 부여하기
Spot Instances에 암호화된 AMI나 암호화된 Amazon EBS 스냅샷을 지정하고 암호화에 **고객 관리형 키(customer managed key)**를 사용한다면, AWSServiceRoleForEC2Spot 역할에 그 고객 관리형 키를 사용할 권한을 부여해야 해요. 그래야 Amazon EC2가 당신을 대신해 Spot Instances를 실행할 수 있습니다. 이렇게 하려면 다음 절차처럼 고객 관리형 키에 grant를 추가해야 합니다.
권한을 제공할 때 grant는 키 정책(key policy)의 대안이에요. 자세한 내용은 AWS Key Management Service 개발자 안내서의 Using Grants와 Using Key Policies in AWS KMS 문서를 참고하세요.
AWSServiceRoleForEC2Spot 역할에 고객 관리형 키 사용 권한을 부여하려면
create-grant 명령을 사용해 고객 관리형 키에 grant를 추가하고, grant가 허용하는 작업을 수행할 권한이 부여되는 principal(AWSServiceRoleForEC2Spot 서비스 연결 역할)을 지정합니다. 고객 관리형 키는 key-id 파라미터와 고객 관리형 키의 ARN으로 지정돼요. principal은 grantee-principal 파라미터와 AWSServiceRoleForEC2Spot 서비스 연결 역할의 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"