@@ -65,23 +65,27 @@ export default class Tag {
65
65
return Tags ;
66
66
}
67
67
68
- async getTagList ( offset : number = 0 , limit : number = 100 ) : Promise < TagData [ ] > {
68
+ async getTagList (
69
+ tagKeys : string [ ] = [ ] ,
70
+ offset : number = 0 ,
71
+ limit : number = 100 ,
72
+ ) : Promise < TagData [ ] > {
69
73
const { Tags, TotalCount } = await this . request ( {
70
74
Action : 'DescribeTags' ,
71
75
Limit : limit ,
72
76
Offset : offset ,
77
+ TagKeys : tagKeys ,
73
78
} ) ;
74
79
if ( TotalCount > limit ) {
75
- return Tags . concat ( await this . getTagList ( offset + limit , limit ) ) ;
80
+ return Tags . concat ( await this . getTagList ( tagKeys , offset + limit , limit ) ) ;
76
81
}
77
82
78
83
return Tags ;
79
84
}
80
85
81
- async isTagExist ( tag : TagData ) {
82
- const tagList = await this . getTagList ( ) ;
86
+ isTagExist ( tag : TagData , tagList : TagData [ ] = [ ] ) {
83
87
const [ exist ] = tagList . filter (
84
- ( item ) => item . TagKey === tag . TagKey && item . TagValue === tag . TagValue ,
88
+ ( item ) => item . TagKey === tag . TagKey && String ( item . TagValue ) === String ( tag . TagValue ) ,
85
89
) ;
86
90
return ! ! exist ;
87
91
}
@@ -104,12 +108,15 @@ export default class Tag {
104
108
ResourceRegion : this . region ,
105
109
ResourcePrefix : resourcePrefix ,
106
110
} ;
107
- // if tag not exsit, create it
111
+ if ( tags && tags . length > 0 ) {
112
+ const tagKeys = tags . map ( ( item ) => item . TagKey ) ;
113
+ const tagList = await this . getTagList ( tagKeys ) ;
108
114
109
- if ( tags ) {
110
115
for ( let i = 0 ; i < tags . length ; i ++ ) {
111
116
const currentTag = tags [ i ] ;
112
- const tagExist = await this . isTagExist ( currentTag ) ;
117
+ const tagExist = await this . isTagExist ( currentTag , tagList ) ;
118
+
119
+ // if tag not exsit, create it
113
120
if ( ! tagExist ) {
114
121
await this . createTag ( currentTag ) ;
115
122
}
@@ -232,7 +239,7 @@ export default class Tag {
232
239
const [ inputTag ] = tags . filter ( ( t ) => t . TagKey === item . TagKey ) ;
233
240
const oldTagVal = item . TagValue ;
234
241
235
- if ( inputTag . TagValue !== oldTagVal ) {
242
+ if ( String ( inputTag . TagValue ) !== String ( oldTagVal ) ) {
236
243
attachTags . push ( inputTag ) ;
237
244
} else {
238
245
leftTags . push ( item ) ;
0 commit comments