Amazon EC2 Auto Scaling
用户指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

控制对您的 Amazon EC2 Auto Scaling 资源的访问权

Amazon EC2 Auto Scaling 与 AWS Identity and Access Management (IAM) 集成,后者是一种服务,允许您执行以下操作:

  • Create users and groups under your organization's AWS account

  • 为您的 AWS 账户下的每个用户分配唯一的安全凭证

  • 控制每个用户使用 AWS 资源执行任务的权限

  • 允许另一 AWS 账户的用户共享 AWS 资源

  • 创建 AWS 账户角色并定义可以担任这些角色的用户或服务

  • 借助企业的现有身份验证,授予使用 AWS 资源执行任务的权限

例如,您可创建 IAM 策略向 Managers 组授予仅使用 DescribeAutoScalingGroupsDescribeLaunchConfigurationsDescribeScalingActivitiesDescribePolicies API 操作的权限。随后,Managers 组中的用户可以对任何 Auto Scaling 组和启动配置执行这些操作。

您还可创建 IAM 策略来将访问权限制到一个特定的 Auto Scaling 组或启动配置。

有关更多信息,请参阅 Identity and Access Management (IAM)IAM 用户指南

Amazon EC2 Auto Scaling 操作

您可在 IAM 策略中指定所有 Amazon EC2 Auto Scaling 操作。请使用以下前缀为操作命名:autoscaling:。例如:

"Action": "autoscaling:CreateAutoScalingGroup"

要在单个语句中指定多项操作,请使用方括号将操作括起来并以逗号分隔,如下所示:

"Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup" ]

还可使用通配符。例如,使用 autoscaling:* 指定所有 Amazon EC2 Auto Scaling 操作。

"Action": "autoscaling:*"

使用 Describe:* 指定名称以 Describe 开头的所有操作。

"Action": "autoscaling:Describe*"

有关更多信息,请参阅 Amazon EC2 Auto Scaling API 参考 中的 Amazon EC2 Auto Scaling 操作

所需权限

调用以下操作时,您必须向 IAM 用户授予调用操作本身的权限,以及调用 Amazon EC2 或 IAM 中的其他操作的权限。

CreateLaunchConfiguration
  • autoscaling:CreateLaunchConfiguration

  • ec2:DescribeImages

  • ec2:DescribeInstances

  • ec2:DescribeInstanceAttribute

  • ec2:DescribeKeyPairs

  • ec2:DescribeSecurityGroups

  • ec2:DescribeSpotInstanceRequests

  • ec2:DescribeVpcClassicLink

CreateAutoScalingGroup
  • autoscaling:CreateAutoScalingGroup

  • iam:CreateServiceLinkedRole

Amazon EC2 Auto Scaling 资源

对于支持资源级权限的操作,您可控制允许用户访问的 Auto Scaling 组或启动配置。

要指定 Auto Scaling 组,您必须指定其 Amazon 资源名称 (ARN),如下所示:

"Resource": "arn:aws-cn:autoscaling:region:123456789012:autoScalingGroup:uuid:autoScalingGroupName/asg-name"

要使用 CreateAutoScalingGroup 指定 Auto Scaling 组,您必须将 UUID 替换为 *,如下所示:

"Resource": "arn:aws-cn:autoscaling:region:123456789012:autoScalingGroup:*:autoScalingGroupName/asg-name"

要指定启动配置,您必须指定其 ARN,如下所示:

"Resource": "arn:aws-cn:autoscaling:region:123456789012:launchConfiguration:uuid:launchConfigurationName/lc-name"

要使用 CreateLaunchConfiguration 指定启动配置,您必须将 UUID 替换为 *,如下所示:

"Resource": "arn:aws-cn:autoscaling:region:123456789012:launchConfiguration:*:launchConfigurationName/lc-name"

以下 Amazon EC2 Auto Scaling 操作不支持资源级权限:

  • DescribeAccountLimits

  • DescribeAdjustmentTypes

  • DescribeAutoScalingGroups

  • DescribeAutoScalingInstances

  • DescribeAutoScalingNotificationTypes

  • DescribeLaunchConfigurations

  • DescribeLifecycleHooks

  • DescribeLifecycleHookTypes

  • DescribeLoadBalancers

  • DescribeLoadBalancerTargetGroups

  • DescribeMetricCollectionTypes

  • DescribeNotificationConfigurations

  • DescribePolicies

  • DescribeScalingActivities

  • DescribeScalingProcessTypes

  • DescribeScheduledActions

  • DescribeTags

  • DescribeTerminationPolicyTypes

