启动模板支持 - Amazon EC2 Auto Scaling
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

启动模板支持

Amazon EC2 Auto Scaling 支持使用 Amazon EC2 使用 Auto Scaling 组。我们建议您允许用户从启动模板创建 Auto Scaling 组,因为这样做允许用户使用 EC2 的最新功能。此外,用户必须指定启动模板以使用 混合实例策略.

您可以使用 AmazonEC2FullAccess 为用户提供完整的工作访问权限 Amazon EC2 Auto Scaling AWS帐户中的资源、启动模板以及其他EC2资源。或者,您可以创建自己的自定义 IAM 策略,为用户授予使用特定 API 操作的精细权限。

使用以下示例策略授予用户使用启动模板的权限,除非其他策略已授予用户执行此操作的权限。您不需要向仅创建的用户提供这些权限 Auto Scaling 来自启动配置的组 Amazon EC2 Auto Scaling)。

有关 IAM 政策 Amazon EC2,参见 IAM 政策Amazon EC2 用户指南(适用于 Linux 实例).

一个 IAM 创建或更新 Auto Scaling 使用启动模板的组必须具有使用 ec2:RunInstances 操作。没有此权限的用户会收到一个错误,说明他们未获得使用启动模板的授权。

请记住,用户权限 ec2:RunInstances 只有在一个 Auto Scaling 使用启动模板创建或更新组。对于 Auto Scaling 配置为使用 LatestDefault 启动模板,创建新版本的启动模板时,不会检查权限。要检查权限,用户必须将 Auto Scaling 组配置为使用特定版本的启动模板。

示例:使用资源级别权限控制访问

授予用户权限 Amazon EC2 允许您指定作为呼叫的一部分创建的资源的资源级别权限 ec2:RunInstances 操作,控制用户可以使用哪些资源。这是一种推荐做法。

以下示例使用资源级权限来限制对特定启动模板的访问。它还演示了其中一些可能的方法,通过这些方法可以控制在允许 ec2:RunInstances 权限时用户可以启动的实例的配置。

