-
Notifications
You must be signed in to change notification settings - Fork 17
/
ACS::ECS::InheritDiskTagToSnapshot.yml
121 lines (121 loc) · 3.32 KB
/
ACS::ECS::InheritDiskTagToSnapshot.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
FormatVersion: OOS-2019-06-01
Description:
name-en: ACS::ECS::InheritDiskTagToSnapshot
name-zh-cn: 磁盘标签继承到快照
en: Inherit disk tags to snapshots
zh-cn: 磁盘标签继承到快照
Parameters:
regionId:
Type: String
Description:
en: The id of region
zh-cn: 地域ID
Label:
en: Region
zh-cn: 地域
Default: '{{ ACS::RegionId }}'
diskId:
Type: String
Description:
en: The id of EcsDisk
zh-cn: 磁盘 ID
Label:
en: DiskId
zh-cn: 磁盘 ID
tagKeys:
Type: List
Description:
en: The list of tag key
zh-cn: 标签Key的集合
Label:
en: TagKeys
zh-cn: 所需继承的标签键列表
isUpdate:
Type: Boolean
Label:
en: IsUpdate
zh-cn: 是否覆盖标签值
Description:
en: Whether to overwrite the tag value if the tag key is the same
zh-cn: 如果标签键相同,是否覆盖标签值
Default: false
rateControl:
Label:
en: RateControl
zh-cn: 任务执行的并发比率
Type: Json
AssociationProperty: RateControl
Default:
Mode: Concurrency
MaxErrors: 100
Concurrency: 10
Tasks:
- Name: getDiskAndTags
Action: ACS::ExecuteAPI
Description:
en: Query Disk and tags
zh-cn: 获取Disk实例ID以及标签信息
Properties:
Service: ECS
API: DescribeDisks
Parameters:
RegionId: '{{ regionId }}'
DiskIds:
- '{{diskId}}'
Outputs:
diskTags:
Type: Json
ValueSelector: .Disks.Disk[] | .Tags.Tag | map(select( .TagKey | test("^(?!acs).*"))) | map(select(.TagKey as $tagKey | {{tagKeys}} | index($tagKey) >=0))
- Name: getSnapshotIdsAndTags
Action: ACS::ExecuteAPI
Description:
en: Query snapshot and tags
zh-cn: 获取快照Id以及标签信息
Properties:
Service: ECS
API: DescribeSnapshots
Parameters:
RegionId: '{{ regionId }}'
DiskId: '{{diskId}}'
Outputs:
updateSnapshotIdsAndTags:
Type: List
ValueSelector: .Snapshots.Snapshot[] | {"SnapshotId":.SnapshotId, "Tags":.Tags.Tag}
- Name: tagResources
Action: ACS::ExecuteAPI
Description:
en: Tag snapshots of disk
zh-cn: 根据输入的条件给快照同步磁盘的标签
Properties:
Service: ECS
API: TagResources
Parameters:
RegionId: '{{ regionId }}'
ResourceIds:
Fn::Jq:
- All
- .SnapshotId
- '{{ACS::TaskLoopItem}}'
Tags:
Fn::If:
- '{{isUpdate}}'
- Fn::Jq:
- All
- '.[] |{"Key":.TagKey, "Value": .TagValue} '
- '{{getDiskAndTags.diskTags}}'
- Fn::Jq:
- All
- '.Tags as $ecsTags |{{getDiskAndTags.diskTags}} | map(select(.TagKey as $tagKey | [$ecsTags[].TagKey]|index($tagKey) <0)) |.[] |{"Key":.TagKey, "Value": .TagValue}'
- '{{ACS::TaskLoopItem}}'
ResourceType: snapshot
Outputs:
reqResult:
Type: Json
ValueSelector: .RequestId
Loop:
RateControl: '{{rateControl}}'
Items: '{{getSnapshotIdsAndTags.updateSnapshotIdsAndTags}}'
Outputs:
tagResult:
AggregateType: Fn::ListJoin
AggregateField: reqResult