对于不支持资源级权限的操作,您必须将“*”用作资源。

"Resource": "*"

Amazon EC2 Auto Scaling 条件键

在创建策略时,您可指定控制策略生效时间的条件。每个条件都包含一个或多个键值对。有全局条件键和特定于服务的条件键。

以下条件键是特定于 Amazon EC2 Auto Scaling 的:

  • autoscaling:ImageId

  • autoscaling:InstanceType

  • autoscaling:LaunchConfigurationName

  • autoscaling:LaunchTemplateVersionSpecified

  • autoscaling:LoadBalancerNames

  • autoscaling:MaxSize

  • autoscaling:MinSize

  • autoscaling:ResourceTag/key

  • autoscaling:SpotPrice

  • autoscaling:TargetGroupARNs

  • autoscaling:VPCZoneIdentifiers

有关全局条件键的更多信息,请参阅 IAM 用户指南 中的 AWS 全局条件上下文键

支持的资源级权限

下表介绍了支持资源级权限的 Amazon EC2 Auto Scaling API 操作,以及每个操作支持的条件键和资源。

API 操作 条件密钥 资源 ARN
AttachInstances autoscaling:ResourceTag/key Auto Scaling 组
AttachLoadBalancers

autoscaling:LoadBalancerNamesautoscaling:ResourceTag/key

Auto Scaling 组
AttachLoadBalancerTargetGroups

autoscaling:ResourceTag/keyautoscaling:TargetGroupARNs

Auto Scaling 组
CompleteLifecycleAction autoscaling:ResourceTag/key Auto Scaling 组
CreateAutoScalingGroup

autoscaling:LaunchConfigurationNameautoscaling:LaunchTemplateVersionSpecifiedautoscaling:LoadBalancerNamesautoscaling:MaxSizeautoscaling:MinSizeautoscaling:ResourceTag/keyautoscaling:TargetGroupARNsautoscaling:VPCZoneIdentifiersaws:RequestTag/keyaws:TagKeys

Auto Scaling 组 (将 UUID 替换为 *)
CreateLaunchConfiguration

autoscaling:ImageIdautoscaling:InstanceTypeautoscaling:SpotPrice

启动配置 (将 UUID 替换为 *)
CreateOrUpdateTags

autoscaling:ResourceTag/keyaws:RequestTag/keyaws:TagKeys

Auto Scaling 组
DeleteAutoScalingGroup autoscaling:ResourceTag/key Auto Scaling 组
DeleteLaunchConfiguration 启动配置
DeleteLifecycleHook autoscaling:ResourceTag/key Auto Scaling 组
DeleteNotificationConfiguration autoscaling:ResourceTag/key Auto Scaling 组
DeletePolicy autoscaling:ResourceTag/key Auto Scaling 组
DeleteScheduledAction autoscaling:ResourceTag/key Auto Scaling 组
DeleteTags

autoscaling:ResourceTag/keyaws:RequestTag/keyaws:TagKeys

Auto Scaling 组
DetachInstances autoscaling:ResourceTag/key Auto Scaling 组
DetachLoadBalancers

autoscaling:LoadBalancerNamesautoscaling:ResourceTag/key

Auto Scaling 组
DetachLoadBalancerTargetGroups

autoscaling:ResourceTag/keyautoscaling:TargetGroupARNs

Auto Scaling 组
DisableMetricsCollection autoscaling:ResourceTag/key Auto Scaling 组
EnableMetricsCollection autoscaling:ResourceTag/key Auto Scaling 组
EnterStandby autoscaling:ResourceTag/key Auto Scaling 组
ExecutePolicy autoscaling:ResourceTag/key Auto Scaling 组
ExitStandby autoscaling:ResourceTag/key Auto Scaling 组
PutLifecycleHook autoscaling:ResourceTag/key Auto Scaling 组
PutNotificationConfiguration autoscaling:ResourceTag/key Auto Scaling 组
PutScalingPolicy autoscaling:ResourceTag/key Auto Scaling 组
PutScheduledUpdateGroupAction

autoscaling:MaxSizeautoscaling:MinSizeautoscaling:ResourceTag/key

