ALIYUN::ROS::ResourceCleaner

ALIYUN::ROS::ResourceCleaner类型用于创建资源清理器。

支持清理的资源类型

说明

ROS会持续增加支持清理的资源。您可以调用GetFeatureDetails接口获取支持清理的资源列表。

云服务

资源类型

ACM

ACM:Namespace

ACTIONTRAIL

ACTIONTRAIL:Trail

ALB

  • ALB:Acl

  • ALB:HealthCheckTemplate

  • ALB:LoadBalancer

  • ALB:SecurityPolicy

  • ALB:ServerGroup

ApiGateway

  • ApiGateway:App

  • ApiGateway:Group

  • ApiGateway:Instance

  • ApiGateway:LogConfig

  • ApiGateway:Plugin

  • ApiGateway:Signature

  • ApiGateway:TrafficControl

ARMS

  • ARMS:AlertContact

  • ARMS:AlertContactGroup

  • ARMS:RetcodeApp

ASM

ASM:ServiceMesh

CAS

CAS:Certificate

CDDC

CDDC:DedicatedHostGroup

CDN

CDN:Domain

ClickHouse

ClickHouse:DBCluster

CloudPhone

CloudPhone:InstanceGroup

CMS

  • CMS:Contact

  • CMS:ContactGroup

  • CMS:MetricRuleTemplate

  • CMS:MonitorGroup

  • CMS:SiteMonitor

CS

CS:Cluster

CR

CR:Instance

DATAHUB

DATAHUB:Project

DCDN

DCDN:Domain

DFS

  • DFS:AccessGroup

  • DFS:FileSystem

DirectMail

  • DirectMail:Domain

  • DirectMail:Ipfilter

DNS

  • DNS:Domain

  • DNS:DomainGroup

DRDS

DRDS:DrdsInstance

ECI

  • ECI:ContainerGroup

  • ECI:ImageCache

ECS

  • ECS:AutoProvisioningGroup

  • ECS:AutoSnapshotPolicy

  • ECS:Command

  • ECS:CustomImage

  • ECS:DedicatedHost

  • ECS:DeploymentSet

  • ECS:Disk

  • ECS:HpcCluster

  • ECS:Instance

  • ECS:LaunchTemplate

  • ECS:NetworkInterface

  • ECS:PrefixList

  • ECS:SSHKeyPair

  • ECS:SecurityGroup

  • ECS:Snapshot

VPC

  • VPC:AnycastEIP

  • VPC:CommonBandwidthPackage

  • VPC:DhcpOptionsSet

  • VPC:EIP

  • VPC:EipSegment

  • VPC:FlowLog

  • VPC:HaVip

  • VPC:Ipv6Gateway

  • VPC:NatGateway

  • VPC:NetworkAcl

  • VPC:RouteTable

  • VPC:VPC

  • VPC:VSwitch

RAM

  • RAM:Group

  • RAM:ManagedPolicy

  • RAM:Role

  • RAM:SAMLProvider

  • RAM:User

RDS

RDS:DBInstance

ROS

ROS:Template

SLB

  • SLB:AccessControl

  • SLB:Certificate

  • SLB:LoadBalancer

ENS

ENS:Instance

ESS

  • ESS:AlarmTask

  • ESS:ScalingGroup

  • ESS:ScheduledTask

ECI

  • ECI:ContainerGroup

  • ECI:ImageCache

FNF

FNF:Flow

GPDB

GPDB:DBInstance

KMS

  • KMS:Key

  • KMS:Secret

KAFKA

KAFKA:Instance

MONGODB

MONGODB:Instance

Memcache

Memcache:Instance

MSE

  • MSE:Cluster

  • MSE:Gateway

MNS

  • MNS:Topic

  • MNS:Queue

REDIS

REDIS:Instance

SLS

SLS:Project

FC

FC:Service

NAS

  • NAS:AccessGroup

  • NAS:FileSystem

NLB

  • NLB:LoadBalancer

  • NLB:ServerGroup

OTS

OTS:Instance

OSS

OSS:Bucket

OOS

  • OOS:Execution

  • OOS:Template

  • OOS:PatchBaseline

  • OOS:Parameter

  • OOS:SecretParameter

POLARDB

POLARDB:DBCluster

PrivateLink

  • PrivateLink:VpcEndpoint

  • PrivateLink:VpcEndpointService

DRDS

DRDS:DrdsInstance

ROCKETMQ

