为您的 Amazon A EC2 uto Scaling 资源配置删除保护 - Amazon A EC2 uto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

为您的 Amazon A EC2 uto Scaling 资源配置删除保护

通过配置多层保护,保护您的 Amazon A EC2 uto Scaling 基础设施免遭意外删除。Auto Scaling 提供了多种方法来防止您的 Auto Scaling 组及其管理的亚马逊 EC2 实例删除不必要的资源。

配置 Auto Scaling 群组删除保护

删除保护是一项资源级设置,可防止您的 Amazon A EC2 uto Scaling 群组被意外删除。启用删除保护后,会阻止 DeleteAutoScalingGroupAPI 操作成功,要求您先将删除保护设置更新到限制较少的级别,然后才能删除 Auto Scaling 组。

Amazon A EC2 uto Scaling 提供三个级别的删除保护:

(默认)

未启用删除保护,这意味着无论是否使用该ForceDelete选项,都可以删除您的 Auto Scaling 组。使用时,由您ForceDelete的 Auto Scaling 组管理的所有 Amazon EC2 实例也将被强制终止,而无需执行终止生命周期挂钩。

防止强制删除

使用该ForceDelete选项时,无法删除您的 Auto Scaling 群组。此配置允许删除空的 Auto Scaling 组(没有实例的组)。对于希望防止大规模实例终止但允许清理空组的生产工作负载,建议使用此选项。

阻止所有删除

无论是否使用该ForceDelete选项,都无法删除您的 Auto Scaling 群组。此选项为防止意外删除提供了最强的保护。在删除您的 Auto Scaling 组之前,需要明确禁用删除保护。对于很少或永远不应该删除的任务关键型 Auto Scaling 组,建议使用此选项。

删除保护的工作原理

在启用删除保护的情况下尝试 DeleteAutoScalingGroupAPI 操作时:

  1. Amazon A EC2 uto Scaling 会在处理请求之前验证删除保护设置。

  2. 如果配置的删除保护级别阻止了删除尝试,则 Amazon A EC2 uto Scaling 会返回ValidationError

  3. 您的 Auto Scaling 组及其亚马逊 EC2 实例保持不变。

  4. 必须先将删除保护设置更新到限制较少的级别,然后才能删除 Auto Scaling 组。

删除保护不会阻止其他操作,例如:

  • 更新 Auto Scaling 组配置。

  • 终止单个实例。

  • 缩放操作(手动或自动)。

  • 暂停或恢复进程。

有关如何优雅地处理实例终止的更多信息,请参阅设计您的应用程序以妥善处理实例终止

配置删除保护

在创建 Auto Scaling 组或更新现有 Auto Scaling 组的设置时,可以设置删除保护。

Console
创建具有删除保护的 Auto Scaling 组
  1. 在上打开亚马逊 EC2 控制台 https://console.aws.amazon.com/ec2/,然后从导航窗格中选择 A uto Scaling Gro ups。

  2. 选择 Create Auto Scaling group(创建 Auto Scaling 组)。

  3. 完成您的 Auto Scaling 组的配置步骤。

  4. 配置群组大小和缩放比例页面上,展开其他设置

  5. 对于 Auto Scaling 组删除保护,请选择所需的保护级别:

    • -无删除保护(默认)

    • 防止强制删除-阻止强制删除操作

    • 阻止所有删除-阻止所有删除操作

  6. 完成其余步骤以创建您的 Auto Scaling 组。

更新现有 Auto Scaling 组的删除保护
  1. 在上打开亚马逊 EC2 控制台 https://console.aws.amazon.com/ec2/,然后从导航窗格中选择 A uto Scaling Gro ups。

  2. 选中您的自动扩缩组旁边的复选框。

  3. 选择 Actions(操作)和 Edit(编辑)。

  4. “其他设置” 下,更新 Auto Scaling 组删除保护设置。

  5. 选择更新

Amazon CLI
创建具有删除保护的 Auto Scaling 组

使用带--deletion-protection参数的create-auto-scaling-group命令:

aws autoscaling create-auto-scaling-group \ --auto-scaling-group-name my-asg \ --launch-template LaunchTemplateName=my-template,Version='$Latest' \ --min-size 1 \ --max-size 5 \ --desired-capacity 2 \ --vpc-zone-identifier "subnet-12345678,subnet-87654321" \ --deletion-protection prevent-force-deletion

的有效值--deletion-protection为:none| prevent-force-deletion | prevent-all-deletion

更新现有 Auto Scaling 组的删除保护

使用 update-auto-scaling-group 命令:

aws autoscaling update-auto-scaling-group \ --auto-scaling-group-name my-asg \ --deletion-protection prevent-all-deletion
禁用删除保护

将删除保护设置为none

aws autoscaling update-auto-scaling-group \ --auto-scaling-group-name my-asg \ --deletion-protection none
验证删除保护状态

使用 describe-auto-scaling-groups 命令:

aws autoscaling describe-auto-scaling-groups \ --auto-scaling-group-names my-asg

使用 IAM 策略控制删除权限

使用 Amazon Identity and Access Management (IAM) 策略控制哪些用户和角色可以删除 Auto Scaling 群组。基于 IAM 的控制通过限制身份级别的权限来提供额外的安全层。

当您想执行以下操作时,IAM 策略特别有用:

  • 允许不同的用户对不同级别的 Auto Scaling 操作进行访问。

  • 阻止特定用户使用该ForceDelete选项,即使他们可以执行其他 Auto Scaling 操作。

  • 将删除权限限制为特定的 Auto Scaling 群组。

以下策略仅允许在自动扩缩组具有标签时删除该组environment=development

JSON
{ "Version":"2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "autoscaling:DeleteAutoScalingGroup", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/environment": "development" } } }] }

以下策略使用autoscaling:ForceDelete条件密钥来控制对 DeleteAutoScalingGroup API 操作的访问权限。这可能会阻止某些用户使用该ForceDelete操作,该操作会终止 Auto Scaling 组中的所有 Amazon EC2 实例。

JSON
{ "Version":"2012-10-17", "Statement": [{ "Effect": "Deny", "Action": "autoscaling:DeleteAutoScalingGroup", "Resource": "*", "Condition": { "Bool": { "autoscaling:ForceDelete": "true" } } }] }

或者,如果您不使用条件键来控制对 Auto Scaling 组 ARNs 的访问,则可以改为指定Resource元素中的资源来控制访问权限。

以下策略向用户授予使用 DeleteAutoScalingGroup API 操作的权限,但仅适用于名称以开头的 Auto Scaling 群组devteam-

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "autoscaling:DeleteAutoScalingGroup", "Resource": "arn:aws:autoscaling:us-east-1:111122223333:autoScalingGroup:*:autoScalingGroupName/devteam-*" } ] }

您也可以 ARNs 通过将它们包含在列表中来指定多个。包括 UUID 可确保将访问权授予特定的 Auto Scaling 组。新群组的 UUID 与已删除的同名群组的 UUID 不同。

"Resource": [ "arn:aws:autoscaling:region:account-id:autoScalingGroup:uuid:autoScalingGroupName/devteam-1", "arn:aws:autoscaling:region:account-id:autoScalingGroup:uuid:autoScalingGroupName/devteam-2", "arn:aws:autoscaling:region:account-id:autoScalingGroup:uuid:autoScalingGroupName/devteam-3" ]

有关 Amazon A EC2 uto Scaling 的 IAM 策略的其他示例,包括控制删除权限的策略,请参阅基于身份的策略示例