Auto Scaling 组
RecordLifecycleActionHeartbeat autoscaling:ResourceTag/key Auto Scaling 组
ResumeProcesses autoscaling:ResourceTag/key Auto Scaling 组
SetDesiredCapacity autoscaling:ResourceTag/key Auto Scaling 组
SetInstanceHealth autoscaling:ResourceTag/key Auto Scaling 组
SetInstanceProtection autoscaling:ResourceTag/key Auto Scaling 组
SuspendProcesses autoscaling:ResourceTag/key Auto Scaling 组
TerminateInstanceInAutoScalingGroup autoscaling:ResourceTag/key Auto Scaling 组
UpdateAutoScalingGroup

autoscaling:LaunchConfigurationNameautoscaling:LaunchTemplateVersionSpecifiedautoscaling:MaxSizeautoscaling:MinSizeautoscaling:ResourceTag/keyautoscaling:VPCZoneIdentifiers

Auto Scaling 组

预定义的 AWS 托管策略

AWS 创建的托管策略将授予针对常用案例的必要权限。您可以根据您的 IAM 用户所需的访问权限将这些策略附加到这些用户。每个策略都授予了对所有或部分适用于 Amazon EC2 Auto Scaling 的 API 操作的访问权限,以及对适用于 Amazon EC2、CloudWatch、Elastic Load Balancing、IAM 和 Amazon SNS 的其他 API 操作的访问权限。

下面是适用于 Amazon EC2 Auto Scaling 的 AWS 托管策略:

  • AutoScalingConsoleFullAccess - 使用 AWS 管理控制台授予对 Amazon EC2 Auto Scaling 的完全访问权限。

  • AutoScalingConsoleReadOnlyAccess - 使用 AWS 管理控制台授予对 Amazon EC2 Auto Scaling 的只读访问权限。

  • AutoScalingFullAccess - 授予对 Amazon EC2 Auto Scaling 的完全访问权限。

  • AutoScalingReadOnlyAccess - 授予对 Amazon EC2 Auto Scaling 的只读访问权限。

客户管理的策略

您可以创建自定义 IAM 策略来向 IAM 用户授予对特定资源执行特定操作的权限。以下是 Amazon EC2 Auto Scaling 的示例策略。

示例:需要启动模板

创建或更新 Auto Scaling 组时,您可以指定启动模板、启动配置或 EC2 实例。在指定启动模板时,您可以将 Auto Scaling 组配置为在启动实例时使用特定的启动模板版本、最新版本或默认版本。

autoscaling:LaunchTemplateVersionSpecified 条件键是一个布尔值,设置如下:

  • null - 如果未指定启动模板

  • true - 如果使用特定的启动模板版本

  • false - 如果使用最新或默认启动模板版本

以下策略授予用户使用特定启动模板版本创建或更新 Auto Scaling 组以及访问启动模板中指定的 Amazon EC2 资源的权限。

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

示例:创建并管理启动配置

以下策略允许用户使用在名称中包含 LaunchConfiguration 字符串的所有 Amazon EC2 Auto Scaling 操作。或者,您还可以明确地列出每项操作,而不是使用通配符。但是,此策略不会自动应用于其名称中包含 LaunchConfiguration 的任何新 Amazon EC2 Auto Scaling 操作。

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

以下策略授权用户在实例类型为 t2.micro 且启动配置的名称以 t2micro- 开头时创建启动配置,并为 Auto Scaling 组 (仅当其名称以 t2micro- 开头时) 指定启动配置。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "autoscaling:CreateLaunchConfiguration", "Resource": [ "arn:aws-cn:autoscaling:us-west-2:123456789012:launchConfiguration:*:launchConfigurationName/t2micro-*" ], "Condition": { "StringEquals": { "autoscaling:InstanceType": "t2.micro" } } }, { "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup" ], "Resource": "*", "Condition": { "StringLikeIfExists": { "autoscaling:LaunchConfigurationName": "t2micro-*" } } }] }

示例:创建并管理 Auto Scaling 组和扩展策略

以下策略允许用户使用在名称中包含 Scaling 字符串的所有 Amazon EC2 Auto Scaling 操作。

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

