

# スポットインスタンスリクエスト向けのサービスにリンクされたロール
<a name="service-linked-roles-spot-instance-requests"></a>

Amazon EC2 はユーザーに代わって AWS の他のサービスを呼び出すために必要なアクセス許可のために、サービスにリンクされたロールを使用します。サービスにリンクされたロールはAWS のサービス に直接リンクされた一意のタイプの IAM ロールです。サービスにリンクされたロールはAWS のサービスにアクセス許可を委任するためのセキュアな方法を提供します。これはリンクされたサービスのみが、サービスにリンクされたロールを引き受けることができるためです。詳細については「*IAM ユーザーガイド*」の「[Service-linked roles](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 により **AWSServiceRoleForEC2Spot** ロールが AWS アカウントに作成されています｡ 詳細については*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. ナビゲーションペインで **Roles (ロール) ** を選択してください。

1. [**ロールの作成**] を選択してください。

1. [**Select type of trusted entity (信頼されたエンティティのタイプを選択)**] ページで、[**EC2**]、[**EC2 - Spot Instances (EC2 - スポットインスタンス)**]、[**Next: Permissions (次の手順: アクセス許可)**] の順に選択してください。

1. 次のページで、[**次へ: 確認**] を選択してください。

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 により指定します。プリンシパルを指定するには`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"
  ```