ROCKETMQ:Instance

ADB

ADB:DBCluster

EDAS

  • EDAS:Application

  • EDAS:Cluster

EMR

EMR:Cluster

ElasticSearch

ElasticSearch:Instance

SearchEngine

SearchEngine:Instance

HBR

HBR:DBVault

PVTZ

PVTZ:Zone

SAE

  • SAE:Application

  • SAE:Namespace

SAG

  • SAG:ACL

  • SAG:Qos

TSDB

TSDB:HiTSDBInstance

WAF

WAF:Domain

语法

{
  "Type": "ALIYUN::ROS::ResourceCleaner",
  "Properties": {
    "Action": String,
    "ResourceFilters": List,
    "Resources": List,
    "Mode": String,
    "FailureOption": String,
    "CleanUpRetryCount": Integer,
    "CleanUpTimeout": Number,
    "ExcludedResources": List,
    "CleanUpAlgorithm": String,
    "ResourceTypeOrder": List,
    "DisabledSideEffects": List
  }
}

属性

属性名称

类型

必须

允许更新

描述

约束

Action

String

资源清理动作。

取值:

  • Scan:资源扫描。扫描出需要清理的资源。

  • CleanUp:资源清理。清理扫描出的资源。要求已经扫描过。创建资源清理器时,不允许指定为该值,只能在更新时指定。

  • Scan+CleanUp:先进行资源扫描,再进行资源清理。

  • ScanWhenCreatingAndUpdating +CleanUpWhenDeleting:创建或更新资源清理器时进行资源扫描,删除资源清理器时进行资源清理。

ResourceFilters

List

资源过滤器列表。

资源清理器使用过滤器扫描出所有需要进行清理的资源。

过滤器列表最大长度为100。

只能指定ResourceFilters或Resources中的一个。

如果在更新资源清理器时,资源过滤器列表发生改变,则资源清理器会重新进行资源扫描。如果此时Action为CleanUp,则会引发失败。

过滤器有两种过滤行为(Effect):Allow和Deny。其工作方式如下(数字越小优先级越高):

  1. 被任意一个Deny过滤器命中的资源不会被清理。

  2. 被至少一个Allow过滤器命中的资源才会被清理。

更多信息,请参见ResourceFilters属性

Resources

List

要清理的资源列表。

列表长度:1~1000。

只能指定ResourceFilters或Resources中的一个。

更多信息,请参见Resources属性

Mode

String

资源清理器运行模式。

取值:

  • Strict:任何资源扫描或资源清理失败会导致资源清理器失败。

  • Loose(默认值):只有极少量资源扫描或资源清理失败会导致资源清理器失败。大多数扫描失败会被忽略,失败信息可以在资源输出ScanErrors和ResourceDetails中找到。大多数清理失败会被忽略,失败信息可以在资源输出ResourceDetails中找到

FailureOption

String

资源清理失败时依赖资源的选项

取值:

  • Normal(默认值):资源清理失败不会影响依赖的资源。

  • Fast:资源清理失败会引起依赖的资源失败。

说明

依赖是指删除依赖,而非创建依赖。

CleanUpRetryCount

Integer

清理资源时的最大重试次数。

取值范围:1~6。

默认值为:1,表示不重试。

触发重试条件如下:(满足任意一项)

  • 存在资源清理失败。

  • 清理超时。

CleanUpTimeout

Number

清理资源时的超时时间。

取值范围:60~14400。

单位:秒。

默认值:3600。

ExcludedResources

List

待清理资源中要排除的资源列表。

列表长度:1~1000。

每一项只能排除一个资源。如果存在歧义,指向了多个资源,则会引发失败。指定更多字段消除歧义。

更多信息,请参见ExcludedResources属性

CleanUpAlgorithm

String

资源清理算法。

取值:

  • ResourceDependency(默认值):按照资源的依赖关系进行清理。

  • ResourceTypeOrder:按照资源类型顺序从前往后进行清理。可以使用ResourceTypeOrder属性指定资源类型顺序。如果未指定,则使用系统默认顺序,系统默认顺序包含所有支持的资源类型。

ResourceTypeOrder

List

资源类型清理顺序。

列表长度:1~1000。

当CleanUpAlgorithm取值为ResourceTypeOrder时,本参数生效。

列表中未指定的资源类型相关的资源不会进行扫描或清理。

关于资源类型可选值,请参见支持清理的资源类型

DisabledSideEffects

List

要禁用的副作用列表。