以下策略授权用户使用其名称中包含 Scaling 字符串的所有 Amazon EC2 Auto Scaling 操作,前提是 Auto Scaling 组具有标签 purpose=webserver。由于 Describe 操作不支持资源级权限,因此,您必须在不带条件的单独语句中必须指定它们。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["autoscaling:*Scaling*"], "Resource": "*", "Condition": { "StringEquals": { "autoscaling:ResourceTag/purpose": "webserver" } } }, { "Effect": "Allow", "Action": "autoscaling:Describe*Scaling*", "Resource": "*" }] }

以下策略授权用户使用其名称中包含字符串 Scaling 的所有 Amazon EC2 Auto Scaling 操作,前提是它们未指定小于 1 的最小大小或大于 10 的最大大小。由于 Describe 操作不支持资源级权限,因此您必须在不带条件的单独语句中必须指定它们。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["autoscaling:*Scaling*"], "Resource": "*", "Condition": { "NumericGreaterThanEqualsIfExists": { "autoscaling:MinSize": 1 }, "NumericLessThanEqualsIfExists": { "autoscaling:MaxSize": 10 } } }, { "Effect": "Allow", "Action": "autoscaling:Describe*Scaling*", "Resource": "*" }] }

示例:使用标签控制访问

要授予用户创建 Auto Scaling 组或为该组添加标签 (仅当用户指定特定标签时) 的权限,请使用 aws:RequestTag 条件键。要仅允许特定的标签键,请使用带 ForAnyValue 修饰符的 aws:TagKeys 条件键。

以下策略需要用户使用标签 purpose=webservercost-center=cc123 标记任何 Auto Scaling 组,并且仅允许 purposecost-center 标签 (不能指定其他标签)。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:CreateOrUpdateTags" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/purpose": "webserver", "aws:RequestTag/cost-center": "cc123" }, "ForAllValues:StringEquals": { "aws:TagKeys": ["purpose", "cost-center"] } } }] }

以下策略需要用户在请求中指定包含键 environment 的标签。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:CreateOrUpdateTags" ], "Resource": "*", "Condition": { "StringLike": { "aws:RequestTag/environment": "*" } } }] }

以下策略需要用户在请求中指定至少一个标签,并且仅允许 cost-centerowner 键。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:CreateOrUpdateTags" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": ["cost-center", "owner"] } } }] }

以下策略授权用户访问具有标签 allowed=true 的 Auto Scaling 组,并允许它们仅应用标签 environment=test。由于启动配置不支持标签并且 Describe 操作不支持资源级权限,因此您必须在不带条件的单独语句中指定它们。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "autoscaling:*Scaling*", "Resource": "*", "Condition": { "StringEquals": { "autoscaling:ResourceTag/allowed": "true" }, "StringEqualsIfExists": { "aws:RequestTag/environment": "test" }, "ForAllValues:StringEquals": { "aws:TagKeys": "environment" } } }, { "Effect": "Allow", "Action": [ "autoscaling:*LaunchConfiguration*", "autoscaling:Describe*" ], "Resource": "*" }] }

示例:更改 Auto Scaling 组的容量

以下策略授权用户使用 SetDesiredCapacity 操作更改任何 Auto Scaling 组的容量。

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

以下策略授权用户使用 SetDesiredCapacity 操作更改指定的 Auto Scaling 组的容量。请注意,包括 UUID 可确保将访问权授予特定的 Auto Scaling 组。如果您要删除 Auto Scaling 组并创建一个新的同名组,新组的 UUID 将与原始组的 UUID 不同。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "autoscaling:SetDesiredCapacity", "Resource": [ "arn:aws-cn:autoscaling:us-west-2:123456789012:autoScalingGroup:7fe02b8e-7442-4c9e-8c8e-85fa99e9b5d9:autoScalingGroupName/group-1", "arn:aws-cn:autoscaling:us-west-2:123456789012:autoScalingGroup:9d8e8ea4-22e1-44c7-a14d-520f8518c2b9:autoScalingGroupName/group-2", "arn:aws-cn:autoscaling:us-west-2:123456789012:autoScalingGroup:60d6b363-ae8b-467c-947f-f1d308935521:autoScalingGroupName/group-3" ] }] }

以下策略授权用户使用 SetDesiredCapacity 操作更改其名称以 group- 开头的任何 Auto Scaling 组的容量。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "autoscaling:SetDesiredCapacity", "Resource": [ "arn:aws-cn:autoscaling:us-west-2:123456789012:autoScalingGroup:*:autoScalingGroupName/group-*" ] }] }