竞价型实例请求的服务相关角色 - Amazon Elastic Compute Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

竞价型实例请求的服务相关角色

Amazon EC2 使用服务相关角色获取代表您调用其他Amazon服务所需的权限。服务相关角色是一种独特类型的 IAM 角色,它与 Amazon Web Services 服务 直接相关。服务相关角色提供了一种将权限委托给 Amazon Web Services 服务 的安全方式,因为只有相关服务才能担任服务相关角色。有关更多信息,请参阅《IAM 用户指南》中的服务相关角色

Amazon EC2 使用名为 Amazon Web Services ServiceRoleForEC2Spot 的服务相关角色代表您启动和管理 Spot 实例。

AWSServiceRoleForEC2Spot 授予的权限

Amazon EC2 使用 Amazon Web Services ServiceRoleForEC2Spot 完成以下操作:

  • ec2:DescribeInstances – 描述竞价型实例

  • ec2:StopInstances – 停止竞价型实例

  • ec2:StartInstances – 启动竞价型实例

创建服务相关角色

在大多数情况下,无需手动创建服务相关角色。Amazon EC2 在您首次使用控制台请求 Spot 实例时创建 Amazon Web Services ServiceRoleForEC2Spot 服务相关角色。

如果在 2017 年 10 月之前具有活动Spot 实例请求(此时 Amazon EC2 开始支持该服务相关角色),则 Amazon EC2 在您的Amazon账户中创建 Amazon Web Services ServiceRoleForEC2Spot 角色。有关更多信息,请参阅IAM 用户指南中的我的账户中出现新角色

如果您使用 Amazon CLI 或 API 来请求竞价型实例,则必须确保此角色存在。

要使用控制台创建 Amazon Web Services ServiceRoleForEC2Spot
  1. 通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. 在导航窗格中,选择 Roles(角色)。

  3. 选择创建角色

  4. Select type of trusted entity (选择受信任实体的类型) 页面上,依次选择 EC2EC2 - Spot Instances (EC2 - Spot 实例)Next: Permissions (下一步: 权限)

  5. 在下一页上,选择 Next:Review(下一步:审核)

  6. Review (审核) 页面上,选择 Create role (创建角色)

要使用 Amazon CLI 创建 Amazon Web Services ServiceRoleForEC2Spot

如下所示使用 create-service-linked-role 命令。

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

如果您不再需要使用 Spot 实例,我们建议您删除 Amazon Web Services ServiceRoleForEC2Spot 角色。从账户中删除该角色后,如果您请求竞价型实例,Amazon EC2 将再次创建该角色。

授予对用于加密的 AMI 和 EBS 快照的客户托管密钥的访问权限

如果为竞价型实例指定加密的 AMI 或加密的 Amazon EBS 快照,并且您使用客户托管密钥进行加密,则必须为 AWSServiceRoleForEC2Spot 角色授予使用客户托管密钥的权限,以便 Amazon EC2 可以代表您启动竞价型实例。为此,您必须在客户托管密钥中添加授权,如以下过程中所示。

在提供权限时,授权是密钥策略的替代方法。有关更多信息,请参阅 Amazon Key Management Service 开发人员指南中的使用授权在 Amazon KMS 中使用密钥策略

Amazon Web Services ServiceRoleForEC2Spot 角色授予使用客户托管密钥的权限
  • 使用 create-grant 命令在客户托管密钥中添加授权,并指定授予权限的委托人(Amazon Web Services ServiceRoleForEC2Spot 服务相关角色),以执行授权允许的操作。客户托管密钥由 key-id 参数和客户托管密钥的 ARN 指定。委托人是由 grantee-principal 参数和 Amazon Web Services ServiceRoleForEC2Spot 服务相关角色的 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"