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을 만들려면

  1. IAM 콘솔을 엽니다. https://console.aws.amazon.com/iam/
  2. 탐색 창에서 Roles를 선택합니다.
  3. Create role을 선택합니다.
  4. Select type of trusted entity 페이지에서 EC2, EC2 - Spot Instances, Next: Permissions를 선택합니다.
  5. 다음 페이지에서 Next:Review를 선택합니다.
  6. 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"

더 알아보기 (Learn more)