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

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

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

  • 在组织的 AWS 账户下创建用户和组.

  • 为您的 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- 开头时创建启动配置他们可以仅当其名称以 t2micro- 开头时为 Auto Scaling 组指定启动配置。

{ "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-*" ] }] }