Auto Scaling
用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

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

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 用户指南

Auto Scaling 操作

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

"Action": "autoscaling:CreateAutoScalingGroup"

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

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

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

"Action": "autoscaling:*"

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

"Action": "autoscaling:Describe*"

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

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"

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

  • DescribeAccountLimits

  • DescribeAdjustmentTypes

  • DescribeAutoScalingGroups

  • DescribeAutoScalingInstances

  • DescribeAutoScalingNotificationTypes

  • DescribeLaunchConfigurations

  • DescribeLifecycleHooks

  • DescribeLifecycleHookTypes

  • DescribeLoadBalancers

  • DescribeLoadBalancerTargetGroups

  • DescribeMetricCollectionTypes

  • DescribeNotificationConfigurations

  • DescribePolicies

  • DescribeScalingActivities

  • DescribeScalingProcessTypes

  • DescribeScheduledActions

  • DescribeTags

  • DescribeTerminationPolicyTypes

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

"Resource": "*"

Auto Scaling 条件键

在创建策略时,您可指定策略应何时生效的条件。要表示条件,请使用预定义的条件键。有特定于 Auto Scaling 的条件键以及 AWS 范围内的条件键。

以下条件键是特定于 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

有关每个 AWS 服务支持的上下文键的列表以及 AWS 范围的策略键的列表,请参阅 IAM 用户指南 中的 AWS 服务操作和条件上下文键可用的全局条件键

支持的资源级权限

下表介绍了支持资源级权限的 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 用户。下面是适用于 Auto Scaling 的 AWS 托管策略。

  • AutoScalingConsoleFullAccess - 授予对控制台使用的针对 Auto Scaling 资源的所有 API 操作的访问权限。这包括针对 Auto Scaling 的所有 API 操作以及针对 Amazon EC2、CloudWatch、Elastic Load Balancing 和 Amazon SNS 的选定 API 操作。

  • AutoScalingConsoleReadOnlyAccess - 授予对控制台使用的针对 Auto Scaling 资源的只读 API 操作的访问权限。这包括针对 Auto Scaling 的所有只读 API 操作以及针对 Amazon EC2、CloudWatch、Elastic Load Balancing 和 Amazon SNS 的选定只读 API 操作。

  • AutoScalingFullAccess - 授予对所有 Auto Scaling API 操作的访问权限。

  • AutoScalingReadOnlyAccess - 授予对只读 Auto Scaling API 操作的访问权限。

客户管理的策略

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

示例:需要启动模板

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

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

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

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

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

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

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

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

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

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

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

Copy
{ "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 字符串的所有 Auto Scaling 操作。

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

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

Copy
{ "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 的所有 Auto Scaling 操作,前提是它们未指定小于 1 的最小大小或大于 10 的最大大小。由于 Describe 操作不支持资源级权限,因此您必须在不带条件的单独语句中必须指定它们。

Copy
{ "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 标签 (不能指定其他标签)。

Copy
{ "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 的标签。

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

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

Copy
{ "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 操作不支持资源级权限,因此您必须在不带条件的单独语句中指定它们。

Copy
{ "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 组的容量。

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

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

Copy
{ "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 组的容量。

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