在此示例中,有四个语句:

  • 第一个语句限制用户对位于指定区域中且具有标签 的启动模板的访问权限。environment=test.

  • 第二个语句允许用户在创建时标记实例和卷。如果在启动模板中指定了标签,则需要此部分。

  • 第三个声明要求用户将实例发布到特定子网(subnet-1a2b3c4d),使用特定安全组(sg-1a2b3c4d),并使用特定的AMI(ami-1a2b3c4d)。它还允许用户访问启动实例所需的额外资源:网络接口和卷。

  • 第四个语句允许用户仅启动特定实例类型 () 的实例。t2.micro).

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "arn:aws-cn:ec2:region:123456789012:launch-template/*", "Condition": { "StringEquals": { "ec2:ResourceTag/environment": "test" } } }, { "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "arn:aws-cn:ec2:region:123456789012:*/*", "Condition": { "StringEquals": { "ec2:CreateAction": "RunInstances" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws-cn:ec2:region:123456789012:subnet/subnet-1a2b3c4d", "arn:aws-cn:ec2:region:123456789012:security-group/sg-1a2b3c4d", "arn:aws-cn:ec2:region:123456789012:network-interface/*", "arn:aws-cn:ec2:region:123456789012:volume/*", "arn:aws-cn:ec2:region::image/ami-1a2b3c4d" ] }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": "arn:aws-cn:ec2:region:123456789012:instance/*", "Condition": { "StringEquals": { "ec2:InstanceType": "t2.micro" } } } ] }

此外,您可以创建 IAM 策略限制用户访问,以便在创建和更新时无法使用启动配置 Auto Scaling 组。也可以要求他们设置要使用的特定版本,以确保 IAM 在启动实例时要完成的操作的权限,每时每次检查一次 Auto Scaling 已更新组以使用新版本。

如果用户指定启动模板,以下语句将授予用户创建或更新 Auto Scaling 组的权限。如果他们忽略了版本号以指定 LatestDefault 启动模板版本,或指定启动配置,操作失败。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup" ], "Resource": "*", "Condition": { "Bool": { "autoscaling:LaunchTemplateVersionSpecified": "true" } } }, { "Effect": "Deny", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup" ], "Resource": "*", "Condition": { "Null": { "autoscaling:LaunchConfigurationName": "false" } } } ] }

或者,您可以要求用户指定 LatestDefault 启动模板的版本,而不是模板的特定版本。为此,请更改 autoscaling:LaunchTemplateVersionSpecifiedfalse,如以下示例所示。

"Condition": { "Bool": { "autoscaling:LaunchTemplateVersionSpecified": "false" } }

示例:允许用户创建和管理启动模板和启动模板版本

您可以创建一个策略,以便为用户授予创建、修改、描述和删除启动模板和启动模板版本的权限。在向用户添加这些权限之前,请检查 控制启动模板的使用 部分 Amazon EC2 用户指南(适用于 Linux 实例). 有关其他示例策略,请参阅 示例: 使用启动模板Amazon EC2 用户指南(适用于 Linux 实例).

重要

对于配置为使用 LatestDefault 启动模板版本,在启动实例未检查时要完成的操作的权限 Amazon EC2 Auto Scaling 创建新版本的启动模板时。在为可以创建和管理启动模板版本的用户设置权限时,这是一个重要的考虑因素。

以下策略授予用户创建启动模板的权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:CreateLaunchTemplate", "Resource": "*" } ] }

示例:要求使用实例元数据服务版本2(IMDSv2)

重要

如果您需要要求对所有新实例使用 IMDSv2,您的 Auto Scaling 组必须使用启动模板。

为了提高安全性,您可以将用户的权限设置为要求使用需要 IMDSV2 的启动模板。有关详细信息,请参阅 配置实例元数据服务Amazon EC2 用户指南(适用于 Linux 实例).

以下策略指定用户无法调用 ec2:RunInstances 操作除非该实例也被选择使用IMDSv2(指示为 "ec2:MetadataHttpTokens":"required")。如果他们未指定实例需要IMDSv2,则他们获得 UnauthorizedOperation 当他们呼叫 ec2:RunInstances 操作。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "RequireImdsV2", "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": "arn:aws-cn:ec2:*:*:instance/*", "Condition": { "StringNotEquals": { "ec2:MetadataHttpTokens": "required" } } } ] }

要更新现有的 Auto Scaling 组,请确保它使用配置了实例元数据选项的新启动模板,或使用配置了实例元数据选项的新版本的当前启动模板。

提示

要强制启动使用新启动模板的替换实例,您可以终止组中的现有实例。Amazon EC2 Auto Scaling 立即开始启动新实例以替换您终止的实例。

或者,如果您使用扩展策略,则可以增加组的所需容量以启动新实例。如果满足扩展的策略条件,则 Auto Scaling 组会逐渐终止较旧的实例(取决于组的终止策略)。

其他必要权限

根据您希望支持的方案,您可以在 Action 一个 IAM 政策声明。

创建和更新 Auto Scaling 来自控制台的组,用户也必须具有以下权限: Amazon EC2:

  • ec2:DescribeLaunchTemplates

  • ec2:DescribeLaunchTemplateVersions

  • ec2:DescribeVpcs

  • ec2:DescribeSubnets

  • ec2:DescribeAvailabilityZones

如果没有这些额外的最低权限,则无法在 Auto Scaling 组向导中加载启动模板和网络选项,并且用户无法逐步通过向导使用启动模板启动实例。

您可以向策略添加更多操作,以便在向导中为用户提供更多选项。例如,您可以添加 Elastic Load Balancing API 操作的权限,以允许用户从向导的步骤 3 中的现有负载均衡器列表中进行选择。

使用 iam:PassRole 允许(或拒绝)用户将角色传递到 Amazon EC2 如果启动模板指定了一个实例配置文件, IAM 角色。没有此权限的用户会收到一个错误,说明他们未获得使用启动模板的授权。有关策略示例,请参阅控制 IAM 可以通过角色(使用Passrole).

要验证从 Amazon EC2 控制台,用户可能需要其他权限(例如, ec2:DescribeInstances 要查看实例, ec2:DescribeInstanceStatus 显示实例状态,或 ec2:DescribeTags 显示标记)。