列表长度:1~50。

列表项由字母、数字和模糊匹配字符组成,列表项长度范围:1-100。

模糊匹配仅支持*?字符。

清理部分类型资源的时候会产生一定的副作用,可以通过调用GetFeatureDetails接口进行查询。

ResourceFilters语法

"ResourceFilters": [
  {
    "IncludeDeletionProtection": Boolean,
    "ResourceTypePatterns": List,
    "ResourceIds": List,
    "RegionIds": List,
    "ResourceGroupIds": List,
    "Effect": String,
    "ResourceNamePatterns": List,
    "Tags": List
  }
]

ResourceFilters属性

属性名称

类型

必须

允许更新

描述

约束

IncludeDeletionProtection

Boolean

删除保护过滤。

取值:

  • false:开启删除保护的资源不通过此项过滤。

  • true(默认值):开启删除保护的资源通过此项过滤。

ResourceTypePatterns

List

资源类型模糊匹配过滤列表。关于资源类型,请参见支持清理的资源类型

列表长度:1~100。

当资源类型匹配列表中任意一项时,则通过此项过滤。

模糊匹配仅支持*?字符。

列表中每一项的格式为Service:Type,列表项长度范围:3-100。Service由字母和模糊匹配字符组成。Type由字母、数字和模糊匹配字符组成。

ResourceIds

List

资源ID过滤列表。

列表长度:1~100。

当资源匹配列表中的任意一个资源ID时,则通过此项过滤。

列表项长度范围:1-256。

RegionIds

List

地域过滤列表。

列表长度:1~100。

当资源所在地域匹配列表中的任意一个地域时,则通过此项过滤。

列表项长度范围:1-64。

ResourceGroupIds

List

资源组过滤列表。

列表长度:1~100。

当资源属于列表中的任意一项资源组时,则通过此项过滤。

列表项长度范围:1-256。

Effect

String

过滤行为。

取值:

  • Deny:通过所有过滤项的资源不会被清理。

  • Allow:通过所有过滤项的资源会被清理。

    说明

    如果资源通过此过滤器,但也通过了Deny过滤器,则仍然不会被清理。

ResourceNamePatterns

List

资源名称模糊匹配过滤列表。

列表长度:1~100。

当资源名称匹配列表中任意一项时,则通过此项过滤。

模糊匹配仅支持*?字符。

资源名称仅支持字母、数字、中文、空格、_-和模糊匹配字符。

列表项长度范围:1-100。

Tags

List

标签过滤列表。支持自定义标签和系统标签。

列表长度:1~100。

工作方式如下:

  • 对于某一个过滤标签键(Key),只要资源的标签中存在该标签键,且资源相应的标签值与相应的过滤标签值(Value)相等,则该资源通过该过滤标签键(Key)的过滤。

    说明
    1. 如果存在多个过滤标签值(Value),则只需要与其中之一相等,就通过该过滤标签键(Key)的过滤。

    2. 如果存在一个标签过滤项,未指定过滤标签值,则只需要资源存在该标签键,就通过该过滤标签键(Key)的过滤。

  • 只有通过所有不相同的过滤标签键(Key)的过滤,才能通过此项过滤。

更多信息,请参见Tags属性

Tags语法

"Tags": [
  {
    "Value": String,
    "Key": String
  }
]

Tags属性

属性名称

类型

必须

允许更新

描述

约束

Value

String

标签值。

长度:0-256。

说明

未指定该值与指定为空字符串不等价。

Key

String

标签键。

长度:1-256。

Resources语法

"Resources": [
  {
    "ResourceId": String,
    "ResourceType": String,
    "RegionId": String
  }
]

Resources属性

属性名称

类型

必须

允许更新

描述

约束

ResourceId

String

要清理的资源的ID。

长度:1-256。

ResourceType

String

要清理的资源类型。

更多信息,请参见支持清理的资源类型

RegionId

String

要清理的资源的地域ID。

长度:1-64。

ExcludedResources语法

"ExcludedResources": [
  {
    "ResourceId": String,
    "ResourceType": String,
    "RegionId": String
  }
]

ExcludedResources属性

属性名称

类型

必须

允许更新

描述

约束

ResourceId

String

要排除的资源ID。

长度:1-256。

ResourceType

String

要排除的资源类型。

更多信息,请参见支持清理的资源类型

RegionId

String

要排除的资源的地域ID。

长度:1-64。

返回值

