使用该动作,当设置参数时,批量选择资源将会非常方便。
用途
如果您在模板中使用了ACS::SelectTargets动作,并定义了包含"AssociationProperty": "Targets"的模板参数,当您创建执行来设置参数时,可轻易切换批量选取资源的方式。有手动选择资源、指定资源的标签、选择全部资源、CSV文件(包含资源ID)和指定配置清单条件几种方式,方便您快速完成资源的批量选择。
语法
FormatVersion: OOS-2019-06-01
Description: 'ACS::SelectTargets usage'
Parameters:
targets: # 参数名,用来选择资源范围。
Type: Json # 参数类型,固定为Json。
AssociationProperty: Targets # 参数关联的动作,对应ACS::SelectTargets时,固定为Targets 。
AssociationPropertyMetadata: # 参数要选择的资源定义。
ResourceType: ALIYUN::ECS::Instance # 要选择的资源类型。
# ALIYUN::ECS::Instance 资源为ECS实例
# ALIYUN::ECD::Desktop 资源为ECD云桌面
# ALIYUN::RDS::Instance 资源为RDS实例
# ALIYUN::Redis::Instance 资源为REDIS实例
# ALIYUN::MongoDB::Instance 资源为MongoDB实例
# ALIYUN::ECS::ManagedInstance 资源为ECS托管实例
# ALIYUN::ComputeNestSupplier::Instance 资源为ComputeNestSupplier实例
Tasks:
- Name: getInstance # 任务名称。
Action: 'ACS::SelectTargets' # 确定选择具体资源的动作。
Properties:
ResourceType: 'ALIYUN::ECS::Instance' # 要选择的资源类型。
Filters: # 要筛选的范围。
- '{{ targets }}' # 选择资源范围的参数名。
Outputs: # 任务输出。
instanceIds: # 任务输出参数名。
Type: List # 输出参数类型。
ValueSelector: 'Instances.Instance[].InstanceId' # jq Selector,其筛选的对象为该资源类型的Describe OpenAPI返回结果,比如ECS实例的筛选对象则是DescribeInstances OpenAPI的返回结果。
{
"FormatVersion": "OOS-2019-06-01",
"Description": "ACS::SelectTargets usage",
"Parameters": {
"targets": {
"Type": "Json",
"AssociationProperty": "Targets",
"AssociationPropertyMetadata": {
"ResourceType": "ALIYUN::ECS::Instance"
}
}
},
"Tasks": [
{
"Name": "getInstance",
"Action": "ACS::SelectTargets",
"Properties": {
"ResourceType": "ALIYUN::ECS::Instance",
"Filters": [
"{{ targets }}"
]
},
"Outputs": {
"instanceIds": {
"Type": "List",
"ValueSelector": "Instances.Instance[].InstanceId"
}
}
}
]
}
模板示例
批量启动ECS实例
FormatVersion: OOS-2019-06-01 Description: en: Bulky starts the ECS instances. zh-cn: 批量启动ECS实例。 name-en: ACS-ECS-BulkyStartInstances name-zh-cn: 批量启动ECS实例 categories: - instance_manage Parameters: targets: Type: Json AssociationProperty: Targets AssociationPropertyMetadata: ResourceType: 'ALIYUN::ECS::Instance' rateControl: Description: en: Concurrency ratio of task execution. zh-cn: 任务执行的并发比率。 Type: Json AssociationProperty: RateControl Default: Mode: Concurrency MaxErrors: 0 Concurrency: 10 OOSAssumeRole: Description: en: The RAM role to be assumed by OOS. zh-cn: OOS扮演的RAM角色。 Type: String Default: OOSServiceRole RamRole: '{{ OOSAssumeRole }}' Tasks: - Name: getInstance Description: en: Views the ECS instances. zh-cn: 获取ECS实例。 Action: 'ACS::SelectTargets' Properties: ResourceType: 'ALIYUN::ECS::Instance' Filters: - '{{ targets }}' Outputs: instanceIds: Type: List ValueSelector: 'Instances.Instance[].InstanceId' - Name: startInstance Action: 'ACS::ECS::StartInstance' Description: en: Starts the ECS instances. zh-cn: 启动实例。 Properties: instanceId: '{{ ACS::TaskLoopItem }}' Loop: RateControl: '{{ rateControl }}' Items: '{{ getInstance.instanceIds }}' Outputs: instanceIds: Type: List Value: '{{ getInstance.instanceIds }}'
{ "FormatVersion": "OOS-2019-06-01", "Description": { "en": "Bulky starts the ECS instances.", "zh-cn": "批量启动ECS实例。", "name-en": "ACS-ECS-BulkyStartInstances", "name-zh-cn": "批量启动ECS实例", "categories": [ "instance_manage" ] }, "Parameters": { "targets": { "Type": "Json", "AssociationProperty": "Targets", "AssociationPropertyMetadata": { "ResourceType": "ALIYUN::ECS::Instance" } }, "rateControl": { "Description": { "en": "Concurrency ratio of task execution.", "zh-cn": "任务执行的并发比率。" }, "Type": "Json", "AssociationProperty": "RateControl", "Default": { "Mode": "Concurrency", "MaxErrors": 0, "Concurrency": 10 } }, "OOSAssumeRole": { "Description": { "en": "The RAM role to be assumed by OOS.", "zh-cn": "OOS扮演的RAM角色。" }, "Type": "String", "Default": "OOSServiceRole" } }, "RamRole": "{{ OOSAssumeRole }}", "Tasks": [ { "Name": "getInstance", "Description": { "en": "Views the ECS instances.", "zh-cn": "获取ECS实例。" }, "Action": "ACS::SelectTargets", "Properties": { "ResourceType": "ALIYUN::ECS::Instance", "Filters": [ "{{ targets }}" ] }, "Outputs": { "instanceIds": { "Type": "List", "ValueSelector": "Instances.Instance[].InstanceId" } } }, { "Name": "startInstance", "Action": "ACS::ECS::StartInstance", "Description": { "en": "Starts the ECS instances.", "zh-cn": "启动实例。" }, "Properties": { "instanceId": "{{ ACS::TaskLoopItem }}" }, "Loop": { "RateControl": "{{ rateControl }}", "Items": "{{ getInstance.instanceIds }}" } } ], "Outputs": { "instanceIds": { "Type": "List", "Value": "{{ getInstance.instanceIds }}" } } }
不同ECS实例选择方式targets参数示例
根据实例ID选择
targets: Type: ResourceIds RegionId: cn-hangzhou ResourceIds: - i-******************1 - i-******************2 - i-******************3
{ "targets": { "Type": "ResourceIds", "RegionId": "cn-hangzhou", "ResourceIds": [ "i-******************1", "i-******************2", "i-******************3" ] } }
根据标签选择
targets: Type: Tags RegionId: cn-hangzhou Tags: - Key: key1 Value: value1 - Key: key2 Value: value2
{ "targets": { "Type": "Tags", "RegionId": "cn-hangzhou", "Tags": [ { "Key": "key1", "Value": "value1" }, { "Key": "key2", "Value": "value2" } ] } }
根据资源组选择
targets: Type: ResourceGroup RegionId: cn-hangzhou ResourceGroupId: rg-acf*********re3y
{ "targets": { "Type": "ResourceGroup", "RegionId": "cn-hangzhou", "ResourceGroupId": "rg-acf*********re3y" } }
选择所有实例
targets: Type: All RegionId: cn-hangzhou Parameters: RegionId: cn-hangzhou Status: Running Tags: - Key: key1 Value: value1
{ "targets": { "Type": "All", "RegionId": "cn-hangzhou", "Parameters": { "RegionId": "cn-hangzhou", "Status": "Running", "Tags": [ { "Key": "key1", "Value": "value1" } ] } } }
根据指定配置清单条件选择
targets: Type: Inventory RegionId: cn-hangzhou InventoryFilters: - Name: TypeName Operator: Equal Value: - ACS:InstanceInformation - Name: ACS:InstanceInformation.Status Value: - Running Operator: Equal
{ "targets": { "Type": "Inventory", "RegionId": "cn-hangzhou", "InventoryFilters": [ { "Name": "TypeName", "Operator": "Equal", "Value": [ "ACS:InstanceInformation" ] }, { "Name": "ACS:InstanceInformation.Status", "Value": [ "Running" ], "Operator": "Equal" } ] } }
选择计算巢服务实例Targets参数示例
获取计算巢服务实例模板示例
FormatVersion: OOS-2019-06-01 Parameters: RegionId: Type: String Label: en: RegionId zh-cn: 地域ID AssociationProperty: RegionId Default: '{{ ACS::RegionId }}' Targets: Type: Json Label: en: TargetInstance zh-cn: 目标实例 AssociationProperty: Targets AssociationPropertyMetadata: ResourceType: ALIYUN::ComputeNestSupplier::Instance RegionId: RegionId RateControl: Label: en: RateControl zh-cn: 任务执行的并发比率 Type: Json AssociationProperty: RateControl Default: Mode: Concurrency MaxErrors: 0 Concurrency: 1 OOSAssumeRole: Label: en: OOSAssumeRole zh-cn: OOS扮演的RAM角色 Type: String RamRole: '{{ OOSAssumeRole }}' Tasks: - Name: GetServiceInstance Description: en: Views the compute nest supplier instances zh-cn: 计算巢商家侧获取服务实例 Action: ACS::SelectTargets Properties: ResourceType: ALIYUN::ComputeNestSupplier::Instance RegionId: '{{ RegionId }}' Filters: - '{{ Targets }}' Outputs: InstanceIds: Type: List ValueSelector: ServiceInstances[].ServiceInstanceId Metadata: ALIYUN::OOS::Interface: ParameterGroups: - Parameters: - RegionId - Targets Label: default: zh-cn: 配置参数 en: Configure Parameters - Parameters: - RateControl - OOSAssumeRole Label: default: zh-cn: 高级选项 en: Control Options
{ "FormatVersion": "OOS-2019-06-01", "Parameters": { "RegionId": { "Type": "String", "Label": { "en": "RegionId", "zh-cn": "地域ID" }, "AssociationProperty": "RegionId", "Default": "{{ ACS::RegionId }}" }, "Targets": { "Type": "Json", "Label": { "en": "TargetInstance", "zh-cn": "目标实例" }, "AssociationProperty": "Targets", "AssociationPropertyMetadata": { "ResourceType": "ALIYUN::ComputeNestSupplier::Instance", "RegionId": "RegionId" } }, "RateControl": { "Label": { "en": "RateControl", "zh-cn": "任务执行的并发比率" }, "Type": "Json", "AssociationProperty": "RateControl", "Default": { "Mode": "Concurrency", "MaxErrors": 0, "Concurrency": 1 } }, "OOSAssumeRole": { "Label": { "en": "OOSAssumeRole", "zh-cn": "OOS扮演的RAM角色" }, "Type": "String" } }, "RamRole": "{{ OOSAssumeRole }}", "Tasks": [ { "Name": "GetServiceInstance", "Description": { "en": "Views the compute nest supplier instances", "zh-cn": "计算巢商家侧获取服务实例" }, "Action": "ACS::SelectTargets", "Properties": { "ResourceType": "ALIYUN::ComputeNestSupplier::Instance", "RegionId": "{{ RegionId }}", "Filters": [ "{{ Targets }}" ] }, "Outputs": { "InstanceIds": { "Type": "List", "ValueSelector": "ServiceInstances[].ServiceInstanceId" } } } ], "Metadata": { "ALIYUN::OOS::Interface": { "ParameterGroups": [ { "Parameters": [ "RegionId", "Targets" ], "Label": { "default": { "zh-cn": "配置参数", "en": "Configure Parameters" } } }, { "Parameters": [ "RateControl", "OOSAssumeRole" ], "Label": { "default": { "zh-cn": "高级选项", "en": "Control Options" } } } ] } } }
根据实例ID选择参数示例
targets: ResourceIds: - si-9b136xxxxxxxxxxxxxxx - si-f63edxxxxxxxxxxxxxxx RegionId: cn-hangzhou Type: ResourceIds
{ "targets": { "ResourceIds": [ "si-9b1363ae63664f19a156", "si-f63ed519cc3445eebdcd" ], "RegionId": "cn-hangzhou", "Type": "ResourceIds" } }
选择杭州地域服务Id为“"service-xxxx”版本为“4”且状态为已部署的全部服务实例
targets: Type: All RegionId: cn-hangzhou Parameters: Filter: - Name: Status Value: - Deployed - Name: 'Version ' Value: - '4' - Name: ServiceId Value: - ervice-ea89c844c3e9430a9b9c RegionId: cn-hangzhou
{ "targets": { "Type": "All", "RegionId": "cn-hangzhou", "Parameters": { "Filter": [{ "Name": "Status", "Value": [ "Deployed" ] }, { "Name": "Version ", "Value": ["4"] }, { "Name": "ServiceId", "Value": ["ervice-ea89c844c3e9430a9b9c"] } ], "RegionId": "cn-hangzhou" } } }
文档内容是否对您有帮助?