Fn::GetAtt

  • ResourceDetails:待清理资源的详细信息。取值为dict的列表,dict包含以下字段:

    字段

    类型

    说明

    ResourceType

    String

    资源类型。

    RegionId

    String

    资源所在的地域ID。

    ResourceId

    String

    资源ID。

    ResourceName

    String

    资源名称。

    CleanupType

    String

    资源的清理类型。取值:

    • Normal:可以正常删除资源。

    • DeleteWithInstance:资源将连同他所属的资源一起被删除。如果他所属的资源被过滤或排除,删除可能会失败。CleanupTypeReasons提供了更多信息。

    • UnableToDelete:无法删除资源。CleanupTypeReasons提供了更多信息。

    CleanupTypeReasons

    List

    资源清理类型原因列表。

    ResourceStatus

    String

    资源状态。取值:

    • Deleting:资源正在删除中。

    • Failure:资源删除失败。

    • Success:资源删除成功。

    • Skipped:资源删除被跳过。

    • Pending:资源待删除。

    ResourceStatusReason

    String

    资源状态原因。

    Dependencies

    List

    资源的删除依赖。取值为dict的列表,dict包含以下字段:

    • ResourceType:依赖资源的资源类型。

    • RegionId:依赖资源的地域ID。

    • ResourceId:依赖资源的ID。

  • ResourcePartialDetails:简化版本ResourceDetails,只包含ResourceType、RegionId、ResourceId、ResourceName、ResourceStatus、ResourceStatusReason字段。

  • NoCleanupResourceDetails:扫描过但不进行清理的资源详情。格式与ResourceDetails相同。

  • NoCleanupResourcePartialDetails:简化版本NoCleanupResourceDetails,只包含ResourceType、RegionId、ResourceId、ResourceName、ResourceStatus、ResourceStatusReason字段。

  • ResourceSummary:要清理的资源的摘要信息。取值为dict的列表,dict包含以下字段:

    字段

    类型

    说明

    ResourceType

    String

    资源类型。

    DeletingCount

    Integer

    删除中的资源数量。

    SuccessCount

    Integer

    删除成功的资源数量。

    FailureCount

    Integer

    删除失败的资源数量。

    SkippedCount

    Integer

    跳过删除的资源数量。

    PendingCount

    Integer

    待删除的资源数量。

    OtherCount

    Integer

    其他状态的资源数量。

    TotalCount

    Integer

    资源的总数量。

  • ScanErrors:扫描错误。仅在Mode为Loose时返回。取值为dict的列表,dict包含以下字段:

    字段

    类型

    说明

    ResourceType

    String

    资源类型。

    RegionId

    String

    地域ID。

    ErrorMessage

    String

    相关地域和资源类型扫描错误信息。

  • CleanResult:清理结果。取值如下:

    • Success:所有资源清理成功。

    • ResourceFailure:部分资源清理失败。

    • Timeout:清理超时。

    • CheckFailure:清理预检查失败。

    • UnknownFailure:未知错误。

    • UserCancelled:用户取消。

    • None:未触发清理。

示例

  • YAML格式

    ROSTemplateFormatVersion: '2015-09-01'
    Parameters: {}
    Resources:
      ResourceCleaner:
        Type: ALIYUN::ROS::ResourceCleaner
        Properties:
          FailureOption: Normal
          Action: Scan
          ResourceFilters:
            - ResourceIds:
                - i-bp1h09ipy0atb4kq****
          CleanUpRetryCount: 1
          CleanUpTimeout: 3600
          ExcludedResources:
            - ResourceId: i-bp1h09ipy0atb4kq****
              ResourceType: ECS:Instance
    Outputs: {}
  • JSON格式

    {
      "ROSTemplateFormatVersion": "2015-09-01",
      "Parameters": {
      },
      "Resources": {
        "ResourceCleaner": {
          "Type": "ALIYUN::ROS::ResourceCleaner",
          "Properties": {
            "FailureOption": "Normal",
            "Action": "Scan",
            "ResourceFilters": [
              {
                "ResourceIds": [
                  "i-bp1h09ipy0atb4kq****"
                ]
              }
            ],
            "CleanUpRetryCount": 1,
            "CleanUpTimeout": 3600,
            "ExcludedResources": [
              {
                "ResourceId": "i-bp1h09ipy0atb4kq****",
                "ResourceType": "ECS:Instance"
              }
            ]
          }
        }
      },
      "Outputs": {
      }
    }